Skip to content

Commit 7cfd530

Browse files
committed
Improve error handling and reporting.
Error in error handling should be ignored.
1 parent 89a9289 commit 7cfd530

File tree

2 files changed

+13
-18
lines changed

2 files changed

+13
-18
lines changed

src/languageclient.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1874,8 +1874,7 @@ impl State {
18741874
let ret = self.languageClient_startServer(params);
18751875
// This is triggered from autocmd, silent all errors.
18761876
if let Err(err) = ret {
1877-
warn!("Failed to start language server automatically: {}", err);
1878-
info!("{:?}", err);
1877+
warn!("Failed to start language server automatically. {}", err);
18791878
}
18801879
}
18811880
}
@@ -2314,7 +2313,7 @@ impl State {
23142313
.cloned()
23152314
.ok_or_else(|| {
23162315
format_err!(
2317-
"No language server command found for type: {}.",
2316+
"No language server command found for file type: {}.",
23182317
&languageId
23192318
)
23202319
})

src/vim.rs

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -55,28 +55,26 @@ impl State {
5555
if let Err(ref err) = result {
5656
if err.downcast_ref::<LCError>().is_none() {
5757
error!(
58-
"Error handling message: {}\n\nMessage: {:?}\n\nError: {:?}",
59-
err, method_call, err
58+
"Error handling message: {}\n\nMessage: {}\n\nError: {:?}",
59+
err,
60+
serde_json::to_string(&method_call).unwrap_or_default(),
61+
err
6062
);
6163
}
6264
}
63-
if let Err(err) = self.output(lang_id.as_deref(), method_call.id, result) {
64-
error!("Error writing output to vim: {:?}", err);
65-
}
65+
let _ = self.output(lang_id.as_deref(), method_call.id, result);
6666
}
6767
Call::Notification(lang_id, notification) => {
6868
let result = self.handle_notification(lang_id.as_deref(), &notification);
6969
if let Err(ref err) = result {
7070
if err.downcast_ref::<LCError>().is_none() {
7171
error!(
72-
"Error handling message: {}\n\nMessage: {:?}\n\nError: {:?}",
73-
err, notification, err
72+
"Error handling message: {}\n\nMessage: {}\n\nError: {:?}",
73+
err,
74+
serde_json::to_string(&notification).unwrap_or_default(),
75+
err
7476
);
7577
}
76-
77-
if let Err(err) = self.echowarn(format!("{}", err)) {
78-
error!("Error making request to vim: {:?}", err);
79-
}
8078
}
8179
}
8280
}
@@ -87,6 +85,7 @@ impl State {
8785

8886
/// Send message to RPC server.
8987
fn write(&mut self, languageId: Option<&str>, message: &str) -> Result<()> {
88+
info!("=> {:?} {}", languageId, message);
9089
if let Some(languageId) = languageId {
9190
let writer = self.writers
9291
.get_mut(languageId)
@@ -124,7 +123,6 @@ impl State {
124123
};
125124

126125
let message = serde_json::to_string(&method_call)?;
127-
info!("=> {}", message);
128126
self.write(languageId, &message)?;
129127

130128
match self.poll_output(id)? {
@@ -145,7 +143,6 @@ impl State {
145143
};
146144

147145
let message = serde_json::to_string(&notification)?;
148-
info!("=> {}", message);
149146
self.write(languageId, &message)?;
150147

151148
Ok(())
@@ -172,7 +169,6 @@ impl State {
172169
};
173170

174171
let message = serde_json::to_string(&response)?;
175-
info!("=> {}", message);
176172
self.write(languageId, &message)?;
177173
Ok(())
178174
}
@@ -347,7 +343,7 @@ pub fn loop_reader<T: BufRead>(
347343
if message.is_empty() {
348344
continue;
349345
}
350-
info!("<= {}", message);
346+
info!("<= {:?} {}", languageId, message);
351347
// let message = message.replace(r#","meta":{}"#, "");
352348
let message: RawMessage = serde_json::from_str(message)?;
353349
let message = match message {

0 commit comments

Comments
 (0)