on master help sign in
Alert if LSP is inactive when command is invoked (#1703)
commit8e07e1b8987e78535fb195560a4f12ca3d2be254 authorGokul Soumya <gokulps15@gmail.com> dateFri 25 Feb 2022, 14:23 (5 years ago) parent951fd1c
1 file changed+16−13
helix-term/src/commands/lsp.rs+16−13
helix-term/src/commands/lsp.rs+16−13
@@ -18,10 +18,13 @@ use std::borrow::Cow;
1818
1919#[macro_export]
2020macro_rules! language_server {
21− ($doc:expr) => {
21+ ($editor:expr, $doc:expr) => {
2222 match $doc.language_server() {
2323 Some(language_server) => language_server,
24− None => return,
24+ None => {
25+ $editor.set_status("Language server not active for current buffer");
26+ return;
27+ }
2528 }
2629 };
2730}
@@ -127,7 +130,7 @@ pub fn symbol_picker(cx: &mut Context) {
127130 }
128131 let doc = doc!(cx.editor);
129132
130− let language_server = language_server!(doc);
133+ let language_server = language_server!(cx.editor, doc);
131134 let current_url = doc.url();
132135 let offset_encoding = language_server.offset_encoding();
133136
@@ -163,7 +166,7 @@ pub fn symbol_picker(cx: &mut Context) {
163166pub fn workspace_symbol_picker(cx: &mut Context) {
164167 let doc = doc!(cx.editor);
165168 let current_url = doc.url();
166− let language_server = language_server!(doc);
169+ let language_server = language_server!(cx.editor, doc);
167170 let offset_encoding = language_server.offset_encoding();
168171 let future = language_server.workspace_symbols("".to_string());
169172
@@ -192,7 +195,7 @@ impl ui::menu::Item for lsp::CodeActionOrCommand {
192195pub fn code_action(cx: &mut Context) {
193196 let (view, doc) = current!(cx.editor);
194197
195− let language_server = language_server!(doc);
198+ let language_server = language_server!(cx.editor, doc);
196199
197200 let range = range_to_lsp_range(
198201 doc.text(),
@@ -257,7 +260,7 @@ pub fn code_action(cx: &mut Context) {
257260}
258261pub fn execute_lsp_command(editor: &mut Editor, cmd: lsp::Command) {
259262 let doc = doc!(editor);
260− let language_server = language_server!(doc);
263+ let language_server = language_server!(editor, doc);
261264
262265 // the command is executed on the server and communicated back
263266 // to the client asynchronously using workspace edits
@@ -492,7 +495,7 @@ fn to_locations(definitions: Option<lsp::GotoDefinitionResponse>) -> Vec<lsp::Lo
492495
493496pub fn goto_definition(cx: &mut Context) {
494497 let (view, doc) = current!(cx.editor);
495− let language_server = language_server!(doc);
498+ let language_server = language_server!(cx.editor, doc);
496499 let offset_encoding = language_server.offset_encoding();
497500
498501 let pos = doc.position(view.id, offset_encoding);
@@ -510,7 +513,7 @@ pub fn goto_definition(cx: &mut Context) {
510513
511514pub fn goto_type_definition(cx: &mut Context) {
512515 let (view, doc) = current!(cx.editor);
513− let language_server = language_server!(doc);
516+ let language_server = language_server!(cx.editor, doc);
514517 let offset_encoding = language_server.offset_encoding();
515518
516519 let pos = doc.position(view.id, offset_encoding);
@@ -528,7 +531,7 @@ pub fn goto_type_definition(cx: &mut Context) {
528531
529532pub fn goto_implementation(cx: &mut Context) {
530533 let (view, doc) = current!(cx.editor);
531− let language_server = language_server!(doc);
534+ let language_server = language_server!(cx.editor, doc);
532535 let offset_encoding = language_server.offset_encoding();
533536
534537 let pos = doc.position(view.id, offset_encoding);
@@ -546,7 +549,7 @@ pub fn goto_implementation(cx: &mut Context) {
546549
547550pub fn goto_reference(cx: &mut Context) {
548551 let (view, doc) = current!(cx.editor);
549− let language_server = language_server!(doc);
552+ let language_server = language_server!(cx.editor, doc);
550553 let offset_encoding = language_server.offset_encoding();
551554
552555 let pos = doc.position(view.id, offset_encoding);
@@ -564,7 +567,7 @@ pub fn goto_reference(cx: &mut Context) {
564567
565568pub fn signature_help(cx: &mut Context) {
566569 let (view, doc) = current!(cx.editor);
567− let language_server = language_server!(doc);
570+ let language_server = language_server!(cx.editor, doc);
568571 let offset_encoding = language_server.offset_encoding();
569572
570573 let pos = doc.position(view.id, offset_encoding);
@@ -592,7 +595,7 @@ pub fn signature_help(cx: &mut Context) {
592595}
593596pub fn hover(cx: &mut Context) {
594597 let (view, doc) = current!(cx.editor);
595− let language_server = language_server!(doc);
598+ let language_server = language_server!(cx.editor, doc);
596599 let offset_encoding = language_server.offset_encoding();
597600
598601 // TODO: factor out a doc.position_identifier() that returns lsp::TextDocumentPositionIdentifier
@@ -650,7 +653,7 @@ pub fn rename_symbol(cx: &mut Context) {
650653 }
651654
652655 let (view, doc) = current!(cx.editor);
653− let language_server = language_server!(doc);
656+ let language_server = language_server!(cx.editor, doc);
654657 let offset_encoding = language_server.offset_encoding();
655658
656659 let pos = doc.position(view.id, offset_encoding);