Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--helix-term/src/application.rs40
1 files changed, 19 insertions, 21 deletions
diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs
index 6f3485a8..eadda721 100644
--- a/helix-term/src/application.rs
+++ b/helix-term/src/application.rs
@@ -384,32 +384,30 @@ impl Application {
}
}
- /// refresh language config after config change
- fn refresh_language_config(&mut self) -> Result<(), Error> {
- let lang_loader = helix_core::config::user_lang_loader()?;
-
- self.editor.syn_loader.store(Arc::new(lang_loader));
- let loader = self.editor.syn_loader.load();
- for document in self.editor.documents.values_mut() {
- document.detect_language(&loader);
- let diagnostics = Editor::doc_diagnostics(
- &self.editor.language_servers,
- &self.editor.diagnostics,
- document,
- );
- document.replace_diagnostics(diagnostics, &[], None);
- }
-
- Ok(())
- }
-
fn refresh_config(&mut self) {
let mut refresh_config = || -> Result<(), Error> {
let default_config = Config::load_default()
.map_err(|err| anyhow::anyhow!("Failed to load config: {}", err))?;
- self.refresh_language_config()?;
- // Refresh theme after config change
+
+ // Update the syntax language loader before setting the theme. Setting the theme will
+ // call `Loader::set_scopes` which must be done before the documents are re-parsed for
+ // the sake of locals highlighting.
+ let lang_loader = helix_core::config::user_lang_loader()?;
+ self.editor.syn_loader.store(Arc::new(lang_loader));
Self::load_configured_theme(&mut self.editor, &default_config);
+
+ // Re-parse any open documents with the new language config.
+ let lang_loader = self.editor.syn_loader.load();
+ for document in self.editor.documents.values_mut() {
+ document.detect_language(&lang_loader);
+ let diagnostics = Editor::doc_diagnostics(
+ &self.editor.language_servers,
+ &self.editor.diagnostics,
+ document,
+ );
+ document.replace_diagnostics(diagnostics, &[], None);
+ }
+
self.terminal
.reconfigure(default_config.editor.clone().into())?;
// Store new config