Skip to content

Commit 62d867c

Browse files
committed
Add parameter to silence explainErrorAtPoint (autozimu#1143)
1 parent c6be583 commit 62d867c

File tree

3 files changed

+19
-12
lines changed

3 files changed

+19
-12
lines changed

autoload/LanguageClient.vim

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -585,9 +585,9 @@ function! s:OpenHoverPreview(bufname, lines, filetype, ...) abort
585585
endif
586586
endfunction
587587

588-
function! s:MoveIntoHoverPreview() abort
588+
function! s:MoveIntoHoverPreview(bufname) abort
589589
for bufnr in range(1, bufnr('$'))
590-
if bufname(bufnr) ==# '__LanguageClient__'
590+
if bufname(bufnr) ==# a:bufname
591591
let winnr = bufwinnr(bufnr)
592592
if winnr != -1
593593
execute winnr . 'wincmd w'
@@ -890,7 +890,7 @@ function! LanguageClient#Notify(method, params) abort
890890
endfunction
891891

892892
function! LanguageClient#textDocument_hover(...) abort
893-
if s:ShouldUseFloatWindow() && s:MoveIntoHoverPreview()
893+
if s:ShouldUseFloatWindow() && s:MoveIntoHoverPreview('__LCNHover__')
894894
return
895895
endif
896896
let l:Callback = get(a:000, 1, v:null)
@@ -1378,7 +1378,9 @@ function! LanguageClient_NCM2OnComplete(context) abort
13781378
endfunction
13791379

13801380
function! LanguageClient#explainErrorAtPoint(...) abort
1381-
if s:ShouldUseFloatWindow() && s:MoveIntoHoverPreview()
1381+
let extra = get(a:000, 0, {})
1382+
let silent_mode = get(extra, 'silent', v:false)
1383+
if s:ShouldUseFloatWindow() && !silent_mode && s:MoveIntoHoverPreview('__LCNExplainError__')
13821384
return
13831385
endif
13841386

@@ -1390,7 +1392,7 @@ function! LanguageClient#explainErrorAtPoint(...) abort
13901392
\ 'character': LSP#character(),
13911393
\ 'handle': s:IsFalse(l:Callback),
13921394
\ }
1393-
call extend(l:params, get(a:000, 0, {}))
1395+
call extend(l:params, extra)
13941396
return LanguageClient#Call('languageClient/explainErrorAtPoint', l:params, l:Callback)
13951397
endfunction
13961398

src/language_server_protocol.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1049,11 +1049,10 @@ impl LanguageClient {
10491049
Ok(())
10501050
}
10511051

1052-
fn preview<D>(&self, to_display: &D) -> Result<()>
1052+
fn preview<D>(&self, to_display: &D, bufname: &str) -> Result<()>
10531053
where
10541054
D: ToDisplay + ?Sized,
10551055
{
1056-
let bufname = "__LanguageClient__";
10571056
let filetype = &to_display.vim_filetype();
10581057
let lines = to_display.to_display();
10591058

@@ -1286,7 +1285,7 @@ impl LanguageClient {
12861285
HoverPreviewOption::Auto => hover.lines_len() > 1,
12871286
};
12881287
if use_preview {
1289-
self.preview(&hover)?
1288+
self.preview(&hover, "__LCNHover__")?
12901289
} else {
12911290
self.vim()?.echo_ellipsis(hover.to_string())?
12921291
}
@@ -3528,6 +3527,7 @@ impl LanguageClient {
35283527

35293528
#[tracing::instrument(level = "info", skip(self))]
35303529
pub fn explain_error_at_point(&self, params: &Value) -> Result<Value> {
3530+
let silent_mode: bool = try_get("silent", params)?.unwrap_or_default();
35313531
let filename = self.vim()?.get_filename(params)?;
35323532
let position = self.vim()?.get_position(params)?;
35333533
let diag = self.get(|state| {
@@ -3546,7 +3546,12 @@ impl LanguageClient {
35463546
position.character
35473547
)
35483548
})
3549-
})??;
3549+
})?;
3550+
3551+
if silent_mode && diag.is_err() {
3552+
return Ok(Value::Null);
3553+
}
3554+
let diag = diag?;
35503555

35513556
let language_id = self.vim()?.get_language_id(&filename, params)?;
35523557
let root = self.get(|state| state.roots.get(&language_id).cloned().unwrap_or_default())?;
@@ -3581,7 +3586,7 @@ impl LanguageClient {
35813586
}
35823587
}
35833588

3584-
self.preview(explanation.as_str())?;
3589+
self.preview(explanation.as_str(), "__LCNExplainError__")?;
35853590
Ok(Value::Null)
35863591
}
35873592

tests/LanguageClient_test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def assertRetry(predicate, retry_max=100):
3939

4040

4141
def getLanguageClientBuffers(nvim):
42-
return [b for b in nvim.buffers if b.name.endswith("__LanguageClient__")]
42+
return [b for b in nvim.buffers if b.name.endswith("__LCNHover__")]
4343

4444

4545
@pytest.fixture(scope="module")
@@ -324,7 +324,7 @@ def test_textDocument_hover_float_window_move_cursor_into_window(nvim):
324324

325325
# Moves cursor into floating window
326326
nvim.funcs.LanguageClient_textDocument_hover()
327-
assert nvim.current.buffer.name.endswith("__LanguageClient__")
327+
assert nvim.current.buffer.name.endswith("__LCNHover__")
328328

329329
# Close the window
330330
nvim.command('close')

0 commit comments

Comments
 (0)