summaryrefslogtreecommitdiff
path: root/src/syntax.zig
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-28 16:45:54 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:15 -0300
commitc9d5d97e4d487b92a52d765dd9c467423ddd1de1 (patch)
tree35547658ee733fb2631a41568c682c93b5fd4746 /src/syntax.zig
parentd09c1c36e4d4e1bc57aa14f5ba4c6131b6111429 (diff)
downloadpardes-c9d5d97e4d487b92a52d765dd9c467423ddd1de1.tar.gz
pardes-c9d5d97e4d487b92a52d765dd9c467423ddd1de1.zip
A REPL's language is named and found as the syntax table finds one: aliases, any case
Repl took only the grammar's exact name, and a file's language was found by a case-sensitive suffix of its path, apart from the aliases a code fence already had. The aliases move to grammar_manifest with byName and byPath, which syntax, Repl and langOf share, so `Repl py` and a .PY file work. The line-by-line warning is for the python language, not an id that starts with python. Joincol's doc line was sitting on Repl. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'src/syntax.zig')
-rw-r--r--src/syntax.zig29
1 files changed, 1 insertions, 28 deletions
diff --git a/src/syntax.zig b/src/syntax.zig
index 9c1a4f4b..9930db20 100644
--- a/src/syntax.zig
+++ b/src/syntax.zig
@@ -226,35 +226,8 @@ fn forExt(ext: []const u8) !?Selected {
return null;
}
-const LangAlias = struct { []const u8, []const u8 };
-const lang_aliases = [_]LangAlias{
- .{ "js", "javascript" },
- .{ "jsx", "javascript" },
- .{ "mjs", "javascript" },
- .{ "py", "python" },
- .{ "sh", "bash" },
- .{ "shell", "bash" },
- .{ "zsh", "bash" },
- .{ "bash", "bash" },
- .{ "rs", "rust" },
- .{ "c++", "cpp" },
- .{ "cxx", "cpp" },
- .{ "cc", "cpp" },
- .{ "cs", "c_sharp" },
- .{ "kt", "kotlin" },
- .{ "rb", "ruby" },
- .{ "ml", "ocaml" },
- .{ "hs", "haskell" },
-};
-
fn forLang(name: []const u8) !?Selected {
- var canonical = name;
- for (lang_aliases) |a| {
- if (std.ascii.eqlIgnoreCase(name, a[0])) {
- canonical = a[1];
- break;
- }
- }
+ const canonical = if (grammar_manifest.byName(name)) |i| grammar_manifest.all[i].name else name;
for (&specs) |*spec| {
if (std.ascii.eqlIgnoreCase(canonical, spec.name)) return try ensure(spec);
}