FLE LSP ๐ก
February 10, 2026 ยท View on GitHub
A high-performance Language Server Protocol implementation for Fast Log Entry (FLE) ham radio logbooks.
โก TL;DR: Quick Start
What is it? A tool that adds IDE-like features (errors, completions, formatting) to your FLE logging workflow.
Why use it? Catch logging errors instantly, automate formatting, and navigate thousands of QSOs with ease.
How to start?
- Build:
go build -o fle-lsp ./cmd/main.go - Configure: Add the binary to your PATH and point your favorite LSP client (VS Code, Neovim, etc.) to it.
โจ Features
FLE LSP transforms your text editor into a powerful radio logging workstation:
๐ Real-time Intelligence
- Instant Diagnostics: Catches syntax errors, invalid dates, and out-of-order timestamps as you type.
- Smart Autocomplete:
- Bands (160m - 70cm) and Modes (CW, SSB, FT8, etc.).
- Dynamic current UTC time and date suggestions.
- Header keywords (
mycall,mygrid,operator, etc.). - MyGrid: Type
mygridto auto-suggest your current Maidenhead locator from:- GPS: Direct TCP link to local
gpsd(supportscgps/gpsmon). - GPredict: Configured ground stations in
~/.config/Gpredict/. - Xastir: Station location from
~/.xastir/config/xastir.cnf.
- GPS: Direct TCP link to local
- Contextual Hover: Hover over any QSO to reveal:
- Persistent state (Date, Band, Mode).
- Contact Statistics: Number of times you've worked this callsign.
- DXCC Info: Country and entity details (supports all countries + European microstates & French territories).
- Quick Fixes: Automatically correct date formats (e.g.,
DD/MM/YYYYโYYYY-MM-DD). - GeoJSON Export: Instant export of your logs to a
.geojsonfile for visualization in tools like geojson.io or QGIS. Uses standardwindow/showDocumentto auto-open the result.
๐ ๏ธ Professional Layout & Formatting
- Auto-Formatting: Automatically normalizes Maidenhead grids (e.g.,
jn38qrโJN38qr), callsigns, and modes. - Document Hierarchy: Navigate complex logs via a structured outline (Year > Month > Day > QSO).
- Smart Folding: Collapse entire years or months to focus on your current session.
- Inlay Hints:
- Distance/Bearing: Instant calculations from your
mygridto the worked callsign. - Daily Statistics: Real-time QSO counts per session directly in the editor.
- Distance/Bearing: Instant calculations from your
- Semantic Highlighting: Rich, context-aware coloring for all FLE elements.
Tip
Use the included FLE Original theme in VS Code for the best semantic highlighting experience.
๐ Editor Setup Guides
Zed (Recommended)
The Zed extension supports both LSP features and Tree-sitter highlighting.
- Download the
zed-supportfolder. - Open Zed and drag-and-drop the
zed-supportfolder into the editor to install it as a Dev Extension. - In your
settings.json, configure the LSP path:
{
"lsp": {
"fle": {
"binary": { "path": "/path/to/fle-lsp" }
}
},
"languages": {
"fle": {
"semantic_tokens": "combined",
"inlay_hints": { "show_background": true, "enabled": true }
}
}
}
Helix (hx)
- Add to your
~/.config/helix/languages.toml:
[[language]]
name = "fle"
scope = "source.fle"
injection-regex = "fle"
file-types = ["fle"]
comment-token = "#"
language-servers = [ "fle-lsp" ]
[language-server.fle-lsp]
command = "fle-lsp"
- Copy
zed-support/languages/fle/highlights.scmto~/.config/helix/runtime/queries/fle/highlights.scmfor Tree-sitter support.
Neovim (Built-in LSP)
Add this to your init.lua:
-- Register .fle filetype
vim.filetype.add({ extension = { fle = "fle" } })
-- Attach LSP
vim.api.nvim_create_autocmd("FileType", {
pattern = "fle",
callback = function()
vim.lsp.start({
name = "fle-lsp",
cmd = { "fle-lsp" },
root_dir = vim.fn.getcwd(),
})
end,
})
VS Code
- Navigate to
vs-code-support/and runnpm install. - Open the folder in VS Code and press
F5to launch.
๐ ๏ธ Development
Local Build
go build -o fle-lsp ./cmd/main.go
Quality Control
make lint # Run golangci-lint
go test ./... # Run full test suite
๐ Resources
Maintained by F4JXQ