From a20e9977a46c594b2d9eff81992a376f7bf0a126 Mon Sep 17 00:00:00 2001 From: Bo Lopker Date: Fri, 9 May 2025 13:17:29 -0700 Subject: [PATCH] Update readme and add more specific LSP settings --- README.md | 11 +++++++++++ crates/codebook-lsp/src/lsp.rs | 19 +++++++++++++++++-- crates/codebook/src/queries.rs | 1 - 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4f6444ad..7d691e20 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,17 @@ Codebook is the most popular spell checker for Zed! To install, go to the Extens **Note**: The version that Zed displays in the extension menus is for the [Zed Extension](https://github.com/blopker/codebook-zed), and not the LSP version (this repo). The extension will automatically update the LSP. If that updater is broken for some reason, try uninstalling the extension and reinstalling. +If quickfix code actions are not showing up for specific languages, ensure your `settings.json` file incudes the special `"..."` value in any `language_servers` values defined: + +```json +"languages": { + "Python": { + "language_servers": ["pyright", "ruff", "..."], + "format_on_save": "on" + } +}, +``` + To enable DEBUG logs, add this to your settings.json: ```json diff --git a/crates/codebook-lsp/src/lsp.rs b/crates/codebook-lsp/src/lsp.rs index a3a11c1f..779f523f 100644 --- a/crates/codebook-lsp/src/lsp.rs +++ b/crates/codebook-lsp/src/lsp.rs @@ -7,6 +7,7 @@ use codebook::parser::TextRange; use codebook::parser::WordLocation; use codebook::parser::get_word_from_string; use codebook::queries::LanguageType; + use log::LevelFilter; use log::error; use serde_json::Value; @@ -90,7 +91,21 @@ impl LanguageServer for Backend { ], work_done_progress_options: Default::default(), }), - code_action_provider: Some(CodeActionProviderCapability::Simple(true)), + code_action_provider: Some(CodeActionProviderCapability::Options( + CodeActionOptions { + code_action_kinds: Some(vec![CodeActionKind::QUICKFIX]), + resolve_provider: None, + work_done_progress_options: WorkDoneProgressOptions { + work_done_progress: None, + }, + }, + )), + diagnostic_provider: Some(DiagnosticServerCapabilities::Options( + DiagnosticOptions { + identifier: Some(SOURCE_NAME.to_string()), + ..DiagnosticOptions::default() + }, + )), ..ServerCapabilities::default() }, server_info: Some(ServerInfo { @@ -422,7 +437,7 @@ impl Backend { let lang_type = doc .language_id .as_deref() - .map(|lang| LanguageType::from_str(lang).unwrap()); + .and_then(|lang| LanguageType::from_str(lang).ok()); let cb = self.codebook.clone(); let fp = file_path.clone(); diff --git a/crates/codebook/src/queries.rs b/crates/codebook/src/queries.rs index 526f2294..d3f5f931 100644 --- a/crates/codebook/src/queries.rs +++ b/crates/codebook/src/queries.rs @@ -50,7 +50,6 @@ impl LanguageType { } } -// Use https://intmainreturn0.com/ts-visualizer/ to help with writing grammar queries // Language ids documented at https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocumentItem pub static LANGUAGE_SETTINGS: &[LanguageSetting] = &[ LanguageSetting {