From af63957b11b28c64e4e466995c1a607f45f0206a Mon Sep 17 00:00:00 2001 From: 0264408 Date: Fri, 26 Jun 2026 15:13:51 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20LSP=E8=A1=A5=E5=85=A8=E8=A7=A6=E5=8F=91?= =?UTF-8?q?=E5=92=8C=E8=AF=AD=E6=B3=95=E9=AB=98=E4=BA=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - completion_provider 注册 a-z A-Z _ . 为触发字符,解决 Copilot 拦截补全问题 - 语法高亮新增 try catch finally throw 关键字 Co-Authored-By: Claude --- aster-lsp/src/goto_def.rs | 10 ++-------- aster-lsp/src/server.rs | 12 +++++++++++- vscode-ext/syntaxes/aster.tmLanguage.json | 2 +- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/aster-lsp/src/goto_def.rs b/aster-lsp/src/goto_def.rs index f17a0e9..3df7c6f 100644 --- a/aster-lsp/src/goto_def.rs +++ b/aster-lsp/src/goto_def.rs @@ -41,14 +41,8 @@ pub fn handle_goto_definition( let location = Location { uri: uri.clone(), range: Range { - start: Position { - line: l, - character: c, - }, - end: Position { - line: l, - character: c + word.len() as u32, - }, + start: Position { line: l, character: c }, + end: Position { line: l, character: c + word.len() as u32 }, }, }; let response: GotoDefinitionResponse = GotoDefinitionResponse::Scalar(location); diff --git a/aster-lsp/src/server.rs b/aster-lsp/src/server.rs index b58b89a..c35fae1 100644 --- a/aster-lsp/src/server.rs +++ b/aster-lsp/src/server.rs @@ -28,7 +28,17 @@ pub fn run() { text_document_sync: Some(TextDocumentSyncCapability::Kind( TextDocumentSyncKind::FULL, )), - completion_provider: Some(lsp_types::CompletionOptions::default()), + completion_provider: Some(lsp_types::CompletionOptions { + trigger_characters: Some( + (b'a'..=b'z').chain(b'A'..=b'Z') + .map(|c| (c as char).to_string()) + .chain(std::iter::once(".".to_string())) + .chain(std::iter::once("_".to_string())) + .collect() + ), + resolve_provider: Some(false), + ..Default::default() + }), hover_provider: Some(lsp_types::HoverProviderCapability::Simple(true)), signature_help_provider: Some(lsp_types::SignatureHelpOptions::default()), definition_provider: Some(lsp_types::OneOf::Left(true)), diff --git a/vscode-ext/syntaxes/aster.tmLanguage.json b/vscode-ext/syntaxes/aster.tmLanguage.json index 9d14ea4..679ba1a 100644 --- a/vscode-ext/syntaxes/aster.tmLanguage.json +++ b/vscode-ext/syntaxes/aster.tmLanguage.json @@ -84,7 +84,7 @@ "patterns": [ { "name": "keyword.control.aster", - "match": "\\b(let|const|fn|if|else|while|for|in|break|continue|return)\\b" + "match": "\\b(let|const|fn|if|else|while|for|in|break|continue|return|try|catch|finally|throw)\\b" } ] },