on master help sign in
Add error handling to set language command

If you type a nonexistant language an appropriate message will show, and the language won't be changed.

commite8add6f46d0f208c96407151276a985dd34fc93f authorA-Walrus <ofek.r.guy@gmail.com> dateMon 8 Aug 2022, 22:04 (4 years ago) parentcc47d3f
2 files changed+15−2
helix-term/src/commands/typed.rs+10−1 helix-view/src/document.rs+5−1
helix-term/src/commands/typed.rs+10−1
@@ -1253,7 +1253,16 @@ fn language(
12531253 }
12541254
12551255 let doc = doc_mut!(cx.editor);
1256− doc.set_language_by_language_id(&args[0], cx.editor.syn_loader.clone());
1256+
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+ }
12571266 doc.detect_indent_and_line_ending();
12581267
12591268 let id = doc.id();
helix-view/src/document.rs+5−1
@@ -683,9 +683,13 @@ impl Document {
683683 &mut self,
684684 language_id: &str,
685685 config_loader: Arc<syntax::Loader>,
686− ) {
686+ ) -> bool {
687687 let language_config = config_loader.language_config_for_language_id(language_id);
688+ if language_config.is_none() {
689+ return false;
690+ }
688691 self.set_language(language_config, Some(config_loader));
692+ true
689693 }
690694
691695 /// Set the LSP.