Skip to content

Conversation

@NobbZ
Copy link
Owner

@NobbZ NobbZ commented Jan 14, 2026

Summary by CodeRabbit

  • New Features

    • Added schema support for JSON, YAML, and TOML files via language server configurations with SchemaStore integration for enhanced validation and completions.
  • Documentation

    • Updated documentation describing schema support for JSON/YAML/TOML language servers.
  • Refactor

    • Code formatting and structural improvements for clarity.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 14, 2026

📝 Walkthrough

Walkthrough

This PR integrates SchemaStore support for JSON, YAML, and TOML language servers in Neovim. It adds three LSP client configurations that use SchemaStore for schema validation, introduces the SchemaStore plugin as a dependency, and includes refactoring of Nix utility functions and minor formatting adjustments.

Changes

Cohort / File(s) Summary
Schema Support Documentation
AGENTS.md
Documents new schema support for JSON/YAML/TOML via LSPs configured with SchemaStore for $schema-based validation.
SchemaStore Dependency
npins/sources.json
Adds new pin entry for nvim-SchemaStore from GitHub (b0o/SchemaStore.nvim) on main branch.
LSP Client Configurations
plugins/nobbz/lua/nobbz/lsp/clients/json.lua, yaml.lua, toml.lua
Three new Lua modules configuring jsonls, yamlls, and taplo clients respectively, each integrating SchemaStore schemas, enabling validation, and attaching default handlers.
Runtime Dependencies
nvim.nix
Adds vscode-json-languageserver, yaml-language-server, and taplo as runtime dependencies in both top-level and inner runtime blocks.
Plugin Configuration
plugins/default.nix
Disables SchemaStore plugin by default via new SchemaStore = false entry in optionalPlugins.
Nix Utility Refactoring
npins/default.nix
Refactors mkFunctor, Range, mayOverride, and mkSource with adjusted let-binding styles, formatting, and conditional branches; functional behavior preserved.
Formatting Tweaks
plugins/nobbz/lua/nobbz/plugins/surround.lua
Adds trailing commas to raw\_string\_configs entries for rust, elixir, python, and cpp; no semantic changes.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • more lazy loading #35: Modifies optionalPlugins alongside this PR's addition of SchemaStore entry.
  • update everything #91: Changes the npins layer (default.nix and sources.json) similarly to this PR's refactoring and pin additions.
  • augment #34: Introduces the optionalPlugins set that this PR adds SchemaStore to.

Poem

🐰 A nibble of schemas, so neat and so fine,
JSON and YAML and TOML align,
SchemaStore whispers what's valid and true,
Language servers dance with schemas anew!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'enable proper JSON/YAML/TOML support' directly and specifically summarizes the main objective of the pull request, which adds LSP client configurations for JSON, YAML, and TOML with schema support.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds comprehensive LSP support for JSON, YAML, and TOML file formats by introducing three new language servers (jsonls, yamlls, taplo) with schema validation powered by SchemaStore.nvim.

Changes:

  • Added LSP client configurations for JSON (jsonls), YAML (yamlls), and TOML (taplo) with SchemaStore integration
  • Registered SchemaStore.nvim plugin as a mandatory dependency
  • Added LSP binaries to PATH via nvim.nix runtime dependencies
  • Applied trailing comma formatting fixes to surround.lua for consistency
  • Updated AGENTS.md documentation with schema support information

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated no comments.

