[[package]]
name = "lsp-server"
-version = "0.4.1"
+version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c85acaf36c53bf15da2b8b35afeea56747707261f59eb0b77229081dd72b04e"
+checksum = "69b18dfe0e4a380b872aa79d8e0ee6c3d7a9682466e84b83ad807c88b3545f79"
dependencies = [
"crossbeam-channel 0.5.0",
"log",
[[package]]
name = "lsp-types"
-version = "0.83.0"
+version = "0.83.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25e0bd4b95038f2c23bda332ba0ca684e8dda765db1f9bdb63dc4c3e01f3b456"
+checksum = "c4e79f39834b97271f9f5ecec573e42c7d9c5bdbd2620b30a851054ece6aab6d"
dependencies = [
"base64",
"bitflags",
itertools = "0.9.0"
jod-thread = "0.1.0"
log = "0.4.8"
-lsp-types = { version = "0.83.0", features = ["proposed"] }
+lsp-types = { version = "0.83.1", features = ["proposed"] }
parking_lot = "0.11.0"
pico-args = "0.3.1"
oorandom = "11.1.2"
threadpool = "1.7.1"
rayon = "1.5"
mimalloc = { version = "0.1.19", default-features = false, optional = true }
-lsp-server = "0.4.0"
+lsp-server = "0.5.0"
tracing = "0.1"
tracing-subscriber = { version = "0.2", default-features = false, features = ["env-filter", "registry"] }
tracing-tree = { version = "0.1.4" }
prepare_provider: Some(true),
work_done_progress_options: WorkDoneProgressOptions { work_done_progress: None },
})),
+ on_type_rename_provider: None,
document_link_provider: None,
color_provider: None,
execute_command_provider: None,
// FIXME: this doesn't handle UTF16 offsets correctly
let range = lsp_types::Range::new(
- lsp_types::Position::new(span.line_start as u64 - 1, span.column_start as u64 - 1),
- lsp_types::Position::new(span.line_end as u64 - 1, span.column_end as u64 - 1),
+ lsp_types::Position::new(span.line_start as u32 - 1, span.column_start as u32 - 1),
+ lsp_types::Position::new(span.line_end as u32 - 1, span.column_end as u32 - 1),
);
lsp_types::Location { uri, range }
/// client notifications.
#[derive(Debug, Clone)]
pub(crate) struct DocumentData {
- pub(crate) version: Option<i64>,
+ pub(crate) version: i32,
}
impl DocumentData {
- pub(crate) fn new(version: i64) -> Self {
- DocumentData { version: Some(version) }
+ pub(crate) fn new(version: i32) -> Self {
+ DocumentData { version }
}
}
self.vfs.read().1[&id]
}
- pub(crate) fn url_file_version(&self, url: &Url) -> Option<i64> {
+ pub(crate) fn url_file_version(&self, url: &Url) -> Option<i32> {
let path = from_proto::vfs_path(&url).ok()?;
- self.mem_docs.get(&path)?.version
+ Some(self.mem_docs.get(&path)?.version)
}
pub(crate) fn anchored_path(&self, file_id: FileId, path: &str) -> Url {
#[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SnippetTextDocumentEdit {
- pub text_document: lsp_types::VersionedTextDocumentIdentifier,
+ pub text_document: lsp_types::OptionalVersionedTextDocumentIdentifier,
pub edits: Vec<SnippetTextEdit>,
}
}
let percentage = fraction.map(|f| {
assert!(0.0 <= f && f <= 1.0);
- f * 100.0
+ (f * 100.0) as u32
});
let token = lsp_types::ProgressToken::String(format!("rustAnalyzer/{}", title));
let work_done_progress = match state {
// The VFS will normalize the end of lines to `\n`.
enum IndexValid {
All,
- UpToLineExclusive(u64),
+ UpToLineExclusive(u32),
}
impl IndexValid {
- fn covers(&self, line: u64) -> bool {
+ fn covers(&self, line: u32) -> bool {
match *self {
IndexValid::UpToLineExclusive(to) => to > line,
_ => true,
let url = file_id_to_url(&self.vfs.read().0, file_id);
let diagnostics = self.diagnostics.diagnostics_for(file_id).cloned().collect();
let version = from_proto::vfs_path(&url)
- .map(|path| self.mem_docs.get(&path)?.version)
+ .map(|path| self.mem_docs.get(&path).map(|it| it.version))
.unwrap_or_default();
self.send_notification::<lsp_types::notification::PublishDiagnostics>(
let mut version = None;
if let Ok(path) = from_proto::vfs_path(¶ms.text_document.uri) {
match this.mem_docs.remove(&path) {
- Some(doc) => version = doc.version,
+ Some(doc) => version = Some(doc.version),
None => log::error!("orphan DidCloseTextDocument: {}", path),
}
pub(crate) fn position(line_index: &LineIndex, offset: TextSize) -> lsp_types::Position {
let line_col = line_index.line_col(offset);
- let line = u64::from(line_col.line);
- let character = u64::from(line_col.col_utf16);
- lsp_types::Position::new(line, character)
+ lsp_types::Position::new(line_col.line, line_col.col_utf16)
}
pub(crate) fn range(line_index: &LineIndex, range: TextRange) -> lsp_types::Range {
label.push_str(", ");
}
first = false;
- let start = label.len() as u64;
+ let start = label.len() as u32;
label.push_str(param);
- let end = label.len() as u64;
+ let end = label.len() as u32;
params.push(lsp_types::ParameterInformation {
label: lsp_types::ParameterLabel::LabelOffsets([start, end]),
documentation: None,
})
};
- let active_parameter = call_info.active_parameter.map(|it| it as i64);
+ let active_parameter = call_info.active_parameter.map(|it| it as u32);
let signature = lsp_types::SignatureInformation {
label,
lsp_types::Url::parse(&url).unwrap()
}
-pub(crate) fn versioned_text_document_identifier(
+pub(crate) fn optional_versioned_text_document_identifier(
snap: &GlobalStateSnapshot,
file_id: FileId,
-) -> lsp_types::VersionedTextDocumentIdentifier {
+) -> lsp_types::OptionalVersionedTextDocumentIdentifier {
let url = url(snap, file_id);
let version = snap.url_file_version(&url);
- lsp_types::VersionedTextDocumentIdentifier { uri: url, version }
+ lsp_types::OptionalVersionedTextDocumentIdentifier { uri: url, version }
}
pub(crate) fn location(
is_snippet: bool,
source_file_edit: SourceFileEdit,
) -> Result<lsp_ext::SnippetTextDocumentEdit> {
- let text_document = versioned_text_document_identifier(snap, source_file_edit.file_id);
+ let text_document = optional_versioned_text_document_identifier(snap, source_file_edit.file_id);
let line_index = snap.analysis.file_line_index(source_file_edit.file_id)?;
let line_endings = snap.file_line_endings(source_file_edit.file_id);
let edits = source_file_edit
}
pub(crate) struct Server {
- req_id: Cell<u64>,
+ req_id: Cell<i32>,
messages: RefCell<Vec<Message>>,
_thread: jod_thread::JoinHandle<()>,
client: Connection,
R::Params: Serialize,
{
let id = self.req_id.get();
- self.req_id.set(id + 1);
+ self.req_id.set(id.wrapping_add(1));
let r = Request::new(id.into(), R::METHOD.to_string(), params);
self.send_request_(r)
<!---
-lsp_ext.rs hash: 9d5daed5b25dc4f6
+lsp_ext.rs hash: 203fdf79b21b5987
If you need to change the above hash to make the test pass, please check if you
need to adjust this doc as well and ping this issue:
```typescript
export interface TextDocumentEdit {
- textDocument: VersionedTextDocumentIdentifier;
+ textDocument: OptionalVersionedTextDocumentIdentifier;
edits: (TextEdit | SnippetTextEdit)[];
}
```