on master help sign in
Add error handling to set language command
e8add6fA-Walrus
helix-term/src/commands/typed.rs+10−1
@@ -1253,7 +1253,16 @@ fn language(
1253 }
1253 }
1254
1254
1255 let doc = doc_mut!(cx.editor);
1255 let doc = doc_mut!(cx.editor);
1256+
1256− doc.set_language_by_language_id(&args[0], cx.editor.syn_loader.clone());
1257+ let loader = cx.editor.syn_loader.clone();
1258+ if args[0] == "text" {
1259+ doc.set_language(None, Some(loader))
1260+ } else {
1261+ let ok = doc.set_language_by_language_id(&args[0], loader);
1262+ if !ok {
1263+ anyhow::bail!("invalid language: {}", args[0]);
1264+ }
1265+ }
1257 doc.detect_indent_and_line_ending();
1266 doc.detect_indent_and_line_ending();
1258
1267
1259 let id = doc.id();
1268 let id = doc.id();
helix-view/src/document.rs+5−1
@@ -683,9 +683,13 @@ impl Document {
683 &mut self,
683 &mut self,
684 language_id: &str,
684 language_id: &str,
685 config_loader: Arc<syntax::Loader>,
685 config_loader: Arc<syntax::Loader>,
686− ) {
686+ ) -> bool {
687 let language_config = config_loader.language_config_for_language_id(language_id);
687 let language_config = config_loader.language_config_for_language_id(language_id);
688+ if language_config.is_none() {
689+ return false;
690+ }
688 self.set_language(language_config, Some(config_loader));
691 self.set_language(language_config, Some(config_loader));
692+ true
689 }
693 }
690
694
691 /// Set the LSP.
695 /// Set the LSP.