on master help sign in
Switch to Result for invalid language
75e6a64A-Walrus
helix-term/src/commands/typed.rs+2−6
@@ -1254,14 +1254,10 @@ fn language(
1254
1254
1255 let doc = doc_mut!(cx.editor);
1255 let doc = doc_mut!(cx.editor);
1256
1256
1257− let loader = cx.editor.syn_loader.clone();
1258 if args[0] == "text" {
1257 if args[0] == "text" {
1259− doc.set_language(None, Some(loader))
1258+ doc.set_language(None, None)
1260 } else {
1259 } else {
1261− let ok = doc.set_language_by_language_id(&args[0], loader);
1260+ doc.set_language_by_language_id(&args[0], cx.editor.syn_loader.clone())?;
1262− if !ok {
1263− anyhow::bail!("invalid language: {}", args[0]);
1264− }
1265 }
1261 }
1266 doc.detect_indent_and_line_ending();
1262 doc.detect_indent_and_line_ending();
1267
1263
helix-view/src/document.rs+6−7
@@ -683,13 +683,12 @@ 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− ) -> bool {
686+ ) -> anyhow::Result<()> {
687+ let language_config = config_loader
687− let language_config = config_loader.language_config_for_language_id(language_id);
688+ .language_config_for_language_id(language_id)
688− if language_config.is_none() {
689+ .ok_or_else(|| anyhow!("invalid language id: {}", language_id))?;
689− return false;
690− }
691− self.set_language(language_config, Some(config_loader));
690+ self.set_language(Some(language_config), Some(config_loader));
692− true
691+ Ok(())
693 }
692 }
694
693
695 /// Set the LSP.
694 /// Set the LSP.