From 45cd81bfd5948383dbd32e9cad0955d858c80577 Mon Sep 17 00:00:00 2001 From: Ziwei Wang Date: Tue, 19 Dec 2023 16:18:11 -0500 Subject: [PATCH 1/3] Chore: Display bitbake operators in purple and other overrides remain as is --- client/syntaxes/bitbake.tmLanguage.json | 2 +- server/src/tree-sitter/utils.ts | 16 +++++----------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/client/syntaxes/bitbake.tmLanguage.json b/client/syntaxes/bitbake.tmLanguage.json index ba2e9654..43361317 100644 --- a/client/syntaxes/bitbake.tmLanguage.json +++ b/client/syntaxes/bitbake.tmLanguage.json @@ -265,7 +265,7 @@ }, "bitbake-operator": { "match": "(?<=:)(append|prepend|remove)", - "name": "keyword.other.bitbake-operator.bb" + "name": "keyword.control.bb" }, "parenthesis-open": { "match": "([\\w])*\\(", diff --git a/server/src/tree-sitter/utils.ts b/server/src/tree-sitter/utils.ts index 3eed113a..87b9a293 100644 --- a/server/src/tree-sitter/utils.ts +++ b/server/src/tree-sitter/utils.ts @@ -77,20 +77,14 @@ export function isVariableReference (n: SyntaxNode): boolean { } } +/** + * Check if the node is an override other than `append`, `preprend` or `remove` + */ export function isOverride (n: SyntaxNode): boolean { - const parentTypes = [ - 'variable_assignment', - 'function_definition', - 'anonymous_python_function', - 'python_function_definition' - ] const parentType = n?.parent?.type switch (n.type) { - case 'override': - if (parentType !== undefined) { - return parentTypes.includes(parentType) - } - return false + case 'identifier': + return parentType === 'override' // As per the tree-sitter grammar, an identifier which has a parent of type override is an override other than `append`, `preprend` or `remove` default: return false } From 08d79b17828c04f0658965bb278ec8cea3afc980 Mon Sep 17 00:00:00 2001 From: Ziwei Wang Date: Tue, 19 Dec 2023 16:19:38 -0500 Subject: [PATCH 2/3] Test: Update tests for overrides and bitbake operators --- client/test/grammars/test-cases/bitbake-operator.bb | 6 +++--- client/test/grammars/test-cases/variables.bb | 2 +- server/src/__tests__/fixtures/semanticTokens.bb | 2 +- server/src/__tests__/semanticTokens.test.ts | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/client/test/grammars/test-cases/bitbake-operator.bb b/client/test/grammars/test-cases/bitbake-operator.bb index 7fd4670c..b9b950df 100644 --- a/client/test/grammars/test-cases/bitbake-operator.bb +++ b/client/test/grammars/test-cases/bitbake-operator.bb @@ -1,13 +1,13 @@ # SYNTAX TEST "source.bb" "bitbake-operators" >KBRANCH:append -# ^^^^^^ source.bb keyword.other.bitbake-operator.bb +# ^^^^^^ source.bb keyword.control.bb >KBRANCH:prepend -# ^^^^^^^ source.bb keyword.other.bitbake-operator.bb +# ^^^^^^^ source.bb keyword.control.bb >KBRANCH:remove -# ^^^^^^ source.bb keyword.other.bitbake-operator.bb +# ^^^^^^ source.bb keyword.control.bb >python do_foo:append() { diff --git a/client/test/grammars/test-cases/variables.bb b/client/test/grammars/test-cases/variables.bb index 99d5f080..a69b063f 100644 --- a/client/test/grammars/test-cases/variables.bb +++ b/client/test/grammars/test-cases/variables.bb @@ -28,7 +28,7 @@ >FOO:remove = "${FOOREMOVE}" #^^^ source.bb variable.other.names.bb # ^^^^^^^^^ source.bb string.quoted.double.bb variable.other.names.bb -# ^^^^^^ source.bb keyword.other.bitbake-operator.bb - variable.other.names.bb +# ^^^^^^ source.bb keyword.control.bb - variable.other.names.bb >myfunc (var = '123', var2 = 123) {} # ^^^ source.bb variable.other.names.bb diff --git a/server/src/__tests__/fixtures/semanticTokens.bb b/server/src/__tests__/fixtures/semanticTokens.bb index ba6596fb..dc45ad45 100644 --- a/server/src/__tests__/fixtures/semanticTokens.bb +++ b/server/src/__tests__/fixtures/semanticTokens.bb @@ -1,6 +1,6 @@ FOO = 'FOO' -MYVAR:append = '${FOO}' +MYVAR:append:myoverride = '${FOO}' do_build () { echo 'do build' diff --git a/server/src/__tests__/semanticTokens.test.ts b/server/src/__tests__/semanticTokens.test.ts index 5ed3aef1..b88f3ad8 100644 --- a/server/src/__tests__/semanticTokens.test.ts +++ b/server/src/__tests__/semanticTokens.test.ts @@ -40,15 +40,15 @@ describe('Semantic tokens', () => { }, { line: 2, - startCharacter: 18, + startCharacter: 29, length: 3, tokenType: TOKEN_LEGEND.types.variable, tokenModifiers: [TOKEN_LEGEND.modifiers.declaration] }, { line: 2, - startCharacter: 5, - length: 7, + startCharacter: 13, + length: 10, tokenType: TOKEN_LEGEND.types.operator, tokenModifiers: [TOKEN_LEGEND.modifiers.readonly] }, From dbffa6bd92a7a8cc722db3f2b63d6bc98e266ece Mon Sep 17 00:00:00 2001 From: Ziwei Wang Date: Thu, 21 Dec 2023 10:07:26 -0500 Subject: [PATCH 3/3] Typo --- server/src/tree-sitter/utils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/src/tree-sitter/utils.ts b/server/src/tree-sitter/utils.ts index 87b9a293..d42a2fa0 100644 --- a/server/src/tree-sitter/utils.ts +++ b/server/src/tree-sitter/utils.ts @@ -78,13 +78,13 @@ export function isVariableReference (n: SyntaxNode): boolean { } /** - * Check if the node is an override other than `append`, `preprend` or `remove` + * Check if the node is an override other than `append`, `prepend` or `remove` */ export function isOverride (n: SyntaxNode): boolean { const parentType = n?.parent?.type switch (n.type) { case 'identifier': - return parentType === 'override' // As per the tree-sitter grammar, an identifier which has a parent of type override is an override other than `append`, `preprend` or `remove` + return parentType === 'override' // As per the tree-sitter grammar, an identifier which has a parent of type override is an override other than `append`, `prepend` or `remove` default: return false }