Show a summary per file
File Description
plugins/nobbz/lua/nobbz/lsp/clients/yaml.lua New LSP client for YAML with SchemaStore schema validation
plugins/nobbz/lua/nobbz/lsp/clients/toml.lua New LSP client for TOML (taplo) with diagnostic and completion support
plugins/nobbz/lua/nobbz/lsp/clients/json.lua New LSP client for JSON with SchemaStore schema validation
plugins/default.nix Added SchemaStore plugin as mandatory dependency
nvim.nix Added jsonls, yamlls, and taplo LSP binaries to PATH
npins/sources.json Pinned SchemaStore.nvim plugin source
npins/default.nix Auto-generated file reformatted by npins tooling
plugins/nobbz/lua/nobbz/plugins/surround.lua Applied trailing comma formatting to table entries
AGENTS.md Added documentation note about schema support for JSON/YAML/TOML

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Fix all issues with AI agents
In `@nvim.nix`:
- Around line 13-15: The taplo entry in nvim.nix only provides the CLI and lacks
LSP support because nixpkgs builds omit the "lsp" cargo feature; update nvim.nix
to either replace the plain taplo with a custom derivation that enables the
"lsp" feature (using buildRustPackage override), point to an upstream taplo
release that ships LSP, or adjust the LSP client config to run "taplo lsp stdio"
(while keeping vscode-json-languageserver and yaml-language-server unchanged);
reference the taplo symbol in the file and modify its derivation or the LSP
command invocation to restore TOML schema/LSP functionality.

In `@plugins/nobbz/lua/nobbz/lsp/clients/json.lua`:
- Around line 1-13: The module currently returns the jsonls LSP config but
doesn't register it with the health system; add a call to
require("nobbz.health").register_lsp("jsonls") when this file is loaded (for
example immediately before the return or right after defining the config table)
so the LSP registers with health checks; ensure you reference the exact name
"jsonls" in the register_lsp call and keep the existing return value (no other
changes to the settings or helpers required).

In `@plugins/nobbz/lua/nobbz/lsp/clients/toml.lua`:
- Around line 1-17: The module is missing LSP health registration; add a call to
require("nobbz.health").register_lsp("taplo") (a side-effecting registration) in
this file so the Taplo client is registered with the health system—for example,
after the existing require("nobbz.lsp.helpers") call or just before the module's
return; ensure the string matches the client name ("taplo") and do not change
the returned table (name = "taplo", ft = "toml", etc.).

In `@plugins/nobbz/lua/nobbz/lsp/clients/yaml.lua`:
- Around line 1-15: The YAML LSP config doesn't register with health checks; add
a call to require("nobbz.health").register_lsp("yamlls") so the server appears
in the health system—place the registration before the module is returned (e.g.,
after the helpers require or just before the return) and keep the literal server
name "yamlls"; you can call it inline
(require("nobbz.health").register_lsp("yamlls")) to avoid adding new variables.
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between eb7f13f and a3414e5.

📒 Files selected for processing (9)
  • AGENTS.md
  • npins/default.nix
  • npins/sources.json
  • nvim.nix
  • plugins/default.nix
  • plugins/nobbz/lua/nobbz/lsp/clients/json.lua
  • plugins/nobbz/lua/nobbz/lsp/clients/toml.lua
  • plugins/nobbz/lua/nobbz/lsp/clients/yaml.lua
  • plugins/nobbz/lua/nobbz/plugins/surround.lua
🧰 Additional context used
📓 Path-based instructions (7)
**/*.{nix,lua}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Run nix fmt before committing to format all Nix files with alejandra and all Lua files with emmy-lua-code-style

Format all Nix files with alejandra and all Lua files with emmy-lua-code-style by running nix fmt before every commit

Files:

  • plugins/nobbz/lua/nobbz/lsp/clients/yaml.lua
  • plugins/nobbz/lua/nobbz/plugins/surround.lua
  • plugins/nobbz/lua/nobbz/lsp/clients/json.lua
  • plugins/nobbz/lua/nobbz/lsp/clients/toml.lua
  • plugins/default.nix
  • nvim.nix
  • npins/default.nix
**/*.lua

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

**/*.lua: Use local for all variable declarations in Lua
Follow luarocks style guide with 2-space indentation, double quotes for strings, and trailing commas in tables in Lua code
Always use call parentheses when invoking functions in Lua
Respect .editorconfig (2 spaces indentation, double quotes) and .stylua.toml settings when formatting Lua code

**/*.lua: Indentation in Lua files must be 2 spaces
Use double quotes for strings in Lua
Use trailing commas in Lua tables
Always use parentheses when calling functions in Lua
Use local for all variables in Lua - no global variables
Add EmmyLua annotations for all Lua functions
Use nobbz.lazy for lazy loading when possible in Lua
Both stylua and emmy-lua-code-style must pass formatting checks on Lua files
Register LSPs with require("nobbz.health").register_lsp("lsp-name") in Lua configuration
Follow the luarocks style guide for Lua code with specified modifications
Keep imports organized and sorted in Lua configuration files

Files:

  • plugins/nobbz/lua/nobbz/lsp/clients/yaml.lua
  • plugins/nobbz/lua/nobbz/plugins/surround.lua
  • plugins/nobbz/lua/nobbz/lsp/clients/json.lua
  • plugins/nobbz/lua/nobbz/lsp/clients/toml.lua
plugins/nobbz/lua/nobbz/**/*.lua

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

plugins/nobbz/lua/nobbz/**/*.lua: Use lazy loading via nobbz.lazy when possible in Lua configuration
Create lazy loading specifications in Lua configuration for optional plugins added to optionalPlugins with true value

Files:

  • plugins/nobbz/lua/nobbz/lsp/clients/yaml.lua
  • plugins/nobbz/lua/nobbz/plugins/surround.lua
  • plugins/nobbz/lua/nobbz/lsp/clients/json.lua
  • plugins/nobbz/lua/nobbz/lsp/clients/toml.lua
plugins/nobbz/lua/nobbz/lsp/**/*.lua

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Register custom LSP configurations with require("nobbz.health").register_lsp("lsp-name") in Lua configuration

Files:

  • plugins/nobbz/lua/nobbz/lsp/clients/yaml.lua
  • plugins/nobbz/lua/nobbz/lsp/clients/json.lua
  • plugins/nobbz/lua/nobbz/lsp/clients/toml.lua
plugins/**/*.lua

⚙️ CodeRabbit configuration file

plugins/**/*.lua: Please ensure all of the following:

  • Plugins are lazyloaded if possible through nobbz.lazy
  • local has to be used
  • coding follows the luarocks styleguide, but with 2 spaces indentation

Files:

  • plugins/nobbz/lua/nobbz/lsp/clients/yaml.lua
  • plugins/nobbz/lua/nobbz/plugins/surround.lua
  • plugins/nobbz/lua/nobbz/lsp/clients/json.lua
  • plugins/nobbz/lua/nobbz/lsp/clients/toml.lua
plugins/default.nix

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

plugins/default.nix: Ensure plugin is listed in the optionalPlugins dict in plugins/default.nix with true for optional (lazy-loaded) plugins or false for mandatory (start-on-boot) plugins
Sort plugins alphabetically in the first section of optionalPlugins in plugins/default.nix; do not add new plugins to the eager loading section without removing the TODO comment

plugins/default.nix: In plugins/default.nix, keep plugins sorted alphabetically
Do not add new plugins to the first section of optionalPlugins set in plugins/default.nix (marked with TODO comment for eager loading)
In optionalPlugins set, use false for mandatory plugins (start) and true for optional plugins (opt)

Files:

  • plugins/default.nix

⚙️ CodeRabbit configuration file

plugins/default.nix: Please ensure all of the following:

  • Plugins are sorted alphabetically
  • there will be no further plugins added to the first section in the optionalPlugins set

Files:

  • plugins/default.nix
**/*.nix

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Maintain a clear distinction between flake-parts modules and package definitions in Nix files

Maintain clear distinction between flake-parts modules and package definitions in Nix

Files:

  • plugins/default.nix
  • nvim.nix
  • npins/default.nix
🧠 Learnings (22)
📓 Common learnings
Learnt from: NobbZ
Repo: NobbZ/nobbz-vim PR: 0
File: :0-0
Timestamp: 2025-04-12T09:24:45.451Z
Learning: NobbZ uses a homebrewn shallow abstraction over `lz.n` rather than using lazy.nvim directly. References to Lazy.nvim's specific features should be avoided in reviews of NobbZ's repository.
📚 Learning: 2026-01-07T22:24:07.920Z
Learnt from: CR
Repo: NobbZ/nobbz-vim PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-01-07T22:24:07.920Z
Learning: Applies to plugins/nobbz/lua/nobbz/lsp/**/*.lua : Register custom LSP configurations with `require("nobbz.health").register_lsp("lsp-name")` in Lua configuration

