Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
c1c54e4
Enhance parser & lexer; add VSCode packaging
DaemonF0rge Feb 5, 2026
f5067c5
Add workspace check & indexing notification
DaemonF0rge Feb 6, 2026
7805011
Improve parsing, type inference, and analyzer
DaemonF0rge Feb 6, 2026
5b69d12
Handle nested generics & improve static completions
DaemonF0rge Feb 6, 2026
25bb953
Add module detection and cross-module diagnostics
DaemonF0rge Feb 6, 2026
ad94184
Add typedef and template resolution, diagnostics
DaemonF0rge Feb 6, 2026
9c8361e
Support multi-level chained member completion
DaemonF0rge Feb 6, 2026
0712ea8
Improve parser and add call-argument validation
DaemonF0rge Feb 7, 2026
858bfcc
Support preprocessor defines and parsing
DaemonF0rge Feb 7, 2026
fa1a01f
Template-aware type resolution and chain parsing
DaemonF0rge Feb 7, 2026
3d400d2
Add AST cache and indexing optimizations
DaemonF0rge Feb 8, 2026
56dffb4
Improve generic parsing and hover/type resolution
DaemonF0rge Feb 8, 2026
020d6a1
Refactor diagnostics: shared context & optimizations
DaemonF0rge Feb 8, 2026
6d66991
Improve parser local var detection; remove regex scan
DaemonF0rge Feb 8, 2026
2a2ae27
Track var scopeEnd and preprocessor regions
DaemonF0rge Feb 8, 2026
117d1a6
Remove AST cache and fix parsing bugs
DaemonF0rge Feb 9, 2026
ed23836
Move multi-line string check to Analyzer
DaemonF0rge Feb 9, 2026
f6e53fe
Strip inline comments before parsing
DaemonF0rge Feb 9, 2026
57166c0
Detect and resolve indexing after call chains
DaemonF0rge Feb 9, 2026
298a7b9
Set default enscript.includePaths to P:\scripts
DaemonF0rge Feb 9, 2026
229ca0b
Only report diagnostics for workspace files
DaemonF0rge Feb 9, 2026
f4ab031
Ignore commented params; reduce false positives
DaemonF0rge Feb 9, 2026
39782b4
Support implicit constructors via constructor index
DaemonF0rge Feb 9, 2026
d46ae15
Track and validate function return statements
DaemonF0rge Feb 12, 2026
d903b31
Add isOverride and modded-class override checks
DaemonF0rge Feb 13, 2026
71d9460
Improve return parsing and inheritance handling
DaemonF0rge Feb 13, 2026
55efd7a
Resolve method returns and add modded class checks
DaemonF0rge Feb 14, 2026
079198a
Parser error recovery and 'this' resolution
DaemonF0rge Feb 14, 2026
d0b13c2
Refine unknown method warning logic
DaemonF0rge Feb 16, 2026
e9fa758
Add DayZ config language & diagnostics
DaemonF0rge Feb 16, 2026
7182719
Normalize file URIs to lowercase on Windows
DaemonF0rge Feb 20, 2026
15853e8
Unify and robustify chain resolution
DaemonF0rge Feb 20, 2026
03aec19
Enhance hover: show overrides & inheritance
DaemonF0rge Feb 20, 2026
b0eeec0
Add comprehensive chain parsing/resolution tests
DaemonF0rge Feb 20, 2026
73621ed
Improve token lookup, indexing, and diagnostics
DaemonF0rge Feb 20, 2026
3ca1d95
Multi-root workspace & debounced diagnostics
DaemonF0rge Feb 21, 2026
8a4f0c8
Limit parser error recovery tokens
DaemonF0rge Feb 21, 2026
94fde5f
Limit angle-bracket walk-back to 64 tokens
DaemonF0rge Feb 21, 2026
ee5db49
Throttle indexing progress to 500ms
DaemonF0rge Feb 21, 2026
10df701
Clear debounce timer on document close
DaemonF0rge Feb 21, 2026
8911cef
Add revalidate notification for open enscript files
DaemonF0rge Feb 21, 2026
20db55c
Add skipPreprocRegion helper and reuse in lexer
DaemonF0rge Feb 21, 2026
b62524d
Treat 'vector' as static type in Analyzer
DaemonF0rge Feb 21, 2026
244cf9e
Improve template and type resolution/compatibility
DaemonF0rge Feb 26, 2026
4cbf8a9
Skip duplicate const field report in modded classes
DaemonF0rge Feb 28, 2026
9ea22c6
Handle watched files; fix generic/bit-shift parsing
DaemonF0rge Mar 5, 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
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ server/out
out/
node_modules/
*.tsbuildinfo
package-lock.json
package-lock.json
*.vsix
5 changes: 4 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
{
"editor.tabSize": 4,
"editor.insertSpaces": true,
"editor.detectIndentation": false
"editor.detectIndentation": false,
"files.associations": {
"*.c": "enscript"
}
}
22 changes: 22 additions & 0 deletions .vscodeignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Exclude development files from the packaged extension
.git/
.vscode/
src/
server/src/
test/
*.ts
*.map
tsconfig*.json
jest.config.js
.gitignore

