Help us shape the future of Go! Take the 2026 Go Developer Survey

cfmleditor-lsp

module
v0.1.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 11, 2026 License: MIT

README

cfmleditor-lsp

A Language Server Protocol (LSP) implementation for CFML / ColdFusion, written in Go.

Build

go build -o cfmleditor-lsp .

Run

The server communicates over stdio using JSON-RPC 2.0 with LSP headers:

./cfmleditor-lsp

Configure your editor to launch this binary as an LSP server for .cfm, .cfc, .cfml, and .cfs files.

Configuration

Place a .cfmleditor.json file in your project root to enable daemon mode and configure workspace indexing.

{
  "workspaceName": "myproject",
  "workspacePaths": [".", "../shared-lib"]
}
Field Required Description
workspaceName Yes Unique project name. Used to derive the daemon socket path so multiple projects don't collide.
workspacePaths No Relative paths to folders the LSP should treat as workspace roots. Resolved relative to the config file location.
Daemon mode

When .cfmleditor.json is found (in the current directory or one level up), the server starts in daemon mode:

  1. The first editor session becomes the daemon, listening on a Unix socket and serving LSP over stdio.
  2. Subsequent sessions connect to the existing daemon via the socket, sharing a single index.
  3. The daemon shuts down automatically when all editor sessions disconnect.

Without a config file the server runs in standalone mode — a single session with its own index.

Indexing behaviour
  • If workspaceIndexGlobs is set, only .cfc files matching those patterns are indexed.
  • If only workspacePaths is set, all .cfc files under those folders are indexed.
  • If neither is set, the LSP falls back to indexing workspace folders reported by the editor.

Status

  • Initialize / Shutdown / Exit
  • textDocument/didOpen
  • textDocument/didChange (full sync)
  • textDocument/didClose

Local Development

Add cfmleditor-lsp to your path

sudo ln -sf ~/development/github/cfmleditor-lsp/target/release/cfmleditor-lsp /usr/local/bin/cfmleditor-lsp

Directories

Path Synopsis
cmd
cfmleditor-lsp command
Package main is the entry point for the cfmleditor-lsp server.
Package main is the entry point for the cfmleditor-lsp server.
internal
cflint
Package cflint provides CFLint binary management and execution.
Package cflint provides CFLint binary management and execution.
daemon
Package daemon manages multi-session daemon mode and configuration.
Package daemon manages multi-session daemon mode and configuration.
formatter
Package formatter walks a tree-sitter concrete syntax tree produced by the cfml grammar and re-emits well-formatted CFML source.
Package formatter walks a tree-sitter concrete syntax tree produced by the cfml grammar and re-emits well-formatted CFML source.
funcdef
Package funcdef extracts user-defined function definitions from CFC source files.
Package funcdef extracts user-defined function definitions from CFC source files.
index
Package index maintains a searchable index of CFML function definitions.
Package index maintains a searchable index of CFML function definitions.
parser
Package parser provides tree-sitter parsing for CFML grammars.
Package parser provides tree-sitter parsing for CFML grammars.
server
Package server implements the CFML Language Server Protocol handler.
Package server implements the CFML Language Server Protocol handler.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL