Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,11 @@ W → w Wq/WQ → wq Wqa/WQa/WQA → wqa Q → q Qa/QA → qa

Add new aliases to the `pairs({…})` table — one line, no boilerplate.

**Mason LSP servers** — `pyright` and `bash-language-server` are npm-based.
They are wrapped in `vim.fn.executable('npm') == 1` so hosts without npm (e.g.
GPU servers) skip them silently. Do not remove this guard or add new npm-dependent
servers outside of it.

## Version bump rules

- `fix:` commits → patch (`X.Y.Z+1`)
Expand Down
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [1.5.1] - 2026-05-06

### Fixed
- `nvim/init.lua`: Mason no longer attempts to install `pyright` and
`bash-language-server` on hosts without npm/Node.js. Both servers use npm as
their install backend; the unconditional `ensure_installed` caused two noisy
failure messages on every Neovim launch on GPU servers. They are now guarded
behind `vim.fn.executable('npm') == 1`. Resolves #23.

### Changed
- `CLAUDE.md`, `AGENTS.md`: documented the Mason npm-conditional LSP server
guard so agents and humans know not to remove it or add new npm-dependent
servers outside of it.

## [1.5.0] - 2026-05-05

### Added
Expand Down
7 changes: 7 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,13 @@ common Ex commands so accidental Shift-holding doesn't fail:
Add new aliases to the `pairs({…})` table at the bottom of `init.lua` — one line,
no per-command boilerplate.

**Mason LSP servers** — `pyright` and `bash-language-server` are installed by
Mason via npm. The config guards them behind `vim.fn.executable('npm') == 1` so
`ensure_installed` only includes them when npm is present on the host. Hosts
without Node.js (e.g. GPU servers) still get `clangd` and `lua_ls` (no npm
needed). Do not remove this guard or add other npm-dependent servers without
wrapping them in the same check.

---

## fzf integration
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.5.0
1.5.1
9 changes: 6 additions & 3 deletions nvim/.config/nvim/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -142,13 +142,16 @@ require('lazy').setup({
-- Server configs defined once; registration method differs by nvim version.
-- nvim 0.11+: vim.lsp.config/enable (new built-in API, no lspconfig on_attach)
-- nvim 0.9–0.10: lspconfig.server.setup() (classic API)
local servers = {
-- pyright and bashls install via npm; skip ensure_installed on hosts without npm.
local npm_servers = vim.fn.executable('npm') == 1 and {
pyright = {
capabilities = capabilities,
settings = { python = { analysis = { useLibraryCodeForTypes = true } } },
},
clangd = { capabilities = capabilities },
bashls = { capabilities = capabilities },
} or {}
local servers = vim.tbl_extend('force', {
clangd = { capabilities = capabilities },
lua_ls = {
capabilities = capabilities,
settings = {
Expand All @@ -159,7 +162,7 @@ require('lazy').setup({
},
},
},
}
}, npm_servers)

if vim.fn.has('nvim-0.11') == 1 then
require('mason-lspconfig').setup({
Expand Down
Loading