@@ -11,22 +11,21 @@ use tokio::sync::{Mutex, OnceCell, RwLock, SetError};
1111use tower_lsp:: {
1212 jsonrpc:: { Error , ErrorCode , Result } ,
1313 lsp_types:: {
14- CodeAction , CodeActionKind , CodeActionOptions , CodeActionOrCommand , CodeActionParams ,
15- CodeActionProviderCapability , CodeActionResponse , ConfigurationItem , Diagnostic ,
16- DidChangeConfigurationParams , DidChangeTextDocumentParams , DidChangeWatchedFilesParams ,
17- DidCloseTextDocumentParams , DidOpenTextDocumentParams , DidSaveTextDocumentParams ,
18- InitializeParams , InitializeResult , InitializedParams , NumberOrString , OneOf , Position ,
19- Range , ServerCapabilities , ServerInfo , TextDocumentSyncCapability , TextDocumentSyncKind ,
20- TextEdit , Url , WorkDoneProgressOptions , WorkspaceEdit , WorkspaceFoldersServerCapabilities ,
21- WorkspaceServerCapabilities ,
14+ CodeAction , CodeActionKind , CodeActionOrCommand , CodeActionParams , CodeActionResponse ,
15+ ConfigurationItem , Diagnostic , DidChangeConfigurationParams , DidChangeTextDocumentParams ,
16+ DidChangeWatchedFilesParams , DidCloseTextDocumentParams , DidOpenTextDocumentParams ,
17+ DidSaveTextDocumentParams , InitializeParams , InitializeResult , InitializedParams ,
18+ NumberOrString , Position , Range , ServerInfo , TextEdit , Url , WorkspaceEdit ,
2219 } ,
2320 Client , LanguageServer , LspService , Server ,
2421} ;
2522
2623use oxc_linter:: { FixKind , LinterBuilder , Oxlintrc } ;
2724
25+ use crate :: capabilities:: { Capabilities , CODE_ACTION_KIND_SOURCE_FIX_ALL_OXC } ;
2826use crate :: linter:: { DiagnosticReport , ServerLinter } ;
2927
28+ mod capabilities;
3029mod linter;
3130
3231type FxDashMap < K , V > = DashMap < K , V , FxBuildHasher > ;
@@ -88,9 +87,6 @@ enum SyntheticRunLevel {
8887 OnType ,
8988}
9089
91- const CODE_ACTION_KIND_SOURCE_FIX_ALL_OXC : CodeActionKind =
92- CodeActionKind :: new ( "source.fixAll.oxc" ) ;
93-
9490#[ tower_lsp:: async_trait]
9591impl LanguageServer for Backend {
9692 async fn initialize ( & self , params : InitializeParams ) -> Result < InitializeResult > {
@@ -106,45 +102,12 @@ impl LanguageServer for Backend {
106102 * self . options . lock ( ) . await = value;
107103 }
108104
109- // check if the client support some code action literal support
110- let code_action_provider = if params. capabilities . text_document . is_some_and ( |capability| {
111- capability. code_action . is_some_and ( |code_action| {
112- code_action. code_action_literal_support . is_some_and ( |literal_support| {
113- !literal_support. code_action_kind . value_set . is_empty ( )
114- } )
115- } )
116- } ) {
117- Some ( CodeActionProviderCapability :: Options ( CodeActionOptions {
118- code_action_kinds : Some ( vec ! [
119- CodeActionKind :: QUICKFIX ,
120- CODE_ACTION_KIND_SOURCE_FIX_ALL_OXC ,
121- ] ) ,
122- work_done_progress_options : WorkDoneProgressOptions { work_done_progress : None } ,
123- resolve_provider : None ,
124- } ) )
125- } else {
126- None
127- } ;
128-
129105 let oxlintrc = self . init_linter_config ( ) . await ;
130106 self . init_ignore_glob ( oxlintrc) . await ;
131107 Ok ( InitializeResult {
132108 server_info : Some ( ServerInfo { name : "oxc" . into ( ) , version : None } ) ,
133109 offset_encoding : None ,
134- capabilities : ServerCapabilities {
135- text_document_sync : Some ( TextDocumentSyncCapability :: Kind (
136- TextDocumentSyncKind :: FULL ,
137- ) ) ,
138- workspace : Some ( WorkspaceServerCapabilities {
139- workspace_folders : Some ( WorkspaceFoldersServerCapabilities {
140- supported : Some ( true ) ,
141- change_notifications : Some ( OneOf :: Left ( true ) ) ,
142- } ) ,
143- file_operations : None ,
144- } ) ,
145- code_action_provider,
146- ..ServerCapabilities :: default ( )
147- } ,
110+ capabilities : Capabilities :: from ( params. capabilities ) . into ( ) ,
148111 } )
149112 }
150113
0 commit comments