Merge pull request 'tcl_language_support' (#9) from tcl_language_support into main
/ build_and_publish (push) Failing after 5s
/ build_and_publish (push) Failing after 5s
Reviewed-on: #9
This commit was merged in pull request #9.
This commit is contained in:
@@ -1,37 +1,41 @@
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "*"
|
||||
push:
|
||||
tags:
|
||||
- "*"
|
||||
jobs:
|
||||
build_and_publish:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
- name: GitHub Tag Name example
|
||||
run: |
|
||||
echo "Tag name from GITHUB_REF_NAME: $GITHUB_REF_NAME"
|
||||
echo "Tag name from github.ref_name: ${{ github.ref_name }}"
|
||||
- name: Install NodeJS
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
- name: Install NPM Packages
|
||||
run: npm i
|
||||
- name: Install VSCE
|
||||
run: npm -g i @vscode/vsce
|
||||
- name: Build Package Files
|
||||
run: npm run package
|
||||
- name: Update package.json Version
|
||||
run: npm version ${{ github.ref_name }} --no-git-tag-version
|
||||
- name: Commit and Push Changes
|
||||
run: |
|
||||
git config user.name "${{ vars.USERNAME_GIT }}"
|
||||
git config user.email "${{ vars.EMAIL_GIT }}"
|
||||
git add package.json
|
||||
git commit -m "Update version to ${{ github.ref_name }}"
|
||||
git push origin HEAD:main
|
||||
- name: Publish to Visual Studio Marketplace
|
||||
run: vsce publish
|
||||
env:
|
||||
VSCE_PAT: ${{ secrets.VSCODE_MARKETPALCE }}
|
||||
build_and_publish:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
- name: GitHub Tag Name example
|
||||
run: |
|
||||
echo "Tag name from GITHUB_REF_NAME: $GITHUB_REF_NAME"
|
||||
echo "Tag name from github.ref_name: ${{ github.ref_name }}"
|
||||
- name: Install NodeJS
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
- name: Install NPM Packages
|
||||
run: |
|
||||
npm i /
|
||||
cd ./client
|
||||
npm i
|
||||
cd ..
|
||||
- name: Install VSCE
|
||||
run: npm -g i @vscode/vsce
|
||||
- name: Build Package Files
|
||||
run: npm run package
|
||||
- name: Update package.json Version
|
||||
run: npm version ${{ github.ref_name }} --no-git-tag-version
|
||||
- name: Commit and Push Changes
|
||||
run: |
|
||||
git config user.name "${{ vars.USERNAME_GIT }}"
|
||||
git config user.email "${{ vars.EMAIL_GIT }}"
|
||||
git add package.json
|
||||
git commit -m "Update version to ${{ github.ref_name }}"
|
||||
git push origin HEAD:main
|
||||
- name: Publish to Visual Studio Marketplace
|
||||
run: vsce publish
|
||||
env:
|
||||
VSCE_PAT: ${{ secrets.VSCODE_MARKETPALCE }}
|
||||
|
||||
@@ -1,81 +0,0 @@
|
||||
# tokens.py
|
||||
from typing import List
|
||||
import attrs
|
||||
import enum
|
||||
from lark import Tree, Token
|
||||
|
||||
# Legend must match the client
|
||||
SEMANTIC_TOKEN_TYPES = {
|
||||
"keyword": 0,
|
||||
"variable": 2,
|
||||
"string": 3,
|
||||
}
|
||||
SEMANTIC_TOKEN_MODIFIERS = {
|
||||
"declaration": 1 << 0,
|
||||
}
|
||||
|
||||
|
||||
class TokenModifier(enum.IntFlag):
|
||||
deprecated = enum.auto()
|
||||
readonly = enum.auto()
|
||||
defaultLibrary = enum.auto()
|
||||
definition = enum.auto()
|
||||
|
||||
|
||||
@attrs.define
|
||||
class TokenData:
|
||||
line: int
|
||||
offset: int
|
||||
text: str
|
||||
|
||||
tok_type: str = ""
|
||||
tok_modifiers: List[TokenModifier] = attrs.field(factory=list)
|
||||
|
||||
|
||||
TokenTypes = ["keyword", "variable", "function", "operator", "parameter", "type"]
|
||||
|
||||
|
||||
def collect_semantic_tokens(tree: Tree) -> list[int]:
|
||||
"""
|
||||
Walk the parse tree and return a flat LSP semanticTokens/full array:
|
||||
[line, char, length, tokenType, tokenModifiers, …]
|
||||
"""
|
||||
data = []
|
||||
for tok in tree.scan_values(lambda v: isinstance(v, Token)):
|
||||
# 'set' keyword
|
||||
if tok.type == "SET":
|
||||
data.append(
|
||||
[
|
||||
tok.line - 1,
|
||||
tok.column - 1,
|
||||
len(tok.value),
|
||||
SEMANTIC_TOKEN_TYPES["keyword"],
|
||||
0,
|
||||
]
|
||||
)
|
||||
# variable being declared
|
||||
elif tok.type == "NAME":
|
||||
data.append(
|
||||
[
|
||||
tok.line - 1,
|
||||
tok.column - 1,
|
||||
len(tok.value),
|
||||
SEMANTIC_TOKEN_TYPES["variable"],
|
||||
SEMANTIC_TOKEN_MODIFIERS["declaration"],
|
||||
]
|
||||
)
|
||||
# string literal
|
||||
elif tok.type == "STRING":
|
||||
data.append(
|
||||
[
|
||||
tok.line - 1,
|
||||
tok.column - 1,
|
||||
len(tok.value),
|
||||
SEMANTIC_TOKEN_TYPES["string"],
|
||||
0,
|
||||
]
|
||||
)
|
||||
|
||||
# sort by position and flatten
|
||||
data.sort(key=lambda x: (x[0], x[1]))
|
||||
return [p for token in data for p in token]
|
||||
Reference in New Issue
Block a user