Skip to content

Commit a20a720

Browse files
authored
Refactor config so that it logs parse errors (#1192)
1 parent cf976e7 commit a20a720

File tree

2 files changed

+28
-15
lines changed

2 files changed

+28
-15
lines changed

src/config/mod.rs

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,23 @@ use serde::Deserialize;
1515
use std::collections::HashMap;
1616
use std::{path::PathBuf, str::FromStr, time::Duration};
1717

18+
#[derive(Deserialize)]
19+
pub struct LoggerConfig {
20+
pub logging_file: Option<PathBuf>,
21+
pub logging_level: log::LevelFilter,
22+
}
23+
24+
impl LoggerConfig {
25+
pub fn parse(vim: Vim) -> Result<Self> {
26+
let req = r#"{
27+
"logging_file": get(g:, 'LanguageClient_loggingFile', v:null),
28+
"logging_level": get(g:, 'LanguageClient_loggingLevel', 'WARN'),
29+
}"#;
30+
let res: LoggerConfig = vim.eval(req.replace("\n", ""))?;
31+
Ok(res)
32+
}
33+
}
34+
1835
#[derive(Debug)]
1936
pub struct Config {
2037
pub auto_start: bool,
@@ -34,8 +51,6 @@ pub struct Config {
3451
pub hover_preview: HoverPreviewOption,
3552
pub completion_prefer_text_edit: bool,
3653
pub is_nvim: bool,
37-
pub logging_file: Option<PathBuf>,
38-
pub logging_level: log::LevelFilter,
3954
pub server_stderr: Option<String>,
4055
pub diagnostics_signs_max: Option<usize>,
4156
pub diagnostics_max_severity: DiagnosticSeverity,
@@ -88,8 +103,6 @@ impl Default for Config {
88103
preferred_markup_kind: None,
89104
enable_extensions: None,
90105
is_nvim: false,
91-
logging_file: None,
92-
logging_level: log::LevelFilter::Off,
93106
restart_on_crash: true,
94107
max_restart_retries: 5,
95108
}
@@ -98,8 +111,6 @@ impl Default for Config {
98111

99112
#[derive(Deserialize)]
100113
struct DeserializableConfig {
101-
logging_file: Option<PathBuf>,
102-
logging_level: log::LevelFilter,
103114
server_stderr: Option<String>,
104115
auto_start: u8,
105116
server_commands: HashMap<String, ServerCommand>,
@@ -170,8 +181,6 @@ impl Config {
170181
"code_lens_display": get(g:, 'LanguageClient_codeLensDisplay', v:null),
171182
"restart_on_crash": get(g:, 'LanguageClient_restartOnCrash', 1),
172183
"max_restart_retries": get(g:, 'LanguageClient_maxRestartRetries', 5),
173-
"logging_file": get(g:, 'LanguageClient_loggingFile', v:null),
174-
"logging_level": get(g:, 'LanguageClient_loggingLevel', 'WARN'),
175184
"server_stderr": get(g:, 'LanguageClient_serverStderr', v:null),
176185
}"#;
177186

@@ -221,8 +230,6 @@ impl Config {
221230
hover_preview,
222231
completion_prefer_text_edit: res.completion_prefer_text_edit == 1,
223232
is_nvim: res.is_nvim == 1,
224-
logging_file: res.logging_file,
225-
logging_level: res.logging_level,
226233
server_stderr: res.server_stderr,
227234
diagnostics_signs_max: res.diagnostics_signs_max,
228235
diagnostics_max_severity: diagnostics_severity(&res.diagnostics_max_severity)?,

src/language_server_protocol.rs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::config::{Config, ServerCommand};
1+
use crate::config::{Config, LoggerConfig, ServerCommand};
22
use crate::extensions::java;
33
use crate::language_client::LanguageClient;
44
use crate::sign::Sign;
@@ -95,13 +95,19 @@ impl LanguageClient {
9595
/////// Utils ///////
9696
#[tracing::instrument(level = "info", skip(self))]
9797
fn sync_settings(&self) -> Result<()> {
98-
let mut config = Config::parse(self.vim()?)?;
98+
let logger_config = LoggerConfig::parse(self.vim()?)?;
9999
self.update_state(|state| {
100-
state
101-
.logger
102-
.update_settings(config.logging_level, config.logging_file.clone())
100+
state.logger.update_settings(
101+
logger_config.logging_level,
102+
logger_config.logging_file.clone(),
103+
)
103104
})?;
104105

106+
let config = Config::parse(self.vim()?);
107+
if let Err(ref err) = config {
108+
log::error!("{}", err);
109+
}
110+
let mut config = config?;
105111
let semantic_highlight_language_ids: Vec<String> =
106112
config.semantic_highlight_maps.keys().cloned().collect();
107113

0 commit comments

Comments
 (0)