Skip to content

Commit d98ca40

Browse files
author
Junfeng Li
committed
Fix deserialize CompletionResponse.
Close #287.
1 parent ed183d7 commit d98ca40

File tree

3 files changed

+13
-18
lines changed

3 files changed

+13
-18
lines changed

Cargo.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/languageclient.rs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1224,14 +1224,15 @@ impl ILanguageClient for Arc<Mutex<State>> {
12241224
"line": ctx.lnum - 1,
12251225
"character": ctx.col - 1,
12261226
}).to_params()?))?;
1227-
let result: CompletionResult = serde_json::from_value(result)?;
1227+
let result: Option<CompletionResponse> = serde_json::from_value(result)?;
1228+
let result = result.unwrap_or_else(|| CompletionResponse::Array(vec![]));
12281229
let is_incomplete = match result {
1229-
CompletionResult::Array(_) => false,
1230-
CompletionResult::Object(ref list) => list.is_incomplete,
1230+
CompletionResponse::Array(_) => false,
1231+
CompletionResponse::List(ref list) => list.is_incomplete,
12311232
};
12321233
let matches: Vec<VimCompleteItem> = match result {
1233-
CompletionResult::Array(arr) => arr,
1234-
CompletionResult::Object(list) => list.items,
1234+
CompletionResponse::Array(arr) => arr,
1235+
CompletionResponse::List(list) => list.items,
12351236
}.into_iter()
12361237
.map(|lspitem| lspitem.into())
12371238
.collect();
@@ -1247,10 +1248,11 @@ impl ILanguageClient for Arc<Mutex<State>> {
12471248
fn languageClient_omniComplete(&self, params: &Option<Params>) -> Result<Value> {
12481249
info!("Begin {}", REQUEST__OmniComplete);
12491250
let result = self.textDocument_completion(params)?;
1250-
let result: CompletionResult = serde_json::from_value(result)?;
1251+
let result: Option<CompletionResponse> = serde_json::from_value(result)?;
1252+
let result = result.unwrap_or_else(|| CompletionResponse::Array(vec![]));
12511253
let matches: Vec<VimCompleteItem> = match result {
1252-
CompletionResult::Array(arr) => arr,
1253-
CompletionResult::Object(list) => list.items,
1254+
CompletionResponse::Array(arr) => arr,
1255+
CompletionResponse::List(list) => list.items,
12541256
}.into_iter()
12551257
.map(|lspitem| lspitem.into())
12561258
.collect();

src/types.rs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -286,13 +286,6 @@ pub struct NCMContext {
286286
pub match_end: u64,
287287
}
288288

289-
#[derive(Debug, Serialize, Deserialize)]
290-
#[serde(untagged)]
291-
pub enum CompletionResult {
292-
Array(Vec<CompletionItem>),
293-
Object(CompletionList),
294-
}
295-
296289
#[derive(Debug, Serialize, Deserialize)]
297290
pub struct VimCompleteItem {
298291
pub word: String,

0 commit comments

Comments
 (0)