Applied to files:

  • plugins/nobbz/lua/nobbz/lsp/clients/yaml.lua
  • plugins/nobbz/lua/nobbz/plugins/surround.lua
  • AGENTS.md
  • plugins/nobbz/lua/nobbz/lsp/clients/json.lua
  • plugins/nobbz/lua/nobbz/lsp/clients/toml.lua
📚 Learning: 2026-01-07T22:24:07.920Z
Learnt from: CR
Repo: NobbZ/nobbz-vim PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-01-07T22:24:07.920Z
Learning: Applies to plugins/nobbz/lua/nobbz/**/*.lua : Create lazy loading specifications in Lua configuration for optional plugins added to `optionalPlugins` with `true` value

Applied to files:

  • plugins/nobbz/lua/nobbz/lsp/clients/yaml.lua
  • plugins/nobbz/lua/nobbz/plugins/surround.lua
  • plugins/nobbz/lua/nobbz/lsp/clients/json.lua
  • plugins/nobbz/lua/nobbz/lsp/clients/toml.lua
  • plugins/default.nix
📚 Learning: 2026-01-12T22:33:19.979Z
Learnt from: CR
Repo: NobbZ/nobbz-vim PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-01-12T22:33:19.979Z
Learning: Applies to **/*.lua : Register LSPs with `require("nobbz.health").register_lsp("lsp-name")` in Lua configuration

Applied to files:

  • plugins/nobbz/lua/nobbz/lsp/clients/yaml.lua
  • AGENTS.md
  • plugins/nobbz/lua/nobbz/lsp/clients/json.lua
  • plugins/nobbz/lua/nobbz/lsp/clients/toml.lua
📚 Learning: 2026-01-07T22:24:07.920Z
Learnt from: CR
Repo: NobbZ/nobbz-vim PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-01-07T22:24:07.920Z
Learning: Applies to plugins/nobbz/lua/nobbz/**/*.lua : Use lazy loading via `nobbz.lazy` when possible in Lua configuration

Applied to files:

  • plugins/nobbz/lua/nobbz/lsp/clients/yaml.lua
  • plugins/nobbz/lua/nobbz/plugins/surround.lua
  • plugins/nobbz/lua/nobbz/lsp/clients/json.lua
  • plugins/nobbz/lua/nobbz/lsp/clients/toml.lua
📚 Learning: 2026-01-12T22:33:19.979Z
Learnt from: CR
Repo: NobbZ/nobbz-vim PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-01-12T22:33:19.979Z
Learning: Applies to **/*.lua : Keep imports organized and sorted in Lua configuration files

Applied to files:

  • plugins/nobbz/lua/nobbz/lsp/clients/yaml.lua
  • plugins/nobbz/lua/nobbz/plugins/surround.lua
  • plugins/nobbz/lua/nobbz/lsp/clients/toml.lua
📚 Learning: 2025-01-31T23:06:17.133Z
Learnt from: NobbZ
Repo: NobbZ/nobbz-vim PR: 19
File: plugins/nobbz/lua/nobbz/lsp/beancount.lua:3-6
Timestamp: 2025-01-31T23:06:17.133Z
Learning: In the nobbz-vim project, `LSP_CAPAS` is defined as a global variable in `plugins/nobbz/lua/nobbz/init.lua` and should be used for LSP capabilities across the codebase.

Applied to files:

  • plugins/nobbz/lua/nobbz/lsp/clients/yaml.lua
  • AGENTS.md
  • plugins/nobbz/lua/nobbz/lsp/clients/json.lua
  • plugins/nobbz/lua/nobbz/lsp/clients/toml.lua
📚 Learning: 2026-01-12T22:33:19.979Z
Learnt from: CR
Repo: NobbZ/nobbz-vim PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-01-12T22:33:19.979Z
Learning: Applies to **/*.lua : Use `nobbz.lazy` for lazy loading when possible in Lua

