Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
e7ec200
Added plan files.
xxAtrain223 Aug 9, 2026
ffd3783
Add initial support for Rando Logic Script with language configuratio…
xxAtrain223 Aug 9, 2026
32f17f9
Add Tree-sitter parser header and test for RLS grammar
xxAtrain223 Aug 9, 2026
7053d9d
Add launch configuration and support for ternary expressions in RLS s…
xxAtrain223 Aug 9, 2026
ab55c12
Added package license and updated package.json.
xxAtrain223 Aug 9, 2026
98800f2
Add project library with manifest handling and source collection
xxAtrain223 Aug 10, 2026
bff8286
Add support for rls.json manifest handling in CLI and project loading
xxAtrain223 Aug 10, 2026
33ae627
Enhance project structure with JSON Schema validation, file resolutio…
xxAtrain223 Aug 10, 2026
5dacd2f
Add SourceText class with UTF-8 handling and position conversion methods
xxAtrain223 Aug 10, 2026
13a2ef6
Implement SourceIndex for enhanced syntax and name tracking in parser
xxAtrain223 Aug 10, 2026
c8de2ae
Span changes.
xxAtrain223 Aug 10, 2026
706d718
Implement SemanticIndex with SymbolId and related structures for enha…
xxAtrain223 Aug 11, 2026
7ca7d07
Enhance SemanticIndex with TypeRecord and CallRecord structures, and …
xxAtrain223 Aug 11, 2026
7da805f
Implement AnalysisSnapshot for managing source inputs and derived ind…
xxAtrain223 Aug 11, 2026
da77bbf
Add ExpectedTypeRecord structure and update SemanticIndex for type tr…
xxAtrain223 Aug 11, 2026
e6c7ef7
Refactor diagnostics handling and validation in semantic analysis
xxAtrain223 Aug 11, 2026
e332243
Add tests for AnalysisSnapshot and enhance diagnostics handling in se…
xxAtrain223 Aug 11, 2026
6537e6e
Implement Language Server Protocol (LSP) Components
xxAtrain223 Aug 12, 2026
ab23bd4
Implement document synchronization service and lifecycle management
xxAtrain223 Aug 12, 2026
8758e56
Add AnalysisScheduler for debounced analysis and scheduling of source…
xxAtrain223 Aug 12, 2026
9ccb64c
Implement Diagnostic Publisher and Outbound Message Queue
xxAtrain223 Aug 12, 2026
d65d903
Implement workspace service and routing for LSP
xxAtrain223 Aug 12, 2026
4ddccfa
Enhance analysis scheduler and diagnostics handling
xxAtrain223 Aug 14, 2026
de6f45e
Enhance diagnostics and analysis features with structured action data…
xxAtrain223 Aug 14, 2026
1e4b25a
Add Python setup and process smoke tests for LSP
xxAtrain223 Aug 14, 2026
f3d10cf
Implement VS Code Language Client Integration for Rando Logic Script
xxAtrain223 Aug 14, 2026
5eb0e54
Refactored CLI to allow running one transpiler in a project. Reorgani…
xxAtrain223 Aug 14, 2026
51e990b
Implement navigation service and definition link support; enhance lif…
xxAtrain223 Aug 14, 2026
ef06b59
Implement symbol navigation features: add references and document hig…
xxAtrain223 Aug 14, 2026
a3d121e
Enhance symbol navigation: implement document symbol hierarchy suppor…
xxAtrain223 Aug 15, 2026
e02790e
Implement workspace symbol support: add NavigationWorkspaceSymbol str…
xxAtrain223 Aug 15, 2026
f06855a
Enhance navigation service: add sameSpan function for span comparison…
xxAtrain223 Aug 15, 2026
530a24f
Implement presentation model and renderer: add structures for present…
xxAtrain223 Aug 15, 2026
4875ee3
Implement completion service: add CompletionService class, completion…
xxAtrain223 Aug 15, 2026
c96004f
Enhance completion service: add Property kind, support region body co…
xxAtrain223 Aug 15, 2026
7eef4ca
Enhance completion service: add MemberAccess context, support enum me…
xxAtrain223 Aug 15, 2026
fcf95d0
Enhance completion service: add support for named argument contexts, …
xxAtrain223 Aug 15, 2026
6eba9bd
Enhance completion service: add CallArgumentContext, improve handling…
xxAtrain223 Aug 15, 2026
853f977
Enhance completion service: add support for completion snippets, upda…
xxAtrain223 Aug 15, 2026
04cfc68
Refactor domain types and improve semantic handling for regions, even…
xxAtrain223 Aug 15, 2026
392a6cc
Enhance completion service: add configurable indentation for multilin…
xxAtrain223 Aug 15, 2026
78570c0
Enhance AnalysisScheduler and CompletionService: add awaitSnapshot me…
xxAtrain223 Aug 15, 2026
abf3314
Enhance completion service: add support for section entry completion,…
xxAtrain223 Aug 15, 2026
3452ec2
Enhance completion service: add support for exit label completion fro…
xxAtrain223 Aug 15, 2026
5f82a20
Enhance completion service: add support for concrete extern-enum wild…
xxAtrain223 Aug 15, 2026
0eae03f
Enhance completion service: add support for function parameter and ex…
xxAtrain223 Aug 15, 2026
57f6472
Enhance parser functionality: introduce ParseMode for strict and edit…
xxAtrain223 Aug 16, 2026
5fba8d0
Enhance editor syntax handling: implement parsing for enums and membe…
xxAtrain223 Aug 16, 2026
8840aa0
Enhance parser and editor syntax: update grammar rules for member acc…
xxAtrain223 Aug 16, 2026
553f0e5
Enhance parser and editor syntax: add support for call arguments, inc…
xxAtrain223 Aug 16, 2026
40d44a5
Enhance parser and editor syntax: add support for regions and section…
xxAtrain223 Aug 16, 2026
4c8c93b
Enhance editor syntax handling: add support for complete declarations…
xxAtrain223 Aug 16, 2026
cf4a019
Enhance recovery logic for calls: implement unique callable resolutio…
xxAtrain223 Aug 16, 2026
0a8a726
Enhance parser tests: add comprehensive tests for editor mode synchro…
xxAtrain223 Aug 16, 2026
7dec7eb
Implement signature help feature: add SignatureHelpService and relate…
xxAtrain223 Aug 16, 2026
62d5fe8
Add signature help and semantic token support: implement SignatureHel…
xxAtrain223 Aug 16, 2026
b252688
Add tests for signature help and argument recovery: implement tests f…
xxAtrain223 Aug 16, 2026
cd61239
Add detailed plan for incremental analysis: outline goals, dependenci…
xxAtrain223 Aug 16, 2026
bbb9d6d
Refactor SemanticTokensService constructor and enhance snapshot handl…
xxAtrain223 Aug 16, 2026
6531f4a
Add semantic token support and enhance syntax highlighting: define se…
xxAtrain223 Aug 16, 2026
620329e
Add hover support: implement HoverService and related functionality; …
xxAtrain223 Aug 16, 2026
6875085
Enhance hover and navigation services: improve descriptions for wildc…
xxAtrain223 Aug 16, 2026
b1e8437
Enhance hover and navigation services: improve descriptions for wildc…
xxAtrain223 Aug 16, 2026
e4e0da9
Enhance token generation logic: adjust handling of concrete pattern v…
xxAtrain223 Aug 16, 2026
5761542
Enhance semantic token handling: add support for highlighting built-i…
xxAtrain223 Aug 16, 2026
775c267
Merge branch 'developer_experience' of https://github.com/xxAtrain223…
xxAtrain223 Aug 16, 2026
1292acf
Enhance semantic index handling: add support for extern define declar…
xxAtrain223 Aug 16, 2026
48555bf
Enhance semantic token handling: update property and property declara…
xxAtrain223 Aug 16, 2026
8dae82d
Enhance semantic token handling: add support for logical operators in…
xxAtrain223 Aug 16, 2026
0afd25f
Enhance semantic token handling: add support for region categories in…
xxAtrain223 Aug 16, 2026
f4e95e6
Bug fix.
xxAtrain223 Aug 16, 2026
12e9368
Reordered enums
xxAtrain223 Aug 16, 2026
25381df
Checked off the manual inspection.
xxAtrain223 Aug 16, 2026
97a20f1
Enhance VS Code extension build process: add bundling script and upda…
xxAtrain223 Aug 16, 2026
581c2bc
CI fixes.
xxAtrain223 Aug 16, 2026
ff367e9
CI fixes.
xxAtrain223 Aug 16, 2026
5b76f74
CI fixes.
xxAtrain223 Aug 16, 2026
8f9d760
CI fixes.
xxAtrain223 Aug 16, 2026
1949276
CI fixes.
xxAtrain223 Aug 16, 2026
6b2edfd
CI fixes.
xxAtrain223 Aug 16, 2026
c539980
CI fixes.
xxAtrain223 Aug 16, 2026
3adcfcb
Bundle the language server before running extension.
xxAtrain223 Aug 17, 2026
bedbfd5
Enhance document handling by supporting untitled documents and improv…
xxAtrain223 Aug 18, 2026
04070f6
Implement rename service with multi-file support and diagnostics
xxAtrain223 Aug 19, 2026
1a322d2
Add exit target diagnostics for missing region declarations
xxAtrain223 Aug 19, 2026
babaa52
Add source identity canonicalization and corresponding tests
xxAtrain223 Aug 20, 2026
6a328f0
Add support for canonical URIs in DiagnosticPublisher and correspondi…
xxAtrain223 Aug 20, 2026
dc45a0a
Update minimum VS Code version.
xxAtrain223 Aug 20, 2026
5ba3e5e
feat: add release workflow and validate VSIX script
xxAtrain223 Aug 21, 2026
5580520
Update package and readme.
xxAtrain223 Aug 21, 2026
f957641
Revert back to latest OS.
xxAtrain223 Aug 21, 2026
d5cb336
CI fix.
xxAtrain223 Aug 21, 2026
a8e5ac7
CI fix.
xxAtrain223 Aug 21, 2026
e16dfec
CI fix.
xxAtrain223 Aug 21, 2026
8ff5a0b
CI fix.
xxAtrain223 Aug 21, 2026
7303142
Bundle the extension.
xxAtrain223 Aug 22, 2026
830129a
CI fix.
xxAtrain223 Aug 22, 2026
d282199
CI fix.
xxAtrain223 Aug 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 80 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,98 @@ permissions:

jobs:
build-and-test:
name: ${{ matrix.os }} build and test
name: ${{ matrix.target }} build, test, and package
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
include:
- os: ubuntu-latest
target: linux-x64
cmake_arguments: ''
- os: windows-latest
target: win32-x64
cmake_arguments: -A x64
- os: macos-15-intel
target: darwin-x64
cmake_arguments: ''

steps:
- name: Check out repository
uses: actions/checkout@v7

- name: Set up Python for process smoke tests
uses: actions/setup-python@v6
with:
python-version: '3.12'

- name: Set up Node for VS Code client tests
uses: actions/setup-node@v5
with:
node-version: 22

- name: Configure
run: cmake -S . -B build -DBUILD_TESTING=ON -DCMAKE_BUILD_TYPE=Release
run: >-
cmake -S . -B build
-DBUILD_TESTING=ON
-DCMAKE_BUILD_TYPE=Release
${{ matrix.cmake_arguments }}

- name: Build
run: cmake --build build --config Release --parallel

- name: Test
run: ctest --test-dir build --build-config Release --output-on-failure
run: ctest --test-dir build --build-config Release --output-on-failure

- name: Install VS Code client dependencies
working-directory: editors/vscode
run: npm ci

- name: Test VS Code language client on Linux
if: runner.os == 'Linux'
working-directory: editors/vscode
run: xvfb-run -a npm test

