summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmaan Qureshi <amaanq12@gmail.com>2023-07-27 03:51:13 -0400
committerGitHub <noreply@github.com>2023-07-27 09:51:13 +0200
commitad3805f5c34b51890c3d3c37c2f0c86269598a32 (patch)
treec9af039d63e77ba68e4d7befc74775dcc347fea6
parentfix(hcl, terraform): adapt to scanner rewrite (diff)
downloadnvim-treesitter-ad3805f5c34b51890c3d3c37c2f0c86269598a32.tar
nvim-treesitter-ad3805f5c34b51890c3d3c37c2f0c86269598a32.tar.gz
nvim-treesitter-ad3805f5c34b51890c3d3c37c2f0c86269598a32.tar.bz2
nvim-treesitter-ad3805f5c34b51890c3d3c37c2f0c86269598a32.tar.lz
nvim-treesitter-ad3805f5c34b51890c3d3c37c2f0c86269598a32.tar.xz
nvim-treesitter-ad3805f5c34b51890c3d3c37c2f0c86269598a32.tar.zst
nvim-treesitter-ad3805f5c34b51890c3d3c37c2f0c86269598a32.zip
fix(c)!: update C, CPP parsers and queries
also update derived parsers (arduino, cuda, glsl, hlsl, ispc, objc)
-rw-r--r--lockfile.json16
-rw-r--r--queries/c/folds.scm3
-rw-r--r--queries/c/highlights.scm26
-rw-r--r--queries/c/indents.scm107
-rw-r--r--queries/c/injections.scm4
-rw-r--r--queries/cpp/highlights.scm2
-rw-r--r--tests/indent/c/if_else.c3
7 files changed, 68 insertions, 93 deletions
diff --git a/lockfile.json b/lockfile.json
index 6573df89a..fcb0b44d2 100644
--- a/lockfile.json
+++ b/lockfile.json
@@ -6,7 +6,7 @@
"revision": "80ea622cf952a0059e168e5c92a798b2f1925652"
},
"arduino": {
- "revision": "4de2f3e6235ee8659ecb7467c16ed13bde7fb272"
+ "revision": "3446bac828d5db2a6cf60ab31813c02ab53547a7"
},
"astro": {
"revision": "e122a8fcd07e808a7b873bfadc2667834067daf1"
@@ -33,7 +33,7 @@
"revision": "7f1a5df44861291d6951b6b2146a9fef4c226e14"
},
"c": {
- "revision": "6adee194587678b250608cdb808544f06bcd26e7"
+ "revision": "ad095896dd223f1c22b85ac5ec84ab11fb732b07"
},
"c_sharp": {
"revision": "1648e21b4f087963abf0101ee5221bb413107b07"
@@ -69,13 +69,13 @@
"revision": "f4b3cbc8b0bd4e13035d39940fef09f1392e8739"
},
"cpp": {
- "revision": "0e7b7a02b6074859b51c1973eb6a8275b3315b1d"
+ "revision": "f88bf81238ec2842682e4d1dac0acf3b43b686e9"
},
"css": {
"revision": "5f2c94b897601b4029fedcce7db4c6d76ce8a128"
},
"cuda": {
- "revision": "c5befe09c99f5e88190574676ffa8eb29775d410"
+ "revision": "2af3d43cd96dd3f3c3868095222c7f5e2462b3ab"
},
"cue": {
"revision": "0deecf48944aa54bb73e5383ba8acfbf9f2c44b4"
@@ -174,7 +174,7 @@
"revision": "d3031a8294bf331600d5046b1d14e690a0d8ba0c"
},
"glsl": {
- "revision": "7d76863f2126ed3b246fead68f9591760d546c94"
+ "revision": "34e0657e37323874c6b67c718a0f83410c4602cf"
},
"go": {
"revision": "8c8007eaee47702bb0291a3c7aeb004909baab4d"
@@ -219,7 +219,7 @@
"revision": "02fa3b79b3ff9a296066da6277adfc3f26cbc9e0"
},
"hlsl": {
- "revision": "b8fab02e808bab41c49829fb5e4fb0ce7eab8d1a"
+ "revision": "20c40a3f1bb68c596f56bb0c0290008b9d4f58dd"
},
"hocon": {
"revision": "c390f10519ae69fdb03b3e5764f5592fb6924bcc"
@@ -243,7 +243,7 @@
"revision": "1a0ce072ebf3afac7d5603d9a95bb7c9a6709b44"
},
"ispc": {
- "revision": "848e58874ffa2f7e540a6ec01ab9652b26995f37"
+ "revision": "0bdbb03d9abde78d8be2f2199e57119b2c7f8fd7"
},
"janet_simple": {
"revision": "bd9cbaf1ea8b942dfd58e68df10c9a378ab3d2b6"
@@ -345,7 +345,7 @@
"revision": "1a305093569632de50f9a316ff843dcda25b4ef5"
},
"objc": {
- "revision": "6d876afade2d5e70d394aaf994321c78297e3607"
+ "revision": "77e28aeaede824a5f4aa501fb5f3138ab1019b9f"
},
"ocaml": {
"revision": "694c57718fd85d514f8b81176038e7a4cfabcaaf"
diff --git a/queries/c/folds.scm b/queries/c/folds.scm
index 80c3039b6..5a35334a2 100644
--- a/queries/c/folds.scm
+++ b/queries/c/folds.scm
@@ -13,7 +13,8 @@
(preproc_else)
(preproc_ifdef)
(initializer_list)
+ (gnu_asm_expression)
] @fold
- (compound_statement
+(compound_statement
(compound_statement) @fold)
diff --git a/queries/c/highlights.scm b/queries/c/highlights.scm
index b5dad2ae2..ef70a7103 100644
--- a/queries/c/highlights.scm
+++ b/queries/c/highlights.scm
@@ -8,9 +8,14 @@
"typedef"
"union"
"goto"
+ "asm"
+ "__asm__"
] @keyword
-"sizeof" @keyword.operator
+[
+ "sizeof"
+ "offsetof"
+] @keyword.operator
"return" @keyword.return
@@ -36,6 +41,8 @@
"#else"
"#elif"
"#endif"
+ "#elifdef"
+ "#elifndef"
(preproc_directive)
] @preproc
@@ -43,7 +50,7 @@
"#include" @include
-[ ";" ":" "," ] @punctuation.delimiter
+[ ";" ":" "," "::" ] @punctuation.delimiter
"..." @punctuation.special
@@ -98,8 +105,8 @@
(comma_expression [ "," ] @operator)
[
- (true)
- (false)
+ (true)
+ (false)
] @boolean
(conditional_expression [ "?" ":" ] @conditional.ternary)
@@ -133,7 +140,10 @@
(storage_class_specifier) @storageclass
-(type_qualifier) @type.qualifier
+[
+ (type_qualifier)
+ (gnu_asm_qualifier)
+] @type.qualifier
(linkage_specification
"extern" @storageclass)
@@ -193,15 +203,15 @@
[
"__attribute__"
+ "__declspec"
+ "__based"
"__cdecl"
"__clrcall"
"__stdcall"
"__fastcall"
"__thiscall"
"__vectorcall"
- "_unaligned"
- "__unaligned"
- "__declspec"
+ (ms_pointer_modifier)
(attribute_declaration)
] @attribute
diff --git a/queries/c/indents.scm b/queries/c/indents.scm
index 4d1ba3940..cf4c8fa62 100644
--- a/queries/c/indents.scm
+++ b/queries/c/indents.scm
@@ -15,85 +15,46 @@
(_) @indent.begin
";" @indent.end)
-(
- ERROR
- "for" "(" @indent.begin ";" ";" ")" @indent.end)
-(
- (for_statement
- body: (_) @_body
- ) @indent.begin
- (#not-has-type? @_body compound_statement)
-)
+(ERROR
+ "for" "(" @indent.begin ";" ";" ")" @indent.end)
-(
- while_statement
- condition: (_) @indent.begin
-)
-(
- (while_statement
- body: (_) @_body
- ) @indent.begin
- (#not-has-type? @_body compound_statement)
-)
+((for_statement
+ body: (_) @_body) @indent.begin
+ (#not-has-type? @_body compound_statement))
+
+(while_statement
+ condition: (_) @indent.begin)
+
+((while_statement
+ body: (_) @_body) @indent.begin
+ (#not-has-type? @_body compound_statement))
(
(if_statement)
- (ERROR "else") @indent.begin
-)
+ .
+ (ERROR "else" @indent.begin))
-(
- if_statement
- condition: (_) @indent.begin
-)
-;; Make sure all cases of if-else are tagged with @indent.begin
-;; So we will offset the indents for the else case
-(
- (if_statement
- consequence: (compound_statement)
- "else" @indent.branch
- alternative:
- [
- [ "{" "}" ] @indent.branch
- (compound_statement ["{" "}"] @indent.branch)
- (_)
- ]
- ) @indent.begin
-)
-(
- (if_statement
- consequence: (_ ";" @indent.end) @_consequence
- ) @indent.begin
- (#not-has-type? @_consequence compound_statement)
-)
-(
- (if_statement
- consequence: (_) @_consequence
- "else" @indent.branch
- alternative:
- [
- [ "{" "}" ] @indent.branch
- (compound_statement ["{" "}"] @indent.branch)
- (_)
- ]
- )
- (#not-has-type? @_consequence compound_statement)
-)
+(if_statement
+ condition: (_) @indent.begin)
+
+;; Supports if without braces (but not both if-else without braces)
+((if_statement
+ consequence:
+ (_ ";" @indent.end) @_consequence
+ (#not-has-type? @_consequence compound_statement)
+ alternative:
+ (else_clause
+ "else" @indent.branch
+ [
+ (if_statement (compound_statement) @indent.dedent)? @indent.dedent
+ (compound_statement)? @indent.dedent
+ (_)? @indent.dedent
+ ]
+ )?
+ ) @indent.begin)
+
+(else_clause (_ . "{" @indent.branch))
-;; Dedent for chaining if-else statements
-;; this will go recursively through each if-elseif
-;; if-elseif -> second `if` is dedented once, indented twice
-;; if-elseif-elseif -> third `if` is dedented twice, indented 3 times
-;; -> all are indented once
-(
- (if_statement
- consequence: (_)
- alternative:
- [
- (if_statement consequence: (compound_statement) @indent.dedent)
- (_)
- ] @indent.dedent
- )
-)
(compound_statement "}" @indent.end)
diff --git a/queries/c/injections.scm b/queries/c/injections.scm
index afeb068a2..207ef0515 100644
--- a/queries/c/injections.scm
+++ b/queries/c/injections.scm
@@ -1,3 +1,7 @@
(preproc_arg) @c
(comment) @comment
+
+; TODO: add when asm is added
+; (gnu_asm_expression assembly_code: (string_literal) @asm)
+; (gnu_asm_expression assembly_code: (concatenated_string (string_literal) @asm))
diff --git a/queries/cpp/highlights.scm b/queries/cpp/highlights.scm
index c58d76aba..bce3f9061 100644
--- a/queries/cpp/highlights.scm
+++ b/queries/cpp/highlights.scm
@@ -160,7 +160,7 @@
; Constants
(this) @variable.builtin
-(nullptr) @constant.builtin
+(null "nullptr" @constant.builtin)
(true) @boolean
(false) @boolean
diff --git a/tests/indent/c/if_else.c b/tests/indent/c/if_else.c
index 0a81b3594..e71aa328c 100644
--- a/tests/indent/c/if_else.c
+++ b/tests/indent/c/if_else.c
@@ -55,6 +55,5 @@ int baz(int x){
else
x++;
}
- else
- return x;
+ return 0;
}