Applied to files:

  • plugins/nobbz/lua/nobbz/lsp/clients/yaml.lua
📚 Learning: 2026-01-12T22:33:19.979Z
Learnt from: CR
Repo: NobbZ/nobbz-vim PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-01-12T22:33:19.979Z
Learning: Applies to **/*.lua : Use trailing commas in Lua tables

Applied to files:

  • plugins/nobbz/lua/nobbz/plugins/surround.lua
📚 Learning: 2026-01-07T22:24:07.920Z
Learnt from: CR
Repo: NobbZ/nobbz-vim PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-01-07T22:24:07.920Z
Learning: Applies to **/*.lua : Follow luarocks style guide with 2-space indentation, double quotes for strings, and trailing commas in tables in Lua code

Applied to files:

  • plugins/nobbz/lua/nobbz/plugins/surround.lua
📚 Learning: 2026-01-12T22:33:19.979Z
Learnt from: CR
Repo: NobbZ/nobbz-vim PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-01-12T22:33:19.979Z
Learning: Applies to **/*.lua : Follow the luarocks style guide for Lua code with specified modifications

Applied to files:

  • plugins/nobbz/lua/nobbz/plugins/surround.lua
📚 Learning: 2026-01-12T22:33:19.979Z
Learnt from: CR
Repo: NobbZ/nobbz-vim PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-01-12T22:33:19.979Z
Learning: Applies to **/*.lua : Use double quotes for strings in Lua

Applied to files:

  • plugins/nobbz/lua/nobbz/plugins/surround.lua
📚 Learning: 2026-01-07T22:24:07.920Z
Learnt from: CR
Repo: NobbZ/nobbz-vim PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-01-07T22:24:07.920Z
Learning: Applies to **/*.{nix,lua} : Run `nix fmt` before committing to format all Nix files with `alejandra` and all Lua files with `emmy-lua-code-style`

Applied to files:

  • AGENTS.md
📚 Learning: 2026-01-12T22:33:19.979Z
Learnt from: CR
Repo: NobbZ/nobbz-vim PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-01-12T22:33:19.979Z
Learning: Applies to **/*.lua : Both `stylua` and `emmy-lua-code-style` must pass formatting checks on Lua files

Applied to files:

  • AGENTS.md
  • nvim.nix
📚 Learning: 2026-01-07T22:24:07.920Z
Learnt from: CR
Repo: NobbZ/nobbz-vim PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-01-07T22:24:07.920Z
Learning: Test plugin loading with `:checkhealth nobbz` in Neovim after configuration changes

Applied to files:

  • AGENTS.md
📚 Learning: 2026-01-12T22:33:19.979Z
Learnt from: CR
Repo: NobbZ/nobbz-vim PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-01-12T22:33:19.979Z
Learning: Applies to plugins/default.nix : In `optionalPlugins` set, use `false` for mandatory plugins (start) and `true` for optional plugins (opt)

Applied to files:

  • plugins/default.nix
📚 Learning: 2026-01-07T22:24:07.920Z
Learnt from: CR
Repo: NobbZ/nobbz-vim PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-01-07T22:24:07.920Z
Learning: Applies to plugins/default.nix : Ensure plugin is listed in the `optionalPlugins` dict in `plugins/default.nix` with `true` for optional (lazy-loaded) plugins or `false` for mandatory (start-on-boot) plugins

Applied to files:

  • plugins/default.nix
📚 Learning: 2026-01-12T22:33:19.979Z
Learnt from: CR
Repo: NobbZ/nobbz-vim PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-01-12T22:33:19.979Z
Learning: Applies to plugins/default.nix : Do not add new plugins to the first section of `optionalPlugins` set in `plugins/default.nix` (marked with TODO comment for eager loading)

Applied to files:

  • plugins/default.nix
📚 Learning: 2026-01-07T22:24:07.920Z
Learnt from: CR
Repo: NobbZ/nobbz-vim PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-01-07T22:24:07.920Z
Learning: Applies to plugins/default.nix : Sort plugins alphabetically in the first section of `optionalPlugins` in `plugins/default.nix`; do not add new plugins to the eager loading section without removing the TODO comment

