Skip to content

Releases: DaemonForge/dfenscript

v0.2.2

14 Mar 20:05
da85a79

Choose a tag to compare

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

08 Mar 20:44
e315d4a

Choose a tag to compare

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

05 Mar 15:58

Choose a tag to compare

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 override keyword
  • Override Without Parent Warning — flags override on 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 Managed as a wildcard type alongside Class/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 extends clause generic args
  • const field redeclaration in modded class is 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 .c files (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 #ifdef blocks 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