@@ -647,6 +647,7 @@ impl Registry {
647 language_config: &LanguageConfiguration,
647 language_config: &LanguageConfiguration,
648 doc_path: Option<&std::path::PathBuf>,
648 doc_path: Option<&std::path::PathBuf>,
649 root_dirs: &[PathBuf],
649 root_dirs: &[PathBuf],
650+ enable_snippets: bool,
650 ) -> Result<Option<Arc<Client>>> {
651 ) -> Result<Option<Arc<Client>>> {
651 let config = match &language_config.language_server {
652 let config = match &language_config.language_server {
652 Some(config) => config,
653 Some(config) => config,
@@ -661,8 +662,14 @@ impl Registry {
661 // initialize a new client
662 // initialize a new client
662 let id = self.counter.fetch_add(1, Ordering::Relaxed);
663 let id = self.counter.fetch_add(1, Ordering::Relaxed);
664− let NewClientResult(client, incoming) =
665+ let NewClientResult(client, incoming) = start_client(
665− start_client(id, language_config, config, doc_path, root_dirs)?;
667+ language_config,
666 self.incoming.push(UnboundedReceiverStream::new(incoming));
673 self.incoming.push(UnboundedReceiverStream::new(incoming));
668 let old_clients = entry.insert(vec![(id, client.clone())]);
675 let old_clients = entry.insert(vec![(id, client.clone())]);
@@ -695,6 +702,7 @@ impl Registry {
695 language_config: &LanguageConfiguration,
702 language_config: &LanguageConfiguration,
696 doc_path: Option<&std::path::PathBuf>,
703 doc_path: Option<&std::path::PathBuf>,
697 root_dirs: &[PathBuf],
704 root_dirs: &[PathBuf],
705+ enable_snippets: bool,
698 ) -> Result<Option<Arc<Client>>> {
706 ) -> Result<Option<Arc<Client>>> {
699 let config = match &language_config.language_server {
707 let config = match &language_config.language_server {
700 Some(config) => config,
708 Some(config) => config,
@@ -711,8 +719,14 @@ impl Registry {
711 // initialize a new client
719 // initialize a new client
712 let id = self.counter.fetch_add(1, Ordering::Relaxed);
720 let id = self.counter.fetch_add(1, Ordering::Relaxed);
714− let NewClientResult(client, incoming) =
722+ let NewClientResult(client, incoming) = start_client(
715− start_client(id, language_config, config, doc_path, root_dirs)?;
724+ language_config,
716 clients.push((id, client.clone()));
730 clients.push((id, client.clone()));
717 self.incoming.push(UnboundedReceiverStream::new(incoming));
731 self.incoming.push(UnboundedReceiverStream::new(incoming));
718 Ok(Some(client))
732 Ok(Some(client))
@@ -811,6 +825,7 @@ fn start_client(
811 ls_config: &LanguageServerConfiguration,
825 ls_config: &LanguageServerConfiguration,
812 doc_path: Option<&std::path::PathBuf>,
826 doc_path: Option<&std::path::PathBuf>,
813 root_dirs: &[PathBuf],
827 root_dirs: &[PathBuf],
828+ enable_snippets: bool,
814) -> Result<NewClientResult> {
829) -> Result<NewClientResult> {
815 let (client, incoming, initialize_notify) = Client::start(
830 let (client, incoming, initialize_notify) = Client::start(
816 &ls_config.command,
831 &ls_config.command,
@@ -834,7 +849,7 @@ fn start_client(
834 .capabilities
849 .capabilities
835 .get_or_try_init(|| {
850 .get_or_try_init(|| {
837− .initialize()
852+ .initialize(enable_snippets)
838 .map_ok(|response| response.capabilities)
853 .map_ok(|response| response.capabilities)