Applied to files:

  • plugins/default.nix
📚 Learning: 2026-01-12T22:33:19.979Z
Learnt from: CR
Repo: NobbZ/nobbz-vim PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-01-12T22:33:19.979Z
Learning: Applies to plugins/default.nix : In `plugins/default.nix`, keep plugins sorted alphabetically

Applied to files:

  • plugins/default.nix
📚 Learning: 2026-01-12T22:33:19.979Z
Learnt from: CR
Repo: NobbZ/nobbz-vim PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-01-12T22:33:19.979Z
Learning: Applies to **/*.nix : Maintain clear distinction between flake-parts modules and package definitions in Nix

Applied to files:

  • npins/default.nix
📚 Learning: 2026-01-07T22:24:07.920Z
Learnt from: CR
Repo: NobbZ/nobbz-vim PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-01-07T22:24:07.920Z
Learning: Applies to **/*.nix : Maintain a clear distinction between flake-parts modules and package definitions in Nix files

Applied to files:

  • npins/default.nix
🔇 Additional comments (5)
plugins/default.nix (1)

35-35: LGTM!

The SchemaStore plugin is correctly added:

  • Alphabetically sorted between rainbow and telescope
  • Set to false (mandatory/start) which aligns with its use as a dependency for LSP schema loading
  • Not added to the first section (eager loading TODO section)

As per coding guidelines, this follows the required plugin organization.

npins/sources.json (1)

42-54: LGTM!

The nvim-SchemaStore pin is correctly added with proper structure matching existing entries. The nvim- prefix convention is followed, enabling automatic plugin building via the makePluginFromPin pipeline in plugins/default.nix.

plugins/nobbz/lua/nobbz/plugins/surround.lua (1)

4-4: LGTM!

Trailing commas added to table entries, aligning with the coding guidelines requirement for trailing commas in Lua tables.

Also applies to: 9-9, 14-14, 19-19

AGENTS.md (1)

161-161: LGTM!

Good addition documenting the SchemaStore integration for JSON/YAML/TOML LSPs. This helps users understand the schema validation features and how to enable proper completions/diagnostics via $schema keys.

npins/default.nix (1)

10-10: Auto-generated file with formatting changes only.

This file is generated by npins and will be overwritten regularly. The changes appear to be formatting adjustments (likely from running nix fmt with alejandra), which aligns with the coding guidelines. No manual modifications needed.

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.

Comment on lines +1 to +17
local helpers = require("nobbz.lsp.helpers")

