@@ -24,12 +24,14 @@ pub struct Client {
2424 request_counter: AtomicU64,
2525 capabilities: Option<lsp::ServerCapabilities>,
2626 offset_encoding: OffsetEncoding,
27+ config: Option<Value>,
2728}
2829
2930impl Client {
3031 pub fn start(
3132 cmd: &str,
3233 args: &[String],
34+ config: Option<Value>,
3335 id: usize,
3436 ) -> Result<(Self, UnboundedReceiver<(usize, Call)>)> {
3537 let process = Command::new(cmd)
@@ -57,6 +59,7 @@ impl Client {
5759 request_counter: AtomicU64::new(0),
5860 capabilities: None,
5961 offset_encoding: OffsetEncoding::Utf8,
62+ config,
6063 };
6164
6265 // TODO: async client.initialize()
@@ -214,13 +217,17 @@ impl Client {
214217 // TODO: delay any requests that are triggered prior to initialize
215218 let root = find_root(None).and_then(|root| lsp::Url::from_file_path(root).ok());
216219
220+ if self.config.is_some() {
221+ log::info!("Using custom LSP config: {}", self.config.as_ref().unwrap());
222+ }
223+
217224 #[allow(deprecated)]
218225 let params = lsp::InitializeParams {
219226 process_id: Some(std::process::id()),
220227 // root_path is obsolete, use root_uri
221228 root_path: None,
222229 root_uri: root,
223− initialization_options: None,
230+ initialization_options: self.config.clone(),
224231 capabilities: lsp::ClientCapabilities {
225232 text_document: Some(lsp::TextDocumentClientCapabilities {
226233 completion: Some(lsp::CompletionClientCapabilities {