Skip to content

Commit e8add6f

Browse files
A-Walrusarchseer
authored andcommitted
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.
1 parent cc47d3f commit e8add6f

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

helix-term/src/commands/typed.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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.

0 commit comments

Comments
 (0)