Skip to content

Commit 0340b51

Browse files
committed
Auto merge of #13484 - lnicola:position-encoding, r=lnicola
Switch to upstream `positionEncoding` Closes #13481 This drops support for the custom extension, but that's probably fine. Draft because it's not tested yet.
2 parents feefbe7 + e93a2bf commit 0340b51

File tree

16 files changed

+56
-51
lines changed

16 files changed

+56
-51
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/rust-analyzer/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ crossbeam-channel = "0.5.5"
2323
dissimilar = "1.0.4"
2424
itertools = "0.10.5"
2525
scip = "0.1.1"
26-
lsp-types = { version = "0.93.1", features = ["proposed"] }
26+
lsp-types = { version = "=0.93.2", features = ["proposed"] }
2727
parking_lot = "0.12.1"
2828
xflags = "0.3.0"
2929
oorandom = "11.1.3"

crates/rust-analyzer/src/bin/main.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use std::{env, fs, path::Path, process};
1111

1212
use lsp_server::Connection;
1313
use project_model::ProjectManifest;
14-
use rust_analyzer::{cli::flags, config::Config, from_json, lsp_ext::supports_utf8, Result};
14+
use rust_analyzer::{cli::flags, config::Config, from_json, Result};
1515
use vfs::AbsPathBuf;
1616

1717
#[cfg(all(feature = "mimalloc"))]
@@ -191,11 +191,7 @@ fn run_server() -> Result<()> {
191191
name: String::from("rust-analyzer"),
192192
version: Some(rust_analyzer::version().to_string()),
193193
}),
194-
offset_encoding: if supports_utf8(config.caps()) {
195-
Some("utf-8".to_string())
196-
} else {
197-
None
198-
},
194+
offset_encoding: None,
199195
};
200196

201197
let initialize_result = serde_json::to_value(initialize_result).unwrap();

crates/rust-analyzer/src/caps.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,25 @@ use lsp_types::{
66
FileOperationFilter, FileOperationPattern, FileOperationPatternKind,
77
FileOperationRegistrationOptions, FoldingRangeProviderCapability, HoverProviderCapability,
88
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,
1313
WorkspaceFileOperationsServerCapabilities, WorkspaceServerCapabilities,
1414
};
1515
use serde_json::json;
1616

1717
use crate::config::{Config, RustfmtConfig};
18+
use crate::lsp_ext::supports_utf8;
1819
use crate::semantic_tokens;
1920

