Skip to content

Commit b964a32

Browse files
committed
Add Support for GLSL
1 parent 49e5cff commit b964a32

11 files changed

Lines changed: 110 additions & 0 deletions

File tree

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: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ tree-sitter-erlang = "0.16.0"
9595
tree-sitter-fortran = "0.5.1"
9696
tree-sitter-fsharp = "0.3.0"
9797
tree-sitter-gleam = "1.0.0"
98+
tree-sitter-glsl = "0.2.0"
9899
tree-sitter-go = "0.25.0"
99100
tree-sitter-haskell = "0.23.1"
100101
tree-sitter-hcl = "1.1.0"

manual/src/languages_supported.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ with `difft --list-languages`.
2828
| F# | [ionide/tree-sitter-fsharp](https://github.com/ionide/tree-sitter-fsharp) |
2929
| Fortran | [stadelmanma/tree-sitter-fortran](https://github.com/stadelmanma/tree-sitter-fortran) |
3030
| Gleam | [gleam-lang/tree-sitter-gleam](https://github.com/gleam-lang/tree-sitter-gleam) |
31+
| Glsl | [tree-sitter-grammars/tree-sitter-glsl](https://github.com/tree-sitter-grammars/tree-sitter-glsl) |
3132
| Go | [tree-sitter/tree-sitter-go](https://github.com/tree-sitter/tree-sitter-go) |
3233
| Hare | [ecmma/tree-sitter-hare](https://git.sr.ht/~ecmma/tree-sitter-hare) |
3334
| Haskell | [tree-sitter/tree-sitter-haskell](https://github.com/tree-sitter/tree-sitter-haskell) |

sample_files/compare.expected

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,12 @@ sample_files/f_sharp_1.fs sample_files/f_sharp_2.fs
8585
sample_files/fortran_1.f90 sample_files/fortran_2.f90
8686
b5fae2c0a3e0755ca8182df1f728400b -
8787

88+
sample_files/glsl_frag_1.frag sample_files/glsl_frag_2.frag
89+
0f6fe946a3b36534767e9f09ca6a5920 -
90+
91+
sample_files/glsl_vert_1.vert sample_files/glsl_vert_2.vert
92+
f98b5d9030f67dff492d1d9c8f31b065 -
93+
8894
sample_files/hack_1.php sample_files/hack_2.php
8995
fd23895fca3cb3e70b5ffd364f8c30fe -
9096

sample_files/glsl_frag_1.frag

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#version 330 core
2+
// Basic Fragment Shader 1
3+
out vec4 FragColor;
4+
5+
in vec4 vertexColor; // the input variable from the vertex shader (same name and same type)
6+
7+
void main()
8+
{
9+
FragColor = vertexColor;
10+
}

sample_files/glsl_frag_2.frag

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#version 330 core
2+
// Basic Fragment Shader 2
3+
out vec4 FragColor;
4+
5+
in vec3 ourColor;
6+
in vec2 TexCoord;
7+
8+
uniform sampler2D ourTexture;
9+
10+
void main()
11+
{
12+
FragColor = texture(ourTexture, TexCoord);
13+
}

sample_files/glsl_vert_1.vert

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#version 330 core
2+
// Basic Vertex Shader 1
3+
layout (location = 0) in vec3 aPos; // the position variable has attribute position 0
4+
layout (location = 1) in vec3 aColor; // the color variable has attribute position 1
5+
6+
out vec3 ourColor; // output a color to the fragment shader
7+
8+
void main()
9+
{
10+
gl_Position = vec4(aPos, 1.0);
11+
ourColor = aColor; // set ourColor to the input color we got from the vertex data
12+
}

sample_files/glsl_vert_2.vert

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#version 330 core
2+
// Basic Vertex Shader 2
3+
layout (location = 0) in vec3 aPos;
4+
layout (location = 1) in vec3 aColor;
5+
layout (location = 2) in vec2 aTexCoord;
6+
7+
out vec3 ourColor;
8+
out vec2 TexCoord;
9+
10+
void main()
11+
{
12+
gl_Position = vec4(aPos, 1.0);
13+
ourColor = aColor;
14+
TexCoord = aTexCoord;
15+
}

src/parse/guess_language.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ pub(crate) enum Language {
4040
FSharp,
4141
Fortran,
4242
Gleam,
43+
Glsl,
4344
Go,
4445
Hare,
4546
Haskell,
@@ -141,6 +142,7 @@ pub(crate) fn language_name(language: Language) -> &'static str {
141142
FSharp => "F#",
142143
Fortran => "Fortran",
143144
Gleam => "Gleam",
145+
Glsl => "Glsl",
144146
Go => "Go",
145147
Hare => "Hare",
146148
Haskell => "Haskell",
@@ -284,6 +286,31 @@ pub(crate) fn language_globs(language: Language) -> Vec<glob::Pattern> {
284286
FSharp => &["*.fs", "*.fsx", "*.fsi"],
285287
Fortran => &["*.f", "*.for", "*.f90", "*.F", "*.FOR", "*.F90"],
286288
Gleam => &["*.gleam"],
289+
Glsl => &[
290+
"*.glsl",
291+
"*.fp",
292+
"*.frag",
293+
"*.frg",
294+
"*.fs",
295+
"*.fsh",
296+
"*.fshader",
297+
"*.geo",
298+
"*.geom",
299+
"*.glslf",
300+
"*.glslv",
301+
"*.gs",
302+
"*.gshader",
303+
"*.rchit",
304+
"*.rmiss",
305+
"*.shader",
306+
"*.tesc",
307+
"*.tese",
308+
"*.vert",
309+
"*.vrx",
310+
"*.vs",
311+
"*.vsh",
312+
"*.vshader",
313+
],
287314
Go => &["*.go"],
288315
Hare => &["*.ha"],
289316
Haskell => &["*.hs"],

src/parse/tree_sitter_parser.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,19 @@ fn build_config(language: guess::Language) -> TreeSitterConfig {
472472
sub_languages: vec![],
473473
}
474474
}
475+
Glsl => {
476+
let language_fn = tree_sitter_glsl::LANGUAGE_GLSL;
477+
let language = tree_sitter::Language::new(language_fn);
478+
TreeSitterConfig {
479+
language: language.clone(),
480+
atom_nodes: ["string_literal", "char_literal"].into_iter().collect(),
481+
delimiter_tokens: vec![("(", ")"), ("{", "}"), ("[", "]")],
482+
ignore_trailing_tokens: vec![],
483+
highlight_query: ts::Query::new(&language, tree_sitter_glsl::HIGHLIGHTS_QUERY)
484+
.unwrap(),
485+
sub_languages: vec![],
486+
}
487+
}
475488
Go => {
476489
let language_fn = tree_sitter_go::LANGUAGE;
477490
let language = tree_sitter::Language::new(language_fn);

0 commit comments

Comments
 (0)