Adds an `expert` server entry (binary `expert`, invoked `expert --stdio`)
to the built-in LSP defaults, auto-detected for Mix projects
(`mix.exs`/`mix.lock`). Placed after `elixirls` so elixir-ls remains the
primary navigation server when both binaries are installed; this keeps the
default getServerForFile() behavior unchanged. Absent-binary setups are
unaffected by loadConfig's PATH/root-marker gating.
Includes a docs row, changelog entry, and a regression test pinning that
`.ex` files match `expert` and that `elixirls` still sorts ahead of it.
- Updated root marker detection to read the directory once and match glob markers against top-level entries, preventing recursive scans when checking project roots.
- Adjusted root-marker glob error handling to warn on directory listing failures and treat the marker set as absent when unreadable.
- Reduced marksman's configured warmup timeout from 15,000 ms to 2,000 ms in LSP defaults.
- Removed built-in `taplo` from `src/lsp/defaults.json`, so TOML files no longer start a default LSP server.
- Condensed many `defaults.json` arrays and option blocks to a compact single-line style.
Servers like marksman (.NET) write [INF]/[DBG] startup logs to stderr.
peekStderr() captures these and includes them verbatim in the warning
message, producing confusing output.
Filter timestamped [INF]/[DBG]/[VRB] lines before surfacing stderr as
error messages. Also give marksman a 15s warmupTimeoutMs — its .NET
runtime needs longer than the 5s default on arm64.
Fixes#667
The fwcd/kotlin-language-server is deprecated in favor of the official
JetBrains Kotlin LSP (github.com/Kotlin/kotlin-lsp). Update the default
server entry to use kotlin-lsp with --stdio arg.
Install: brew install JetBrains/utils/kotlin-lsp
- Added SwiftLint linter client with JSON reporter support for Swift file linting.
- Changed SwiftLint configuration to use 'lint' command with JSON reporter for structured output.
- Changed bash.virtualTerminal default setting from 'on' to 'off' for standard non-interactive execution.
- Implemented SwiftLintClient with lint() method that executes swiftlint with JSON output and converts violations to LSP diagnostics.
- Added bash.virtualTerminal settings option with 'on' (PTY-backed interactive) and 'off' (standard non-interactive) values.