Releases: DaemonForge/dfenscript
Releases · DaemonForge/dfenscript
v0.2.2
What's Changed
- V0.2.2 - Better Diagnostics by @DaemonF0rge in #5
Introduces several improvements to the Enfusion Script language server, focusing on enhanced parsing and diagnostics, better handling of file events, and support for additional language features. The most significant changes include improved detection of symbols and types within function bodies for more accurate diagnostics, robust handling of file closures and deletions, and parser enhancements for variable declarations and enum member separation.
Full Changelog: v0.2.1...v0.2.2
Fixing Some Minor Bugs
What's Changed
- Workspace scope settings allowing you to now set different included scripts and pre processor defines per workspace
- Clean up dead code and fix signature help offset regression
Track indexing state with indexingPromise/indexingComplete and await initial indexing in the checkWorkspace request to ensure checks run against a fully indexed workspace. Filter diagnostics to workspace files only (using Analyzer.instance().isWorkspaceFile) and reuse a single Analyzer instance for checks; improve logging to report checked vs found files. In fs utilities, treat symlinked directories as directories by checking fs.stat for symlinks, so recursive file discovery correctly skips and descends symlinked folders (while still skipping node_modules, .git, .svn). by @DaemonF0rge in #4
Full Changelog: v0.2.0...v0.2.1
Initial DF Version 0.2.0
DaemonForge Enfusion Script v0.2.0 — Release Notes
Fork of yuvalino/enscript
New: DayZ `config.cpp Language Support
- Added a separate lightweight language mode for DayZ config-style files
- Basic syntax highlighting for class blocks, key/value assignments, arrays, strings, numbers, comments, and preprocessor lines
- Lightweight diagnostics for common config mistakes (especially AI-generated ones): doubled backslashes in paths, mixed slash styles, accidental absolute Windows paths, and suspicious assignment/class declaration forms
- Only auto-associates
config.cpp— does not affect regular C++ projects
New: Diagnostics Engine
- Type Checking on Functions — argument types validated against function signatures
- Type Warnings — detects type mismatches in assignments and expressions
- Primitive Type Mismatch Errors — catches incorrect primitive type usage
- Unknown Methods — flags calls to methods that don't exist on the resolved type
- Casting Warnings — warns about unsafe or unnecessary casts
- Missing Override Warning — detects methods that override a parent but lack the
overridekeyword - Override Without Parent Warning — flags
overrideon methods that don't actually override anything - Ternary Operator Errors — catches use of
? :, which is not supported in Enforce Script - Cross-Module Errors — detects when a type is used from the wrong module level
Type System Improvements
- Expanded "is known type" checks to include enums and typedefs (fixes false negatives on unrelated types)
- Added
Managedas a wildcard type alongsideClass/auto/typename(fixes false positives) - Simplified enum compatibility — enums are treated as always-compatible (loose ints in Enforce Script)
- Added typedef resolution before type compatibility checks
- Template class resolution through inheritance — walks the inheritance chain to resolve template params to concrete type args
- Enhanced method resolution to build template maps from
extendsclause generic args constfield redeclaration inmodded classis no longer flagged as a duplicate (this is the legitimate override pattern in Enforce Script)
Parser Fixes
- Nested generics
>>— fixed>>being incorrectly parsed as a bit-shift operator inside nested generic types (e.g.Param1<array<autoptr BasicMapMarker>>) <<handling — fixed pre-existing bug where<<was not handled correctly in argument parsing
File Watcher for External Edits
- The server now detects externally changed
.cfiles (e.g. edits by Copilot or other tools to files not open in the editor) and re-reads/re-indexes them from disk - Proper handling of file deletions
- After reindexing, automatically re-validates all open documents
New Commands
- Enscript: Check All Workspace Files — runs diagnostics across the entire workspace and reports a summary
- Enscript: Dump Diagnostics — exports all current diagnostics as a formatted JSON document
Status Bar
- Added indexing progress indicator showing file count and percentage during workspace indexing
- Auto-hides after indexing is complete
New Configuration
enscript.preprocessorDefines— list of preprocessor symbols to treat as defined, allowing#ifdefblocks for those symbols to be processed instead of skipped (e.g.["ENF_DONE"]to include proto declarations)
Function Chain Resolution
- Full chain resolution across modded classes and included files