- name: Test VS Code language client
if: runner.os != 'Linux'
working-directory: editors/vscode
run: npm test

- name: Package targeted VSIX
working-directory: editors/vscode
env:
RLS_VSCODE_RELEASE_BUILD_DIRECTORY: build
run: npx --no-install vsce package --target ${{ matrix.target }} --out rando-logic-script-${{ matrix.target }}.vsix

- name: Validate targeted VSIX
working-directory: editors/vscode
run: npm run validate:vsix -- rando-logic-script-${{ matrix.target }}.vsix ${{ matrix.target }}

- name: Store validated VSIX
uses: actions/upload-artifact@v7
with:
name: rando-logic-script-${{ matrix.target }}
path: editors/vscode/rando-logic-script-${{ matrix.target }}.vsix
if-no-files-found: error
retention-days: 7

editor-grammar-tests:
name: Editor grammar tests
runs-on: ubuntu-latest

steps:
- name: Check out repository
uses: actions/checkout@v7

- name: Set up Node
uses: actions/setup-node@v5
with:
node-version: 22

- name: Test TextMate grammar
working-directory: tooling/textmate
run: npm ci && npm test

- name: Generate and test Tree-sitter grammar
working-directory: tooling/tree-sitter-rls
run: npm ci && npm run generate && npm test
166 changes: 166 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
name: Release VS Code extension