2021
pub fn server_capabilities(config: &Config) -> ServerCapabilities {
2122
ServerCapabilities {
23+
position_encoding: if supports_utf8(config.caps()) {
24+
Some(PositionEncodingKind::UTF8)
25+
} else {
26+
None
27+
},
2228
text_document_sync: Some(TextDocumentSyncCapability::Options(TextDocumentSyncOptions {
2329
open_close: Some(true),
2430
change: Some(TextDocumentSyncKind::INCREMENTAL),

crates/rust-analyzer/src/cli/lsif.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ use crate::cli::{
2020
load_cargo::{load_workspace, LoadCargoConfig},
2121
Result,
2222
};
23-
use crate::line_index::{LineEndings, LineIndex, OffsetEncoding};
23+
use crate::line_index::{LineEndings, LineIndex, PositionEncoding};
2424
use crate::to_proto;
2525
use crate::version::version;
2626

@@ -126,7 +126,7 @@ impl LsifManager<'_> {
126126
let line_index = self.db.line_index(file_id);
127127
let line_index = LineIndex {
128128
index: line_index,
129-
encoding: OffsetEncoding::Utf16,
129+
encoding: PositionEncoding::Utf16,
130130
endings: LineEndings::Unix,
131131
};
132132
let range_id = self.add_vertex(lsif::Vertex::Range {
@@ -248,7 +248,7 @@ impl LsifManager<'_> {
248248
let line_index = self.db.line_index(file_id);
249249
let line_index = LineIndex {
250250
index: line_index,
251-
encoding: OffsetEncoding::Utf16,
251+
encoding: PositionEncoding::Utf16,
252252
endings: LineEndings::Unix,
253253
};
254254
let result = folds

crates/rust-analyzer/src/cli/scip.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use std::{
55
time::Instant,
66
};
77

8-
use crate::line_index::{LineEndings, LineIndex, OffsetEncoding};
8+
use crate::line_index::{LineEndings, LineIndex, PositionEncoding};
99
use hir::Name;
1010
use ide::{
1111
LineCol, MonikerDescriptorKind, StaticIndex, StaticIndexedFile, TextRange, TokenId,
@@ -91,7 +91,7 @@ impl flags::Scip {
9191

9292
let line_index = LineIndex {
9393
index: db.line_index(file_id),
94-
encoding: OffsetEncoding::Utf8,
94+
encoding: PositionEncoding::Utf8,
9595
endings: LineEndings::Unix,
9696
};
9797

crates/rust-analyzer/src/config.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ use vfs::AbsPathBuf;
3232
use crate::{
3333
caps::completion_item_edit_resolve,
3434
diagnostics::DiagnosticsMapConfig,
35-
line_index::OffsetEncoding,
35+
line_index::PositionEncoding,
3636
lsp_ext::{self, supports_utf8, WorkspaceSymbolSearchKind, WorkspaceSymbolSearchScope},
3737
};
3838

@@ -948,11 +948,11 @@ impl Config {
948948
.is_some()
949949
}
950950

951-
pub fn offset_encoding(&self) -> OffsetEncoding {
951+
pub fn position_encoding(&self) -> PositionEncoding {
952952
if supports_utf8(&self.caps) {
953-
OffsetEncoding::Utf8
953+
PositionEncoding::Utf8
954954
} else {
955-
OffsetEncoding::Utf16
955+
PositionEncoding::Utf16
956956
}
957957
}
958958

crates/rust-analyzer/src/diagnostics/to_proto.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use stdx::format_to;
88
use vfs::{AbsPath, AbsPathBuf};
99

1010
use crate::{
11-
global_state::GlobalStateSnapshot, line_index::OffsetEncoding, lsp_ext,
11+
global_state::GlobalStateSnapshot, line_index::PositionEncoding, lsp_ext,
1212
to_proto::url_from_abs_path,
1313
};
1414

@@ -66,17 +66,17 @@ fn location(
6666
let uri = url_from_abs_path(&file_name);
6767

6868
let range = {
69-
let offset_encoding = snap.config.offset_encoding();
69+
let position_encoding = snap.config.position_encoding();
7070
lsp_types::Range::new(
71-
position(&offset_encoding, span, span.line_start, span.column_start),
72-
position(&offset_encoding, span, span.line_end, span.column_end),
71+
position(&position_encoding, span, span.line_start, span.column_start),
72+
position(&position_encoding, span, span.line_end, span.column_end),
7373
)
7474
};
7575
lsp_types::Location::new(uri, range)
7676
}
7777

7878
fn position(
79-
offset_encoding: &OffsetEncoding,
79+
position_encoding: &PositionEncoding,
8080
span: &DiagnosticSpan,
8181
line_offset: usize,
8282
column_offset: usize,
@@ -93,9 +93,9 @@ fn position(
9393
};
9494
}
9595
let mut char_offset = 0;
96-
let len_func = match offset_encoding {
97-
OffsetEncoding::Utf8 => char::len_utf8,
98-
OffsetEncoding::Utf16 => char::len_utf16,
96+
let len_func = match position_encoding {
97+
PositionEncoding::Utf8 => char::len_utf8,
98+
PositionEncoding::Utf16 => char::len_utf16,
9999
};
100100
for c in line.text.chars() {
101101
char_offset += 1;

crates/rust-analyzer/src/from_proto.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use vfs::AbsPathBuf;
88
use crate::{
99
from_json,
1010
global_state::GlobalStateSnapshot,
11-
line_index::{LineIndex, OffsetEncoding},
11+
line_index::{LineIndex, PositionEncoding},
1212
lsp_ext,
1313
lsp_utils::invalid_params_error,
1414
Result,
@@ -25,10 +25,10 @@ pub(crate) fn vfs_path(url: &lsp_types::Url) -> Result<vfs::VfsPath> {
2525

2626
pub(crate) fn offset(line_index: &LineIndex, position: lsp_types::Position) -> Result<TextSize> {
2727
let line_col = match line_index.encoding {
28-
OffsetEncoding::Utf8 => {
28+
PositionEncoding::Utf8 => {
2929
LineCol { line: position.line as u32, col: position.character as u32 }
3030
}
31-
OffsetEncoding::Utf16 => {
31+
PositionEncoding::Utf16 => {
3232
let line_col =
3333
LineColUtf16 { line: position.line as u32, col: position.character as u32 };
3434
line_index.index.to_utf8(line_col)

crates/rust-analyzer/src/global_state.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ impl GlobalStateSnapshot {
383383
pub(crate) fn file_line_index(&self, file_id: FileId) -> Cancellable<LineIndex> {
384384
let endings = self.vfs.read().1[&file_id];
385385
let index = self.analysis.file_line_index(file_id)?;
386-
let res = LineIndex { index, endings, encoding: self.config.offset_encoding() };
386+
let res = LineIndex { index, endings, encoding: self.config.position_encoding() };
387387
Ok(res)
388388
}
389389

0 commit comments

Comments
 (0)