# Include compiled output (override .gitignore)
!out/
!server/out/

# Exclude unnecessary node_modules files
node_modules/.bin/
node_modules/**/test/
node_modules/**/*.md
node_modules/**/*.ts
node_modules/**/.github/
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,15 @@ Find your extracted scripts folder (usually `P:\scripts`) and add it to user set

![syntax](https://raw.githubusercontent.com/yuvalino/enscript/refs/heads/main/media/syntax.jpg)

### DayZ `config.cpp` / `mod.cpp` basic highlighting

This extension now includes a separate lightweight language mode for DayZ config-style `config.cpp` and `mod.cpp` files.

- It provides basic highlighting for class blocks, key/value assignments, arrays, strings, numbers, comments, and preprocessor lines.
- It also provides lightweight warnings for common config mistakes (especially AI-generated ones), such as doubled backslashes in paths, mixed slash styles, accidental absolute Windows paths, and suspicious assignment/class declaration forms.
- It is intentionally minimal and isolated from the EnScript language server features.
- It only auto-associates files named `config.cpp` and `mod.cpp`, so regular C++ projects are not affected.

2. **Hover & Jump to Definition:** Indexed symbols have their own hover and may be Ctrl+Click'ed to jump to definition.

![definition.gif](https://raw.githubusercontent.com/yuvalino/enscript/refs/heads/main/media/definition.gif)
Expand Down
59 changes: 59 additions & 0 deletions language-configuration-dayzcpp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
{
"comments": {
"lineComment": "//",
"blockComment": [
"/*",
"*/"
]
},
"brackets": [
[
"{",
"}"
],
[
"[",
"]"
],
[
"(",
")"
]
],
"autoClosingPairs": [
{
"open": "{",
"close": "}"
},
{
"open": "[",
"close": "]"
},
{
"open": "(",
"close": ")"
},
{
"open": "\"",
"close": "\""
}
],
"surroundingPairs": [
[
"{",
"}"
],
[
"[",
"]"
],
[
"(",
")"
],
[
"\"",
"\""
]
]
}
31 changes: 30 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,29 @@
".cproj"
],
"configuration": "./language-configuration.json"
},
{
"id": "dayzcpp",
"aliases": [
"DayZ Config Cpp",
"dayzcpp"
],
"filenames": [
"config.cpp"
],
Comment on lines +39 to +41
Copy link

Copilot AI Feb 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

README and the diagnostic message mention mod.cpp, but the dayzcpp language contribution only auto-associates config.cpp. If mod.cpp should be supported, add it to this filenames list; otherwise update the docs/message to avoid misleading users.

Copilot uses AI. Check for mistakes.
"configuration": "./language-configuration-dayzcpp.json"
}
],
"grammars": [
{
"language": "enscript",
"scopeName": "source.enscript",
"path": "./syntaxes/enscript.tmLanguage.json"
},
{
"language": "dayzcpp",
"scopeName": "source.dayzcpp",
"path": "./syntaxes/dayzcpp.tmLanguage.json"
}
],
"commands": [
Expand All @@ -46,18 +62,30 @@
{
"command": "enscript.dumpDiagnostics",
"title": "Enscript: Dump Diagnostics"
},
{
"command": "enscript.checkWorkspace",
"title": "Enscript: Check All Workspace Files"
}
],
"configuration": {
"title": "Enfusion Script",
"properties": {
"enscript.includePaths": {
"type": "array",
"default": [],
"default": ["P:\\scripts"],
"description": "List of paths to index for base game data (e.g. P:\\scripts\\ folder)",
Comment on lines +76 to 77
Copy link

Copilot AI Feb 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Setting enscript.includePaths default to P:\\scripts is a Windows-specific path that will produce warnings/no-op indexing on non-Windows machines (and even on Windows if the drive mapping differs). Prefer defaulting to an empty array and documenting the typical path in README instead.

Suggested change
"default": ["P:\\scripts"],
"description": "List of paths to index for base game data (e.g. P:\\scripts\\ folder)",
"default": [],
"description": "List of paths to index for base game data (for example, on Windows: P:\\scripts\\ folder)",

Copilot uses AI. Check for mistakes.
"items": {
"type": "string"
}
},
"enscript.preprocessorDefines": {
"type": "array",
"default": [],
"description": "List of preprocessor symbols to treat as defined. When set, #ifdef blocks for these symbols will be processed instead of skipped (e.g. [\"ENF_DONE\"] to include proto declarations guarded by #ifdef ENF_DONE).",
"items": {
"type": "string"
}
}
}
}
Expand All @@ -81,6 +109,7 @@
"@types/jest": "^29.5.14",
"@types/node": "^22.15.18",
"@types/vscode": "^1.90.0",
"@vscode/vsce": "^3.7.1",
"jest": "^29.7.0",
"rimraf": "^5.0.5",
"ts-jest": "^29.3.4",
Expand Down
Loading