BoxLang 🚀 A New JVM Dynamic Language Learn More...

bx-lsp

v1.11.0+10 BoxLang Modules

⚡︎ BoxLang Module: bx-lsp

This is a BoxLang module that implements Microsoft's Language Server Protocol. You most likely will not want to install this module directly. This modules is used by IDE's that also implement the LSP in order to provide a rich editing experience.

Check out the official BoxLang VSCode extension for more information and an example of this project being used.

Ortus Sponsors

BoxLang is a professional open-source project and it is completely funded by the community and Ortus Solutions, Corp. Ortus Patreons get many benefits like a cfcasts account, a FORGEBOX Pro account and so much more. If you are interested in becoming a sponsor, please visit our patronage page: https://patreon.com/ortussolutions

Configuration

The BoxLang LSP is controlled through three separate configuration systems:

System File Purpose
IDE Workspace Settingsboxlang.lsp.* in your IDE settingsLSP behavior & performance
Project Mappingsboxlang.json at workspace rootVirtual paths, classpaths, module directories
Lint Rules.bxlint.json at workspace rootStatic analysis rule toggles and severity

See the Configuration Reference for the complete list of all settings, types, defaults, and descriptions.

Live Reload Behavior

  • The server watches .bxlint.json using both LSP file events (if supported) and a fallback filesystem watcher.
  • On change: cache invalidated → config reloaded → open documents reparsed → diagnostics republished.
  • Watcher debounce is minimal; rapid saves may still trigger multiple reloads (acceptable for now).

Troubleshooting

Symptom Possible Cause Action
Config edits ignoredFile not at workspace rootMove .bxlint.json to root folder recognized by client
Rules not disablingRule id typoCheck the rule ID in the Configuration Reference
Paths not filteredGlobs mismatched OS separatorsAlways use forward slashes /

THE DAILY BREAD

"I am the way, and the truth, and the life; no one comes to the Father, but by me (JESUS)" Jn 14:1-12

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.


Unreleased

1.11.0 - 2026-05-30

Added

  • Commands to generate a starter .bxlint.json, create a .bxformat.json, and convert existing .cfformat.json or .cfconfig.json files into BoxLang formatter settings from the IDE
  • Rule ID completions for bxlint:disable and bxlint:enable comments, with inline documentation for each available lint rule
  • Comment-based bxlint suppression directives with class- and function-scoped enable/disable support
  • Query parameter diagnostics that flag unescaped interpolations and missing cfsqltype attributes on <cfqueryparam>, with quick fixes and refactor actions
  • Shared .bxlint.json workspace settings for mappings and experimental formatter enablement, with generated schema and config reference docs
  • New AGENTS.md to support opencode and AI coding assistants
  • New Gradle wrapper

Fixed

  • Invalid extends diagnostics now surface likely mapping matches and offer quick fixes that add mappings to Application.bx, boxlang.json, or .bxlint.json
  • .bxlint.json changes now refresh mappings, indexing, formatting capabilities, and diagnostics without requiring a restart
  • Unused import diagnostics no longer flag imports that are only referenced through static method call sites
  • Circular dependency between assemble, shadowJar, and build tasks

Updates

  • Updated build.gradle to use modern Gradle features and dependencies
  • Updated to use the BoxLang formatter runtime
  • Upgraded LSP4J from 0.24.0 to 1.0.0
  • Upgraded Guava from 33.5.0-jre to 33.6.0-jre
  • Upgraded Spotless from 8.4.0 to 8.6.0
  • Upgraded Shadow plugin from 9.4.1 to 9.4.2
  • Upgraded Jackson databind from 2.20.0 to 2.21.0
  • Upgraded Gradle wrapper from 9.5.0 to 9.5.1
  • Upgraded multiple CI action versions (upload-artifact, download-artifact, checkout, etc.)
  • Embedded Gradle in CI instead of using setup action

1.10.0 - 2026-04-27

Added

  • ColdBox detection with implicit mapping support for workspace resolution
  • User-setting mappings for additional workspace path resolution
  • Workspace mapping reindexing capability
  • Code formatting support via LSP (behind feature flag)
  • Detection for functions used as arguments to improve unused-function analysis
  • Diagnostic suppression annotation support (e.g., @bxlint:disable)
  • Bxlint rule completion in .bxlint configuration files
  • Lint rules for unescaped query parameters
  • Lint rules for missing cfsqltype attribute
  • Query parameter diagnostic fixes
  • Configuration system improvements with automatic documentation generation

Fixed

  • Test failures on Windows
  • Eager dependency loading for better startup reliability
  • Improved initial parse pass for better performance
  • CF transpiler skipped during parse for improved performance
  • BLIDE-289 bug fix

Updates

  • Renamed Java project
  • Bumped BoxLang minimum version
  • VSCode mappings combined with workspace mappings

1.9.0 - 2026-04-02

Added

  • Go to Type Definition — navigate from variable to its type's class definition
  • Go to Implementation — navigate from interface/abstract declarations to concrete implementations
  • Workspace Symbols — search symbols across the entire workspace
  • Semantic tokens for calls, member access, declarations, and declared properties
  • Document Symbols hierarchical improvements (outline view with hierarchy and kind icons)
  • Signature help for function calls
  • BXM Tag completion with rich Markdown documentation
  • Completion context detection framework for intelligent completion triggers
  • Member access / dot completion (intelligent completions after obj.)
  • Import path completion for BoxLang classes (package-style imports)
  • Named argument completion in function calls
  • Scope-aware variable completion
  • Class and type completion with auto-import
  • Function completion for both BIFs and UDFs
  • Snippet completions for common BoxLang patterns
  • Project index with persistent cache and freshness validation
  • Hover support for variables, functions, classes, and interfaces
  • Go-to-definition for variables, functions, classes, interfaces, and imports
  • Find references for variables, functions, classes, and interfaces
  • Variable type insights (BLIDE-224)
  • Context-aware auto complete for keywords, references, arguments, and imports (BLIDE-213)
  • Auto import support on save (BLIDE-270)
  • API for querying the project index
  • Improved LSP setting documentation (BLIDIE-277)

Fixed

  • Duplicate diagnostics in editor (BLIDE-272)
  • Improved interface method diagnostics (BLIDE-271)
  • Unreachable code warning for finally blocks after return
  • Diagnostic range improvements for invalid extends/implements references
  • Memory threshold notification handling improvements
  • File lookup improvements for sub-folder completions
  • Bxlint config exclusion verification and mapping bug fix
  • Case-insensitive method lookup for BoxLang compatibility
  • Go-to-definition for inherited methods and cross-file methods
  • Go-to-definition for template-level variables in BXM files
  • Package-qualified import resolution

Updates

  • Improved project indexing with persistent cache
  • Enhanced variable type inference via VariableTypeCollectorVisitor

1.5.0 - 2025-10-16

1.3.0 - 2025-10-03

1.3.0 - 2025-10-03

1.2.0 - 2025-09-16

  • Change the way background processing works to prevent overwhelming the system
  • Add settings for the user to control how background processing happens
  • Add additional logging

1.1.0 - 2025-09-03

  • Add var scoping check for CFML files
  • Add diagnostic for unused variables
  • Lots of additional tests
  • Coverted LSP to be a BoxLang module
  • BLIDE-96 Added version info

$ box install bx-lsp

No collaborators yet.
     
  • {{ getFullDate("2024-12-29T04:09:21Z") }}
  • {{ getFullDate("2026-05-30T05:57:17Z") }}
  • 2,244
  • 3,415