on:
push:
tags:
- 'v*'

permissions:
contents: read

jobs:
package:
name: Package ${{ matrix.target }}
runs-on: ${{ matrix.os }}
permissions:
contents: read
id-token: write
attestations: write
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
target: linux-x64
cmake_arguments: ''
server: build-vscode-release/lsp/rls_language_server
- os: windows-latest
target: win32-x64
cmake_arguments: -A x64
server: build-vscode-release/lsp/Release/rls_language_server.exe
- os: macos-15-intel
target: darwin-x64
cmake_arguments: ''
server: build-vscode-release/lsp/rls_language_server

steps:
- name: Check out repository
uses: actions/checkout@v7

- name: Set up Python for process smoke test
uses: actions/setup-python@v6
with:
python-version: '3.12'

- name: Set up Node for VSIX packaging
uses: actions/setup-node@v5
with:
node-version: 22

- name: Verify tag matches extension version
run: node -e "const actual=require('./editors/vscode/package.json').version; const tag=process.env.GITHUB_REF_NAME; if (tag !== 'v' + actual) throw new Error('Tag ' + tag + ' does not match extension v' + actual);"

- name: Configure release server
run: >-
cmake -S . -B build-vscode-release
-DCMAKE_BUILD_TYPE=Release
-DBUILD_TESTING=OFF
-DRLS_STATIC_MSVC_RUNTIME=ON
${{ matrix.cmake_arguments }}

- name: Build release server
run: cmake --build build-vscode-release --config Release --target rls_language_server --parallel

- name: Smoke test release server
run: python lsp/tests/process_smoke.py --server "${{ matrix.server }}"

- name: Install extension dependencies
working-directory: editors/vscode
run: npm ci

- name: Package targeted VSIX
working-directory: editors/vscode
env:
RLS_VSCODE_RELEASE_BUILD_DIRECTORY: build-vscode-release
run: npx --no-install vsce package --target ${{ matrix.target }} --out rando-logic-script-${{ github.ref_name }}-${{ matrix.target }}.vsix

- name: Validate targeted VSIX
working-directory: editors/vscode
run: npm run validate:vsix -- rando-logic-script-${{ github.ref_name }}-${{ matrix.target }}.vsix ${{ matrix.target }}

