From eea6057dd22ee6980a4be0e3c6e1aca70e95e743 Mon Sep 17 00:00:00 2001 From: anshul-garg27 Date: Wed, 29 Apr 2026 05:34:28 +0530 Subject: [PATCH] Recognize .command files as shell scripts --- crates/languages/src/lib.rs | 2 +- crates/languages/src/lib_tests.rs | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/crates/languages/src/lib.rs b/crates/languages/src/lib.rs index ab75dbbf..52c890fb 100644 --- a/crates/languages/src/lib.rs +++ b/crates/languages/src/lib.rs @@ -153,7 +153,7 @@ pub fn language_by_filename(path: &Path) -> Option> { "ts" | "cts" | "mts" => language_by_name("typescript"), "java" | "groovy" | "gvy" | "gy" | "gsh" => language_by_name("java"), "cpp" | "cxx" | "cc" | "h" | "hh" => language_by_name("cpp"), - "sh" | "zsh" | "bash" => language_by_name("shell"), + "sh" | "zsh" | "bash" | "command" => language_by_name("shell"), "cs" => language_by_name("csharp"), "html" => language_by_name("html"), "css" => language_by_name("css"), diff --git a/crates/languages/src/lib_tests.rs b/crates/languages/src/lib_tests.rs index fead6246..71b87bff 100644 --- a/crates/languages/src/lib_tests.rs +++ b/crates/languages/src/lib_tests.rs @@ -1,4 +1,6 @@ -use crate::{load_language, SUPPORTED_LANGUAGES}; +use std::path::Path; + +use crate::{language_by_filename, load_language, SUPPORTED_LANGUAGES}; /// Validate that every supported language can be loaded successfully. /// This catches invalid node types, syntax errors, and other issues in .scm query files @@ -20,3 +22,14 @@ fn all_supported_languages_load_successfully() { .join("\n") ); } + +/// `.command` is the macOS convention for double-clickable shell scripts. +/// Make sure `language_by_filename` recognizes it as shell so the editor +/// renders syntax highlighting instead of the +/// "Language support is unavailable for this file type" footer. +#[test] +fn command_extension_resolves_to_shell() { + let language = language_by_filename(Path::new("script.command")) + .expect("`.command` files should resolve to a language"); + assert_eq!(language.display_name, "Shell"); +}