Skip to content

Commit 11a18ac

Browse files
authored
Fix start_server implementation (#1124)
1 parent cfc5516 commit 11a18ac

File tree

3 files changed

+10
-5
lines changed

3 files changed

+10
-5
lines changed

autoload/LanguageClient.vim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1056,7 +1056,7 @@ function! LanguageClient#textDocument_rangeFormatting_sync(...) abort
10561056
return l:result isnot v:null
10571057
endfunction
10581058

1059-
function! LanguageClient#textDocument_didOpen() abort
1059+
function! LanguageClient#textDocument_didOpen(...) abort
10601060
return LanguageClient#Notify('textDocument/didOpen', {
10611061
\ 'filename': LSP#filename(),
10621062
\ 'text': LSP#text(),
@@ -1113,7 +1113,7 @@ function! LanguageClient#startServer(...) abort
11131113
\ 'cmdargs': [],
11141114
\ }
11151115
call extend(l:params, a:0 > 0 ? {'cmdargs': a:000} : {})
1116-
return LanguageClient#Call('languageClient/startServer', l:params, v:null)
1116+
return LanguageClient#Call('languageClient/startServer', l:params, funcref('LanguageClient#textDocument_didOpen'))
11171117
endfunction
11181118

11191119
function! LanguageClient#registerServerCommands(cmds, ...) abort

src/language_server_protocol.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2873,6 +2873,7 @@ impl LanguageClient {
28732873
if let Err(err) = ret {
28742874
warn!("Failed to start language server automatically. {}", err);
28752875
}
2876+
self.text_document_did_open(params)?;
28762877
}
28772878

28782879
Ok(())
@@ -2927,6 +2928,7 @@ impl LanguageClient {
29272928
if let Err(err) = ret {
29282929
warn!("Failed to start language server automatically. {}", err);
29292930
}
2931+
self.text_document_did_open(params)?;
29302932
}
29312933
}
29322934

@@ -3788,15 +3790,13 @@ impl LanguageClient {
37883790
.rpcclient
37893791
.notify("setbufvar", json!([filename, VIM_IS_SERVER_RUNNING, 1]))?;
37903792

3791-
self.text_document_did_open(&params)?;
3792-
self.text_document_did_change(&params)?;
3793-
37943793
self.vim()?
37953794
.rpcclient
37963795
.notify("s:ExecuteAutocmd", "LanguageClientStarted")?;
37973796
Ok(Value::Null)
37983797
}
37993798

3799+
#[tracing::instrument(level = "info", skip(self))]
38003800
fn on_server_crash(&self, language_id: &LanguageId) -> Result<()> {
38013801
if language_id.is_none() {
38023802
return Ok(());
@@ -3853,6 +3853,10 @@ impl LanguageClient {
38533853
self.vim()?.echoerr("Server crashed, restarting client")?;
38543854
std::thread::sleep(Duration::from_millis(300 * (restarts as u64).pow(2)));
38553855
self.start_server(&json!({"languageId": language_id.clone().unwrap()}))?;
3856+
self.text_document_did_open(&json!({
3857+
"languageId": language_id.clone().unwrap(),
3858+
"filename": filename,
3859+
}))?;
38563860

38573861
Ok(())
38583862
}

src/types.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ pub struct State {
135135

136136
#[serde(skip_serializing)]
137137
pub clients: HashMap<LanguageId, Arc<RpcClient>>,
138+
#[serde(skip_serializing)]
138139
pub restarts: HashMap<LanguageId, u8>,
139140

140141
#[serde(skip_serializing)]

0 commit comments

Comments
 (0)