- name: Attest VSIX build provenance
uses: actions/attest@v4
with:
subject-path: editors/vscode/rando-logic-script-${{ github.ref_name }}-${{ matrix.target }}.vsix

- name: Store targeted VSIX
uses: actions/upload-artifact@v7
with:
name: rando-logic-script-${{ matrix.target }}
path: editors/vscode/rando-logic-script-${{ github.ref_name }}-${{ matrix.target }}.vsix
if-no-files-found: error
retention-days: 7

release:
name: Create GitHub release
needs: package
runs-on: ubuntu-latest
permissions:
contents: write

steps:
- name: Download validated VSIX files
uses: actions/download-artifact@v8
with:
pattern: rando-logic-script-*
path: artifacts
merge-multiple: true

- name: Verify release artifact set
shell: bash
run: |
mapfile -t artifacts < <(find artifacts -maxdepth 1 -name '*.vsix' -type f | sort)
test "${#artifacts[@]}" -eq 3
printf '%s\n' "${artifacts[@]}"

- name: Create GitHub release
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
run: gh release create "$GITHUB_REF_NAME" artifacts/*.vsix --verify-tag --generate-notes --title "Rando Logic Script $GITHUB_REF_NAME"

publish-marketplace:
name: Publish to Visual Studio Marketplace
needs: release
runs-on: ubuntu-latest
environment: marketplace-production
permissions:
contents: read
id-token: write

steps:
- name: Check out repository
uses: actions/checkout@v7

- name: Set up Node
uses: actions/setup-node@v5
with:
node-version: 22

- name: Install extension dependencies
working-directory: editors/vscode
run: npm ci

- name: Download validated VSIX files
uses: actions/download-artifact@v8
with:
pattern: rando-logic-script-*
path: artifacts
merge-multiple: true

- name: Sign in to Azure with GitHub OIDC
uses: azure/login@v3
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

- name: Publish validated VSIX files
working-directory: editors/vscode
shell: bash
run: |
mapfile -t packages < <(find ../../artifacts -maxdepth 1 -name '*.vsix' -type f | sort)
test "${#packages[@]}" -eq 3
for package in "${packages[@]}"; do
npx --no-install vsce publish --azure-credential --packagePath "$package"
done
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

# Linker files
*.ilk
*.exp

# Debugger Files
*.pdb
Expand Down Expand Up @@ -68,3 +69,11 @@ vcpkg_installed/
Testing/
.cache/
/.vs

# VS Code extension build and test output
editors/vscode/node_modules/
editors/vscode/out/
editors/vscode/dist/
editors/vscode/.vscode-test/
editors/vscode/server/
editors/vscode/*.vsix
17 changes: 17 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Run RLS Language Extension",
"type": "extensionHost",
"request": "launch",
"preLaunchTask": "Prepare RLS Language Extension",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}/editors/vscode"
],
"outFiles": [
"${workspaceFolder}/editors/vscode/out/**/*.js"
]
}
]
}
52 changes: 52 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Bundle RLS Language Server",
"type": "shell",
"command": "npm",
"args": [
"run",
"bundle:lsp"
],
"options": {
"cwd": "${workspaceFolder}/editors/vscode"
}
},
{
"label": "Package RLS VS Code Extension",
"type": "shell",
"command": "vsce",
"args": [
"package"
],
"options": {
"cwd": "${workspaceFolder}/editors/vscode"
},
"problemMatcher": [
"$msCompile"
]
},
{
"label": "Compile RLS VS Code Extension",
"type": "shell",
"command": "npm",
"args": [
"run",
"compile"
],
"options": {
"cwd": "${workspaceFolder}/editors/vscode"
},
"problemMatcher": "$tsc"
},
{
"label": "Prepare RLS Language Extension",
"dependsOrder": "sequence",
"dependsOn": [
"Bundle RLS Language Server",
"Compile RLS VS Code Extension"
]
}
]
}
Loading