uf ufls
Language server and diagnostics for the uf command-line configuration language. See gitlab.com/efronlicht/uf for more details.
Installation Prereqs
The extension bootstraps uf ufls locally when a .uf file opens. You need:
macOS
Install the Command Line Tools:
xcode-select --install
Or use Homebrew:
brew install go make
Debian / Ubuntu
sudo apt update
sudo apt install git build-essential make bash ca-certificates golang-go
If your distribution has Go older than 1.27, install the latest from go.dev/doc/install.
Alpine
apk add git go make bash ca-certificates
Windows
Use Git Bash, WSL, or MSYS2. Install Git, Go, and Make in that environment, then restart VS Code so it inherits the updated PATH.
Testing your installation
After installing the prereqs, confirm each tool is available:
git --version # git version 2.x or later
go version # go version 1.27 or later
make --version # GNU Make 4.x or later
bash --version # GNU bash 5.x or later
Open or create a .uf file in VS Code. The extension will clone the uf repository and run make init in the background. Check the ufls output channel (View → Output → ufls) to confirm:
bootstrap: cloning uf repository...
bootstrap: running make init...
bootstrap: ufls ready
Development
Build and package the extension from the repository root:
vscode-ufls/package.sh --force
Install locally for testing:
make vscode
The version increments automatically on each build (0.1.0 → 0.1.1 → ...).
Profiling
Profiling is off by default. Open the Command Palette with ⇧⌘P on macOS or Ctrl+Shift+P on Windows/Linux, then use these commands:
ufls: Start Profiling starts the local-only pprof HTTP server and restarts ufls.
ufls: Stop Profiling stops the pprof server and restarts ufls.
ufls: CPU Profile captures a 30-second CPU profile.
ufls: Heap Profile captures a heap profile.
ufls: Goroutine Profile captures a goroutine profile.
The three profile commands prompt for a destination before capturing. The default filename is ufls_TIMESTAMP.kind.pprof, for example ufls_2026-09-19T15-30-00.000Z.cpu.pprof.
Start profiling
Run ufls: Start Profiling, then capture a profile with one of the three profile commands, or open http://127.0.0.1:6060/debug/pprof/ in a browser.
Stop profiling
Run ufls: Stop Profiling from the Command Palette. The extension restarts ufls without the profiling listener.
Change the profiling address
The default address is 127.0.0.1:6060. To use another address, set ufls.profilingAddress in VS Code settings:
{
"ufls.profilingAddress": "127.0.0.1:6061"
}
Keep the address on loopback unless remote access is deliberate.