4306: Make incremental sync opt-out and fix line index rebuild r=matklad a=lnicola 4308: Update server binary paths in docs r=matklad a=Coder-256 Fixed incorrect macOS path and converted to a list. Also, should the Windows path include `matklad.rust-analyzer`? (I can't check) Co-authored-by: Laurențiu Nicola <lnicola@dend.ro> Co-authored-by: Jacob Greenfield <jacob@jacobgreenfield.me>
This commit is contained in:
commit
d1c1c01309
@ -17,10 +17,10 @@ pub fn server_capabilities() -> ServerCapabilities {
|
|||||||
ServerCapabilities {
|
ServerCapabilities {
|
||||||
text_document_sync: Some(TextDocumentSyncCapability::Options(TextDocumentSyncOptions {
|
text_document_sync: Some(TextDocumentSyncCapability::Options(TextDocumentSyncOptions {
|
||||||
open_close: Some(true),
|
open_close: Some(true),
|
||||||
change: Some(if env::var("RA_PROFILE").is_ok() {
|
change: Some(if env::var("RA_NO_INCREMENTAL_SYNC").is_ok() {
|
||||||
TextDocumentSyncKind::Incremental
|
|
||||||
} else {
|
|
||||||
TextDocumentSyncKind::Full
|
TextDocumentSyncKind::Full
|
||||||
|
} else {
|
||||||
|
TextDocumentSyncKind::Incremental
|
||||||
}),
|
}),
|
||||||
will_save: None,
|
will_save: None,
|
||||||
will_save_wait_until: None,
|
will_save_wait_until: None,
|
||||||
|
@ -676,13 +676,13 @@ fn apply_document_changes(
|
|||||||
// remember the last valid line in the index and only rebuild it if needed.
|
// remember the last valid line in the index and only rebuild it if needed.
|
||||||
enum IndexValid {
|
enum IndexValid {
|
||||||
All,
|
All,
|
||||||
UpToLine(u64),
|
UpToLineExclusive(u64),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl IndexValid {
|
impl IndexValid {
|
||||||
fn covers(&self, line: u64) -> bool {
|
fn covers(&self, line: u64) -> bool {
|
||||||
match *self {
|
match *self {
|
||||||
IndexValid::UpToLine(to) => to >= line,
|
IndexValid::UpToLineExclusive(to) => to > line,
|
||||||
_ => true,
|
_ => true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -692,10 +692,10 @@ fn covers(&self, line: u64) -> bool {
|
|||||||
for change in content_changes {
|
for change in content_changes {
|
||||||
match change.range {
|
match change.range {
|
||||||
Some(range) => {
|
Some(range) => {
|
||||||
if !index_valid.covers(range.start.line) {
|
if !index_valid.covers(range.end.line) {
|
||||||
line_index = Cow::Owned(LineIndex::new(&old_text));
|
line_index = Cow::Owned(LineIndex::new(&old_text));
|
||||||
}
|
}
|
||||||
index_valid = IndexValid::UpToLine(range.start.line);
|
index_valid = IndexValid::UpToLineExclusive(range.start.line);
|
||||||
let range = range.conv_with(&line_index);
|
let range = range.conv_with(&line_index);
|
||||||
let mut text = old_text.to_owned();
|
let mut text = old_text.to_owned();
|
||||||
match std::panic::catch_unwind(move || {
|
match std::panic::catch_unwind(move || {
|
||||||
@ -713,7 +713,7 @@ fn covers(&self, line: u64) -> bool {
|
|||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
*old_text = change.text;
|
*old_text = change.text;
|
||||||
index_valid = IndexValid::UpToLine(0);
|
index_valid = IndexValid::UpToLineExclusive(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,11 @@ To disable this notification put the following to `settings.json`
|
|||||||
----
|
----
|
||||||
====
|
====
|
||||||
|
|
||||||
The server binary is stored in `~/.config/Code/User/globalStorage/matklad.rust-analyzer` (Linux) or in `~/.Library/Application Support/Code/User/globalStorage/matklad.rust-analyzer` (macOS) or in `%APPDATA%\Code\User\globalStorage` (Windows).
|
The server binary is stored in:
|
||||||
|
|
||||||
|
* Linux: `~/.config/Code/User/globalStorage/matklad.rust-analyzer`
|
||||||
|
* macOS: `~/Library/Application Support/Code/User/globalStorage/matklad.rust-analyzer`
|
||||||
|
* Windows: `%APPDATA%\Code\User\globalStorage`
|
||||||
|
|
||||||
Note that we only support the latest version of VS Code.
|
Note that we only support the latest version of VS Code.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user