Improve auto-detection via shebang of TypeScript, JavaScript and Shell Script (#19114)

Peter Tripp created

Change summary

crates/languages/src/bash/config.toml       | 2 +-
crates/languages/src/javascript/config.toml | 3 ++-
crates/languages/src/typescript/config.toml | 1 +
typos.toml                                  | 1 -
4 files changed, 4 insertions(+), 3 deletions(-)

Detailed changes

crates/languages/src/bash/config.toml 🔗

@@ -3,7 +3,7 @@ code_fence_block_name = "bash"
 grammar = "bash"
 path_suffixes = ["sh", "bash", "bashrc", "bash_profile", "bash_aliases", "bash_logout", "profile", "zsh", "zshrc", "zshenv", "zsh_profile", "zsh_aliases", "zsh_histfile", "zlogin", "zprofile", ".env", "PKGBUILD"]
 line_comments = ["# "]
-first_line_pattern = "^#!.*\\b(?:ba|z)?sh\\b"
+first_line_pattern = '^#!.*\b(?:ash|bash|dash|sh|zsh)\b'
 brackets = [
     { start = "[", end = "]", close = true, newline = false },
     { start = "(", end = ")", close = true, newline = false },

crates/languages/src/javascript/config.toml 🔗

@@ -1,7 +1,8 @@
 name = "JavaScript"
 grammar = "tsx"
 path_suffixes = ["js", "jsx", "mjs", "cjs"]
-first_line_pattern = '^#!.*\bnode\b'
+# [/ ] is so we match "env node" or "/node" but not "ts-node"
+first_line_pattern = '^#!.*\b(?:[/ ]node|deno run.*--ext[= ]js)\b'
 line_comments = ["// "]
 autoclose_before = ";:.,=}])>"
 brackets = [

crates/languages/src/typescript/config.toml 🔗

@@ -1,6 +1,7 @@
 name = "TypeScript"
 grammar = "typescript"
 path_suffixes = ["ts", "cts", "d.cts", "d.mts", "mts"]
+first_line_pattern = '^#!.*\b(?:deno run|ts-node|bun|tsx)\b'
 line_comments = ["// "]
 autoclose_before = ";:.,=}])>"
 brackets = [

typos.toml 🔗

@@ -48,7 +48,6 @@ extend-ignore-re = [
     'cl\[ist]',
     '\[lan\]guage',
     '"ba"',
-    ":ba\\|z",
     # :/ crates/collab/migrations/20231009181554_add_release_channel_to_rooms.sql
     "COLUMN enviroment",
     # Typo in ClickHouse column name.