Skip to content

Commit fc9289e

Browse files
roxmaautozimu
authored andcommitted
make sure ncm2#complete is called
force is_incomplete=2 when there's something wrong, to invalidate ncm2's cache this commit fix part of ncm2/ncm2#58
1 parent d47f11e commit fc9289e

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

src/languageclient.rs

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2432,23 +2432,32 @@ impl State {
24322432
let line = ctx.lnum - 1;
24332433
let character = ctx.ccol - 1;
24342434

2435-
let result = self.textDocument_completion(
2436-
&json!({
2435+
let mut result: Result<Value> = Ok(Value::Null);
2436+
let completion = self.textDocument_completion(&json!({
24372437
"buftype": "",
24382438
"languageId": ctx.filetype,
24392439
"filename": filename,
24402440
"line": line,
24412441
"character": character,
2442-
"handle": false,
2443-
}).to_params()?,
2444-
)?;
2445-
let result: Option<CompletionResponse> = serde_json::from_value(result)?;
2446-
let result = result.unwrap_or_else(|| CompletionResponse::Array(vec![]));
2447-
let is_incomplete = match result {
2442+
"handle": false}).to_params()?)
2443+
.unwrap_or_else(|err| {
2444+
result = Err(err);
2445+
Value::Null
2446+
});
2447+
let completion: CompletionResponse = serde_json::from_value(completion)
2448+
.unwrap_or_else(|err| {
2449+
if result.is_ok() {
2450+
result = Err(err.into());
2451+
}
2452+
CompletionResponse::List(CompletionList {
2453+
is_incomplete: true,
2454+
items: vec![]})
2455+
});
2456+
let is_incomplete = match completion {
24482457
CompletionResponse::Array(_) => false,
24492458
CompletionResponse::List(ref list) => list.is_incomplete,
24502459
};
2451-
let matches: Result<Vec<VimCompleteItem>> = match result {
2460+
let matches: Result<Vec<VimCompleteItem>> = match completion {
24522461
CompletionResponse::Array(arr) => arr,
24532462
CompletionResponse::List(list) => list.items,
24542463
}.iter()
@@ -2461,7 +2470,7 @@ impl State {
24612470
json!([orig_ctx, ctx.startccol, matches, is_incomplete]),
24622471
)?;
24632472
info!("End {}", REQUEST__NCM2OnComplete);
2464-
Ok(Value::Null)
2473+
result
24652474
}
24662475

24672476
pub fn languageClient_explainErrorAtPoint(&mut self, params: &Option<Params>) -> Result<Value> {

0 commit comments

Comments
 (0)