Skip to content

Commit 76e7c6a

Browse files
unhappychoiceclaude
andcommitted
feat: add Lua syntax highlighting support
Add tree-sitter-lua dependency and implement Lua language module for syntax highlighting of .lua files. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 84f77c5 commit 76e7c6a

File tree

4 files changed

+67
-48
lines changed

4 files changed

+67
-48
lines changed

Cargo.lock

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -24,50 +24,51 @@ exclude = [
2424
]
2525

2626
[dependencies]
27+
anyhow = "1.0"
28+
chrono = "0.4"
29+
chrono-english = "0.1"
30+
clap = { version = "4.5", features = ["derive"] }
31+
crossterm = "0.29"
32+
ctrlc = { version = "3.4", features = ["termination"] }
33+
dirs = "6.0"
2734
git2 = { version = "0.20", features = ["vendored-openssl", "vendored-libgit2"] }
35+
globset = "0.4"
36+
rand = "0.9"
2837
ratatui = "0.29"
29-
crossterm = "0.29"
38+
serde = { version = "1.0", features = ["derive"] }
39+
streaming-iterator = "0.1"
40+
toml = "0.9"
41+
toml_edit = "0.23"
3042
tree-sitter = "0.25"
31-
tree-sitter-rust = "0.24"
32-
tree-sitter-typescript = "0.23"
33-
tree-sitter-javascript = "0.25"
34-
tree-sitter-python = "0.25"
35-
tree-sitter-ruby = "0.23"
36-
tree-sitter-go = "0.25"
37-
tree-sitter-swift = "0.7"
38-
tree-sitter-kotlin-ng = "1.0"
39-
tree-sitter-java = "0.23"
40-
tree-sitter-php = "0.24"
41-
tree-sitter-c-sharp = "0.23"
43+
tree-sitter-bash = "0.25"
4244
tree-sitter-c = "0.24"
45+
tree-sitter-c-sharp = "0.23"
46+
tree-sitter-clojure = "0.1"
4347
tree-sitter-cpp = "0.23"
44-
tree-sitter-haskell = "0.23"
48+
tree-sitter-css = "0.25"
4549
tree-sitter-dart = "0.0.4"
46-
tree-sitter-scala = "0.24"
47-
tree-sitter-clojure = "0.1"
48-
tree-sitter-zig = "1.0"
4950
tree-sitter-elixir = "0.3"
5051
tree-sitter-erlang = "0.15"
52+
tree-sitter-go = "0.25"
53+
tree-sitter-haskell = "0.23"
5154
tree-sitter-html = "0.23"
52-
tree-sitter-css = "0.25"
55+
tree-sitter-java = "0.23"
56+
tree-sitter-javascript = "0.25"
5357
tree-sitter-json = "0.24"
58+
tree-sitter-kotlin-ng = "1.0"
59+
tree-sitter-lua = "0.2"
5460
tree-sitter-md = "0.5"
55-
tree-sitter-yaml = "0.7"
61+
tree-sitter-php = "0.24"
62+
tree-sitter-python = "0.25"
63+
tree-sitter-ruby = "0.23"
64+
tree-sitter-rust = "0.24"
65+
tree-sitter-scala = "0.24"
66+
tree-sitter-swift = "0.7"
67+
tree-sitter-typescript = "0.23"
5668
tree-sitter-xml = "0.7"
57-
tree-sitter-bash = "0.25"
58-
chrono = "0.4"
59-
chrono-english = "0.1"
60-
rand = "0.9"
61-
serde = { version = "1.0", features = ["derive"] }
62-
toml = "0.9"
63-
toml_edit = "0.23"
64-
clap = { version = "4.5", features = ["derive"] }
65-
anyhow = "1.0"
66-
streaming-iterator = "0.1"
67-
ctrlc = { version = "3.4", features = ["termination"] }
68-
dirs = "6.0"
69+
tree-sitter-yaml = "0.7"
70+
tree-sitter-zig = "1.0"
6971
unicode-width = "0.2"
70-
globset = "0.4"
7172

7273
[lib]
7374
name = "gitlogue"

src/syntax/languages/lua.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pub fn language() -> tree_sitter::Language {
2+
tree_sitter_lua::LANGUAGE.into()
3+
}
4+
5+
pub const HIGHLIGHT_QUERY: &str = tree_sitter_lua::HIGHLIGHTS_QUERY;

