@@ -6,19 +6,25 @@ use lsp_types::{
6
6
FileOperationFilter , FileOperationPattern , FileOperationPatternKind ,
7
7
FileOperationRegistrationOptions , FoldingRangeProviderCapability , HoverProviderCapability ,
8
8
ImplementationProviderCapability , InlayHintOptions , InlayHintServerCapabilities , OneOf ,
9
- RenameOptions , SaveOptions , SelectionRangeProviderCapability , SemanticTokensFullOptions ,
10
- SemanticTokensLegend , SemanticTokensOptions , ServerCapabilities , SignatureHelpOptions ,
11
- TextDocumentSyncCapability , TextDocumentSyncKind , TextDocumentSyncOptions ,
12
- TypeDefinitionProviderCapability , WorkDoneProgressOptions ,
9
+ PositionEncodingKind , RenameOptions , SaveOptions , SelectionRangeProviderCapability ,
10
+ SemanticTokensFullOptions , SemanticTokensLegend , SemanticTokensOptions , ServerCapabilities ,
11
+ SignatureHelpOptions , TextDocumentSyncCapability , TextDocumentSyncKind ,
12
+ TextDocumentSyncOptions , TypeDefinitionProviderCapability , WorkDoneProgressOptions ,
13
13
WorkspaceFileOperationsServerCapabilities , WorkspaceServerCapabilities ,
14
14
} ;
15
15
use serde_json:: json;
16
16
17
17
use crate :: config:: { Config , RustfmtConfig } ;
18
+ use crate :: lsp_ext:: supports_utf8;
18
19
use crate :: semantic_tokens;
19
20
20
21
pub fn server_capabilities ( config : & Config ) -> ServerCapabilities {
21
22
ServerCapabilities {
23
+ position_encoding : if supports_utf8 ( config. caps ( ) ) {
24
+ Some ( PositionEncodingKind :: UTF8 )
25
+ } else {
26
+ None
27
+ } ,
22
28
text_document_sync : Some ( TextDocumentSyncCapability :: Options ( TextDocumentSyncOptions {
23
29
open_close : Some ( true ) ,
24
30
change : Some ( TextDocumentSyncKind :: INCREMENTAL ) ,
0 commit comments