return {
name = "taplo",
ft = "toml",
on_attach = { helpers.default, },
settings = {
taplo = {
diagnostics = { enabled = true, },
completion = { enabled = true, },
schema = {
enabled = true,
associations = {},
},
},
},
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Missing LSP health registration.

Per the coding guidelines, LSP configurations in this path should register with the health check system using require("nobbz.health").register_lsp("taplo").

Proposed fix
 local helpers = require("nobbz.lsp.helpers")
 
+require("nobbz.health").register_lsp("taplo")
+
 return {
   name = "taplo",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
local helpers = require("nobbz.lsp.helpers")
return {
name = "taplo",
ft = "toml",
on_attach = { helpers.default, },
settings = {
taplo = {
diagnostics = { enabled = true, },
completion = { enabled = true, },
schema = {
enabled = true,
associations = {},
},
},
},
}
local helpers = require("nobbz.lsp.helpers")
require("nobbz.health").register_lsp("taplo")
return {
name = "taplo",
ft = "toml",
on_attach = { helpers.default, },
settings = {
taplo = {
diagnostics = { enabled = true, },
completion = { enabled = true, },
schema = {
enabled = true,
associations = {},
},
},
},
}
🤖 Prompt for AI Agents
In `@plugins/nobbz/lua/nobbz/lsp/clients/toml.lua` around lines 1 - 17, The module
is missing LSP health registration; add a call to
require("nobbz.health").register_lsp("taplo") (a side-effecting registration) in
this file so the Taplo client is registered with the health system—for example,
after the existing require("nobbz.lsp.helpers") call or just before the module's
return; ensure the string matches the client name ("taplo") and do not change
the returned table (name = "taplo", ft = "toml", etc.).

Comment on lines +1 to +15
local helpers = require("nobbz.lsp.helpers")

return {
name = "yamlls",
ft = "yaml",
on_attach = { helpers.default, },
settings = {
yaml = {
schemas = require("schemastore").yaml.schemas(),
validate = true,
hover = true,
completion = true,
},
},
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Missing LSP health registration.

Per the coding guidelines, LSP configurations in this path should register with the health check system using require("nobbz.health").register_lsp("yamlls").

Proposed fix
 local helpers = require("nobbz.lsp.helpers")
 
+require("nobbz.health").register_lsp("yamlls")
+
 return {
   name = "yamlls",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
local helpers = require("nobbz.lsp.helpers")
return {
name = "yamlls",
ft = "yaml",
on_attach = { helpers.default, },
settings = {
yaml = {
schemas = require("schemastore").yaml.schemas(),
validate = true,
hover = true,
completion = true,
},
},
}
local helpers = require("nobbz.lsp.helpers")
require("nobbz.health").register_lsp("yamlls")
return {
name = "yamlls",
ft = "yaml",
on_attach = { helpers.default, },
settings = {
yaml = {
schemas = require("schemastore").yaml.schemas(),
validate = true,
hover = true,
completion = true,
},
},
}
🤖 Prompt for AI Agents
In `@plugins/nobbz/lua/nobbz/lsp/clients/yaml.lua` around lines 1 - 15, The YAML
LSP config doesn't register with health checks; add a call to
require("nobbz.health").register_lsp("yamlls") so the server appears in the
health system—place the registration before the module is returned (e.g., after
the helpers require or just before the return) and keep the literal server name
"yamlls"; you can call it inline
(require("nobbz.health").register_lsp("yamlls")) to avoid adding new variables.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.

diagnostics = { enabled = true, },
completion = { enabled = true, },
schema = {
enabled = true,
Copy link

Copilot AI Jan 15, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The empty associations = {} table suggests manual schema associations should be configured. Consider adding a comment explaining that Taplo will use auto-detection or that users should configure this for project-specific schemas, or integrate with SchemaStore similar to the JSON/YAML configs if available.

Suggested change
enabled = true,
enabled = true,
-- Use Taplo's built-in schema auto-detection by default; add project-specific
-- schema associations here if needed.

Copilot uses AI. Check for mistakes.
3. **Lua formatting fails:** Run `nix develop` first, check `.editorconfig` compliance
4. **Plugin not loading:** Check `optionalPlugins` set - `false` = mandatory, `true` = optional
5. **LSP not working:** LSP binaries added to PATH in `nvim.nix`, register with health system
6. **Schema support for JSON/YAML/TOML:** LSPs for jsonls, yamlls, taplo are configured with SchemaStore for schema validation via `$schema` keys. Ensure files have proper schemas for completions and diagnostics.
Copy link

Copilot AI Jan 15, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The statement 'LSPs for jsonls, yamlls, taplo are configured with SchemaStore' is inaccurate for taplo. Only jsonls and yamlls use SchemaStore integration. Taplo has schema support enabled but uses its own schema resolution mechanism via the associations field.

Suggested change
6. **Schema support for JSON/YAML/TOML:** LSPs for jsonls, yamlls, taplo are configured with SchemaStore for schema validation via `$schema` keys. Ensure files have proper schemas for completions and diagnostics.
6. **Schema support for JSON/YAML/TOML:** `jsonls` and `yamlls` use SchemaStore for schema validation via `$schema` keys, while `taplo` uses its own schema resolution via `associations`. Ensure files have proper schemas configured for completions and diagnostics.

Copilot uses AI. Check for mistakes.
@NobbZ NobbZ merged commit 86a522b into main Jan 15, 2026
15 checks passed
@NobbZ NobbZ deleted the json-like-lsp branch January 15, 2026 07:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants