Skip to content

Commit 9641fde

Browse files
author
Junfeng Li
committed
Making use of bufnr to fetch correct buffer text.
Close #659.
1 parent 13fc7e2 commit 9641fde

File tree

4 files changed

+15
-7
lines changed

4 files changed

+15
-7
lines changed

autoload/LSP.vim

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ function! LSP#filename() abort
22
return expand('%:p')
33
endfunction
44

5-
function! LSP#text() abort
6-
let l:lines = getline(1, '$')
5+
function! LSP#text(...) abort
6+
let l:buf = get(a:000, 0, '')
7+
8+
let l:lines = getbufline(l:buf, 1, '$')
79
if l:lines[-1] !=# '' && &fixendofline
810
let l:lines += ['']
911
endif

autoload/LanguageClient.vim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ function! LanguageClient#Call(method, params, callback, ...) abort
447447
let l:params = a:params
448448
if type(a:params) == s:TYPE.dict && !skipAddParams
449449
let l:params = extend({
450-
\ 'buftype': &buftype,
450+
\ 'bufnr': bufnr(''),
451451
\ 'languageId': &filetype,
452452
\ }, l:params)
453453
endif
@@ -468,7 +468,7 @@ function! LanguageClient#Notify(method, params) abort
468468
let l:params = a:params
469469
if type(params) == s:TYPE.dict
470470
let l:params = extend({
471-
\ 'buftype': &buftype,
471+
\ 'bufnr': bufnr(''),
472472
\ 'languageId': &filetype,
473473
\ }, l:params)
474474
endif

src/languageclient.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1722,14 +1722,17 @@ impl State {
17221722

17231723
pub fn textDocument_didChange(&mut self, params: &Value) -> Fallible<()> {
17241724
info!("Begin {}", lsp::notification::DidChangeTextDocument::METHOD);
1725-
let (languageId, filename): (String, String) =
1726-
self.gather_args(&[VimVar::LanguageId, VimVar::Filename], params)?;
1725+
let (bufnr, languageId, filename): (u64, String, String) = self.gather_args(
1726+
&[VimVar::Bufnr, VimVar::LanguageId, VimVar::Filename],
1727+
params,
1728+
)?;
17271729
if !self.get(|state| Ok(state.text_documents.contains_key(&filename)))? {
17281730
info!("Not opened yet. Switching to didOpen.");
17291731
return self.textDocument_didOpen(params);
17301732
}
17311733

1732-
let (text,): (Vec<String>,) = self.gather_args(&[VimVar::Text], params)?;
1734+
let (text,): (Vec<String>,) =
1735+
self.gather_args(&[format!("LSP#text({})", bufnr)], params)?;
17331736

17341737
let text = text.join("\n");
17351738
let text_state = self

src/types.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -835,6 +835,7 @@ impl ToUsize for u64 {
835835

836836
#[derive(Debug, PartialEq)]
837837
pub enum VimVar {
838+
Bufnr,
838839
LanguageId,
839840
Filename,
840841
Line,
@@ -855,6 +856,7 @@ pub trait VimExp {
855856
impl VimExp for VimVar {
856857
fn to_key(&self) -> String {
857858
match *self {
859+
VimVar::Bufnr => "bufnr",
858860
VimVar::LanguageId => "languageId",
859861
VimVar::Filename => "filename",
860862
VimVar::Line => "line",
@@ -870,6 +872,7 @@ impl VimExp for VimVar {
870872

871873
fn to_exp(&self) -> String {
872874
match *self {
875+
VimVar::Bufnr => "bufnr('')",
873876
VimVar::LanguageId => "&filetype",
874877
VimVar::Filename => "LSP#filename()",
875878
VimVar::Line => "LSP#line()",

0 commit comments

Comments
 (0)