src/syntax/languages/mod.rs

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ pub mod java;
1414
pub mod javascript;
1515
pub mod json;
1616
pub mod kotlin;
17+
pub mod lua;
1718
pub mod markdown;
1819
pub mod php;
1920
pub mod python;
@@ -33,35 +34,36 @@ pub fn get_language(path: &Path) -> Option<(Language, &'static str)> {
3334
let extension = path.extension()?.to_str()?;
3435

3536
match extension {
36-
"rs" => Some((rust::language(), rust::HIGHLIGHT_QUERY)),
37-
"ts" | "tsx" | "mts" | "cts" => Some((typescript::language(), typescript::HIGHLIGHT_QUERY)),
38-
"js" | "jsx" | "mjs" | "cjs" => Some((javascript::language(), javascript::HIGHLIGHT_QUERY)),
39-
"py" | "pyw" => Some((python::language(), python::HIGHLIGHT_QUERY)),
4037
"sh" | "bash" | "zsh" => Some((bash::language(), bash::HIGHLIGHT_QUERY)),
41-
"go" => Some((go_lang::language(), go_lang::HIGHLIGHT_QUERY)),
42-
"rb" | "rbw" | "rake" | "gemspec" => Some((ruby::language(), ruby::HIGHLIGHT_QUERY)),
43-
"swift" => Some((swift::language(), swift::HIGHLIGHT_QUERY)),
44-
"kt" | "kts" => Some((kotlin::language(), kotlin::HIGHLIGHT_QUERY)),
45-
"java" => Some((java::language(), java::HIGHLIGHT_QUERY)),
46-
"php" | "php3" | "php4" | "php5" | "phtml" => Some((php::language(), php::HIGHLIGHT_QUERY)),
47-
"cs" | "csx" => Some((csharp::language(), csharp::HIGHLIGHT_QUERY)),
4838
// C++ before C to handle .h files (can be either)
4939
"cpp" | "cc" | "cxx" | "c++" | "C" | "CPP" | "hpp" | "hh" | "hxx" | "h++" | "H" | "HPP"
5040
| "tcc" | "inl" => Some((cpp::language(), cpp::HIGHLIGHT_QUERY)),
5141
"c" | "h" => Some((c::language(), c::HIGHLIGHT_QUERY)),
52-
"hs" | "lhs" => Some((haskell::language(), haskell::HIGHLIGHT_QUERY)),
53-
"dart" => Some((dart::language(), dart::HIGHLIGHT_QUERY)),
54-
"scala" | "sc" | "sbt" => Some((scala::language(), scala::HIGHLIGHT_QUERY)),
5542
"clj" | "cljs" | "cljc" | "edn" => Some((clojure::language(), clojure::HIGHLIGHT_QUERY)),
56-
"zig" => Some((zig::language(), zig::HIGHLIGHT_QUERY)),
43+
"cs" | "csx" => Some((csharp::language(), csharp::HIGHLIGHT_QUERY)),
44+
"css" | "scss" | "sass" => Some((css::language(), css::HIGHLIGHT_QUERY)),
45+
"dart" => Some((dart::language(), dart::HIGHLIGHT_QUERY)),
5746
"ex" | "exs" => Some((elixir::language(), elixir::HIGHLIGHT_QUERY)),
5847
"erl" | "hrl" | "es" | "escript" => Some((erlang::language(), erlang::HIGHLIGHT_QUERY)),
48+
"go" => Some((go_lang::language(), go_lang::HIGHLIGHT_QUERY)),
49+
"hs" | "lhs" => Some((haskell::language(), haskell::HIGHLIGHT_QUERY)),
5950
"html" | "htm" => Some((html::language(), html::HIGHLIGHT_QUERY)),
60-
"css" | "scss" | "sass" => Some((css::language(), css::HIGHLIGHT_QUERY)),
51+
"java" => Some((java::language(), java::HIGHLIGHT_QUERY)),
52+
"js" | "jsx" | "mjs" | "cjs" => Some((javascript::language(), javascript::HIGHLIGHT_QUERY)),
6153
"json" | "jsonc" => Some((json::language(), json::HIGHLIGHT_QUERY)),
54+
"kt" | "kts" => Some((kotlin::language(), kotlin::HIGHLIGHT_QUERY)),
55+
"lua" => Some((lua::language(), lua::HIGHLIGHT_QUERY)),
6256
"md" | "markdown" => Some((markdown::language(), markdown::HIGHLIGHT_QUERY)),
63-
"yaml" | "yml" => Some((yaml::language(), yaml::HIGHLIGHT_QUERY)),
57+
"php" | "php3" | "php4" | "php5" | "phtml" => Some((php::language(), php::HIGHLIGHT_QUERY)),
58+
"py" | "pyw" => Some((python::language(), python::HIGHLIGHT_QUERY)),
59+
"rb" | "rbw" | "rake" | "gemspec" => Some((ruby::language(), ruby::HIGHLIGHT_QUERY)),
60+
"rs" => Some((rust::language(), rust::HIGHLIGHT_QUERY)),
61+
"scala" | "sc" | "sbt" => Some((scala::language(), scala::HIGHLIGHT_QUERY)),
62+
"swift" => Some((swift::language(), swift::HIGHLIGHT_QUERY)),
63+
"ts" | "tsx" | "mts" | "cts" => Some((typescript::language(), typescript::HIGHLIGHT_QUERY)),
6464
"xml" | "svg" | "xsl" | "xslt" => Some((xml::language(), xml::HIGHLIGHT_QUERY)),
65+
"yaml" | "yml" => Some((yaml::language(), yaml::HIGHLIGHT_QUERY)),
66+
"zig" => Some((zig::language(), zig::HIGHLIGHT_QUERY)),
6567
_ => None,
6668
}
6769
}

0 commit comments

Comments
 (0)