Skip to content

Commit ee37588

Browse files
autozimuJunfeng Li
authored andcommitted
Skip handling events when buffer doesn't have a language server.
Close #640.
1 parent 471da1c commit ee37588

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

src/languageclient.rs

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1871,6 +1871,10 @@ impl State {
18711871
if !buftype.is_empty() || languageId.is_empty() {
18721872
return Ok(());
18731873
}
1874+
if !self.serverCommands.contains_key(&languageId) {
1875+
return Ok(());
1876+
}
1877+
18741878
let uri = filename.to_url()?;
18751879

18761880
self.notify(
@@ -2217,14 +2221,19 @@ impl State {
22172221

22182222
pub fn languageClient_handleTextChanged(&mut self, params: &Value) -> Result<()> {
22192223
info!("Begin {}", NOTIFICATION__HandleTextChanged);
2220-
let (buftype, filename): (String, String) =
2221-
self.gather_args(&[VimVar::Buftype, VimVar::Filename], params)?;
2224+
let (buftype, languageId, filename): (String, String, String) =
2225+
self.gather_args(&[VimVar::Buftype, VimVar::LanguageId, VimVar::Filename], params)?;
22222226
if !buftype.is_empty() {
22232227
info!(
22242228
"Skip handleTextChanged as buftype is non-empty: {}",
22252229
buftype
22262230
);
2231+
return Ok(());
22272232
}
2233+
if !self.serverCommands.contains_key(&languageId) {
2234+
return Ok(());
2235+
}
2236+
22282237
let skip_notification = self.get(|state| {
22292238
if let Some(metadata) = state.text_documents_metadata.get(&filename) {
22302239
if let Some(throttle) = state.change_throttle {
@@ -2254,7 +2263,11 @@ impl State {
22542263

22552264
pub fn languageClient_handleBufDelete(&mut self, params: &Value) -> Result<()> {
22562265
info!("Begin {}", NOTIFICATION__HandleBufWritePost);
2257-
let (filename,): (String,) = self.gather_args(&[VimVar::Filename], params)?;
2266+
let (languageId, filename): (String, String) = self.gather_args(&[VimVar::LanguageId, VimVar::Filename], params)?;
2267+
if !self.serverCommands.contains_key(&languageId) {
2268+
return Ok(());
2269+
}
2270+
22582271
self.update(|state| {
22592272
state.text_documents.retain(|f, _| f != &filename);
22602273
state.diagnostics.retain(|f, _| f != &filename);
@@ -2269,8 +2282,12 @@ impl State {
22692282

22702283
pub fn languageClient_handleCursorMoved(&mut self, params: &Value) -> Result<()> {
22712284
info!("Begin {}", NOTIFICATION__HandleCursorMoved);
2272-
let (buftype, filename, line): (String, String, u64) =
2273-
self.gather_args(&[VimVar::Buftype, VimVar::Filename, VimVar::Line], params)?;
2285+
let (buftype, languageId, filename, line): (String, String, String, u64) =
2286+
self.gather_args(&[VimVar::Buftype, VimVar::LanguageId, VimVar::Filename, VimVar::Line], params)?;
2287+
if !self.serverCommands.contains_key(&languageId) {
2288+
return Ok(());
2289+
}
2290+
22742291
let (visible_line_start, visible_line_end): (u64, u64) = self.gather_args(
22752292
&["LSP#visible_line_start()", "LSP#visible_line_end()"],
22762293
params,

0 commit comments

Comments
 (0)