Skip to content

Conversation

@NobbZ
Copy link
Owner

@NobbZ NobbZ commented Jun 21, 2025

Summary by CodeRabbit

  • Refactor
    • Streamlined language server configurations into a unified, declarative setup system with conditional activation.
    • Enhanced modularity and maintainability by centralizing language server initialization and deferring activation based on project context.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jun 21, 2025

Walkthrough

The LSP client setup for multiple language servers, including Astro, Beancount, C/C++, and others, has been refactored from immediate, imperative configuration and registration calls to a declarative, table-based approach. Each client module now exports a configuration table with properties and optional activation logic, which are processed centrally in a loop for conditional setup and health registration.

Changes

Files/Paths Change Summary
plugins/nobbz/lua/nobbz/lsp.lua Refactored to import LSP client configs as tables; iterates over clients for conditional setup and registration using lspconfig and health registration.
plugins/nobbz/lua/nobbz/lsp/{astro,beancount,c-cpp,digestif,elixir,gleam,html,lua,mdx,meson,nil,nushell,oxide,python,rust,tailwind,typescript,zig}.lua Changed from direct lspconfig.*.setup calls and health registration to exporting declarative configuration tables with properties like name, on_attach, cmd, activate, init_options, root_dir, and on_init.

Sequence Diagram(s)

sequenceDiagram
    participant MainLSP as LSP Loader (lsp.lua)
    participant Clients as LSP Client Config Modules
    participant LSPConfig as lspconfig
    participant Health as Health Register

    MainLSP->>Clients: Import config tables for each client
    loop For each client in clients
        MainLSP->>client: Evaluate activate() (default true if absent)
        alt activate() returns true
            MainLSP->>LSPConfig: setup(client.name, combined config)
            MainLSP->>Health: register_lsp(client.name)
        end
    end
Loading

Possibly related PRs

  • NobbZ/nobbz-vim#55: Refactors LSP setup and health registration into a centralized loop, directly related to this PR's changes.
  • NobbZ/nobbz-vim#19: Added initial Beancount LSP direct setup calls, replaced here by declarative configuration.
  • NobbZ/nobbz-vim#60: Initial C/C++ LSP direct setup calls, replaced here by declarative configuration.

Poem

In the warren of code, a new path we weave,
LSPs now gather, their configs up their sleeve.
No more direct calls, just tables so neat—
With activation logic, our setup's complete!
🐇✨
Hopping through modules, with structure and cheer,
Centralized logic brings clarity here!


📜 Recent review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 12546a1 and f755fb2.

📒 Files selected for processing (10)
  • plugins/nobbz/lua/nobbz/lsp.lua (2 hunks)
  • plugins/nobbz/lua/nobbz/lsp/meson.lua (1 hunks)
  • plugins/nobbz/lua/nobbz/lsp/nil.lua (2 hunks)
  • plugins/nobbz/lua/nobbz/lsp/nushell.lua (1 hunks)
  • plugins/nobbz/lua/nobbz/lsp/oxide.lua (1 hunks)
  • plugins/nobbz/lua/nobbz/lsp/python.lua (2 hunks)
  • plugins/nobbz/lua/nobbz/lsp/rust.lua (1 hunks)
  • plugins/nobbz/lua/nobbz/lsp/tailwind.lua (1 hunks)
  • plugins/nobbz/lua/nobbz/lsp/typescript.lua (1 hunks)
  • plugins/nobbz/lua/nobbz/lsp/zig.lua (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • plugins/nobbz/lua/nobbz/lsp.lua
🧰 Additional context used
📓 Path-based instructions (1)
`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...

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
  • plugins/nobbz/lua/nobbz/lsp/typescript.lua
  • plugins/nobbz/lua/nobbz/lsp/oxide.lua
  • plugins/nobbz/lua/nobbz/lsp/python.lua
  • plugins/nobbz/lua/nobbz/lsp/tailwind.lua
  • plugins/nobbz/lua/nobbz/lsp/nil.lua
  • plugins/nobbz/lua/nobbz/lsp/nushell.lua
  • plugins/nobbz/lua/nobbz/lsp/meson.lua
  • plugins/nobbz/lua/nobbz/lsp/zig.lua
  • plugins/nobbz/lua/nobbz/lsp/rust.lua
🔇 Additional comments (11)
plugins/nobbz/lua/nobbz/lsp/zig.lua (1)

3-6: LGTM: Clean refactoring to declarative configuration.

The refactoring from imperative setup to declarative configuration table is well-implemented. The structure is clean, follows the coding guidelines (proper use of local, 2-space indentation), and maintains consistency with the new centralized LSP management approach.

plugins/nobbz/lua/nobbz/lsp/typescript.lua (1)

3-6: LGTM: Consistent refactoring with appropriate helper selection.

The declarative configuration is correctly implemented. The use of helpers.keymap is appropriate for TypeScript LSP, and the structure follows the established pattern and coding guidelines.

plugins/nobbz/lua/nobbz/lsp/tailwind.lua (1)

3-6: LGTM: Consistent declarative configuration.

The refactoring is properly implemented with the correct LSP name "tailwindcss" and appropriate use of helpers.keymap. Follows coding guidelines and maintains consistency with the new architecture.

plugins/nobbz/lua/nobbz/lsp/oxide.lua (1)

10-14: LGTM: Thoughtful refactoring preserving LSP-specific configuration.

The refactoring correctly preserves the workspace capabilities configuration that's specific to markdown_oxide while adopting the new declarative pattern. The structure is clean and follows coding guidelines.

plugins/nobbz/lua/nobbz/lsp/python.lua (1)

3-16: LGTM: Well-structured refactoring maintaining Python LSP functionality.

The refactoring successfully converts to the declarative pattern while preserving the important basedpyright analysis settings. The configuration maintains diagnostics mode, inlay hints, and other Python-specific features. Structure follows coding guidelines and is consistent with the new architecture.

plugins/nobbz/lua/nobbz/lsp/meson.lua (1)

3-7: LGTM: Clean declarative configuration

The refactoring to a declarative configuration table is well-executed. The configuration appropriately specifies the Meson LSP server with keymap attachment and git-based root directory detection.

plugins/nobbz/lua/nobbz/lsp/nushell.lua (1)

3-8: LGTM: Proper Nushell LSP configuration

The declarative configuration correctly specifies the Nushell language server with appropriate filetypes and command setup. The use of helpers.default for on_attach is suitable for this server.

plugins/nobbz/lua/nobbz/lsp/nil.lua (1)

3-23: LGTM: Comprehensive nil language server configuration

The declarative configuration properly sets up the nil language server for Nix with appropriate settings including binary path, flake configuration, and Alejandra formatting. The configuration structure follows the server's expected format.

plugins/nobbz/lua/nobbz/lsp/rust.lua (3)

3-19: LGTM: Proper lazy loading implementation

The crates plugin is correctly lazy-loaded using nobbz.lazy.add_specs with appropriate LSP configuration. The filetype restriction to "toml" and use of helpers.default for on_attach follows the established patterns.


21-31: Note: Synchronous formatting on save

The custom on_attach function sets up format-on-save with async = false. While this could potentially block the UI, it's generally acceptable for Rust files since formatting is typically fast.


33-56: LGTM: Comprehensive rust-analyzer configuration

The settings provide excellent developer experience with inlay hints, lens features, and Clippy integration. The configuration table properly combines helpers.default with the custom on_attach function and includes the detailed 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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

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: 1

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 323c85a and 5215c59.

📒 Files selected for processing (3)
  • plugins/nobbz/lua/nobbz/lsp.lua (2 hunks)
  • plugins/nobbz/lua/nobbz/lsp/astro.lua (1 hunks)
  • plugins/nobbz/lua/nobbz/lsp/beancount.lua (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
`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...

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
  • plugins/nobbz/lua/nobbz/lsp/astro.lua
  • plugins/nobbz/lua/nobbz/lsp/beancount.lua
  • plugins/nobbz/lua/nobbz/lsp.lua
🧠 Learnings (1)
plugins/nobbz/lua/nobbz/lsp.lua (1)
Learnt from: NobbZ
PR: NobbZ/nobbz-vim#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.
🔇 Additional comments (3)
plugins/nobbz/lua/nobbz/lsp/astro.lua (1)

3-6: LGTM! Clean declarative configuration.

The refactor correctly transforms the imperative setup to a declarative configuration table that follows the new centralized pattern.

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

48-51: LGTM! Clean client configuration approach.

The declarative client table approach enables better modularity and conditional activation.

plugins/nobbz/lua/nobbz/lsp/beancount.lua (1)

16-24: LGTM! Robust activation logic with proper file existence checks.

The configuration table correctly implements the declarative pattern with thorough activation checks that verify both directory structure and journal file existence.

Comment on lines 53 to 73
for _, client_config in ipairs(clients) do
local name = client_config.name
local activate = client_config.activate or function() return true end
local capabilities = client_config.capabilities or LSP_CAPAS
local on_attach = client_config.on_attach or { helpers.default, }
local init_options = client_config.init_options
local root_dir = client_config.root_dir

local setup = {
on_attach = helpers.combine(on_attach),
capabilities = capabilities,
init_options = init_options,
root_dir = root_dir,
}

if activate() then
lspconfig[name].setup(setup)

register_lsp(client_config.name)
end
end
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Add error handling around LSP setup calls.

The loop lacks error handling which could cause one failing client to disrupt the entire LSP initialization process.

 for _, client_config in ipairs(clients) do
   local name = client_config.name
   local activate = client_config.activate or function() return true end
   local capabilities = client_config.capabilities or LSP_CAPAS
   local on_attach = client_config.on_attach or { helpers.default, }
   local init_options = client_config.init_options
   local root_dir = client_config.root_dir

   local setup = {
     on_attach = helpers.combine(on_attach),
     capabilities = capabilities,
     init_options = init_options,
     root_dir = root_dir,
   }

   if activate() then
-    lspconfig[name].setup(setup)
-
-    register_lsp(client_config.name)
+    local ok, err = pcall(function()
+      lspconfig[name].setup(setup)
+    end)
+    
+    if ok then
+      register_lsp(client_config.name)
+    else
+      vim.notify("Failed to setup LSP client: " .. name .. " - " .. tostring(err), vim.log.levels.ERROR)
+    end
   end
 end
📝 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
for _, client_config in ipairs(clients) do
local name = client_config.name
local activate = client_config.activate or function() return true end
local capabilities = client_config.capabilities or LSP_CAPAS
local on_attach = client_config.on_attach or { helpers.default, }
local init_options = client_config.init_options
local root_dir = client_config.root_dir
local setup = {
on_attach = helpers.combine(on_attach),
capabilities = capabilities,
init_options = init_options,
root_dir = root_dir,
}
if activate() then
lspconfig[name].setup(setup)
register_lsp(client_config.name)
end
end
for _, client_config in ipairs(clients) do
local name = client_config.name
local activate = client_config.activate or function() return true end
local capabilities = client_config.capabilities or LSP_CAPAS
local on_attach = client_config.on_attach or { helpers.default, }
local init_options = client_config.init_options
local root_dir = client_config.root_dir
local setup = {
on_attach = helpers.combine(on_attach),
capabilities = capabilities,
init_options = init_options,
root_dir = root_dir,
}
if activate() then
local ok, err = pcall(function()
lspconfig[name].setup(setup)
end)
if ok then
register_lsp(client_config.name)
else
vim.notify(
"Failed to setup LSP client: " .. name .. " - " .. tostring(err),
vim.log.levels.ERROR
)
end
end
end
🤖 Prompt for AI Agents
In plugins/nobbz/lua/nobbz/lsp.lua around lines 53 to 73, the loop setting up
LSP clients lacks error handling, risking that a failure in one client setup
disrupts the entire process. Wrap the lspconfig[name].setup(setup) call and the
subsequent register_lsp call inside a pcall or similar error-catching mechanism
to safely handle any errors. Log or handle errors appropriately to ensure the
loop continues initializing other clients even if one fails.

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: 6

♻️ Duplicate comments (1)
plugins/nobbz/lua/nobbz/lsp.lua (1)

53-79: Add error handling around LSP setup calls.

The loop lacks error handling which could cause one failing client to disrupt the entire LSP initialization process.

 for _, client_config in ipairs(clients) do
   local name = client_config.name
   local activate = client_config.activate or function() return true end
   local capabilities = client_config.capabilities or LSP_CAPAS
   local on_attach = client_config.on_attach or { helpers.default, }
   local init_options = client_config.init_options
   local root_dir = client_config.root_dir
   local cmd = client_config.cmd
   local settings = client_config.settings
   local on_init = client_config.on_init

   local setup = {
     on_attach = helpers.combine(on_attach),
     capabilities = capabilities,
     init_options = init_options,
     root_dir = root_dir,
     cmd = cmd,
     settings = settings,
     on_init = on_init,
   }

   if activate() then
-    lspconfig[name].setup(setup)
-
-    register_lsp(client_config.name)
+    local ok, err = pcall(function()
+      lspconfig[name].setup(setup)
+    end)
+    
+    if ok then
+      register_lsp(client_config.name)
+    else
+      vim.notify("Failed to setup LSP client: " .. name .. " - " .. tostring(err), vim.log.levels.ERROR)
+    end
   end
 end
🧹 Nitpick comments (2)
plugins/nobbz/lua/nobbz/lsp/mdx.lua (1)

3-7: Consider the impact of side effects during module loading.

The vim.filetype.add call executes immediately when the module is loaded, regardless of whether the LSP is actually activated. This might be the intended behavior if the filetype mapping should always be available, but consider whether this aligns with the new declarative approach.

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

41-51: Consider lazy loading LSP client modules.

According to the coding guidelines, plugins should be lazy loaded if possible through nobbz.lazy. Since these LSP clients are loaded unconditionally, consider whether lazy loading would be beneficial here.

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5215c59 and 12546a1.

📒 Files selected for processing (8)
  • plugins/nobbz/lua/nobbz/lsp.lua (2 hunks)
  • plugins/nobbz/lua/nobbz/lsp/c-cpp.lua (1 hunks)
  • plugins/nobbz/lua/nobbz/lsp/digestif.lua (1 hunks)
  • plugins/nobbz/lua/nobbz/lsp/elixir.lua (1 hunks)
  • plugins/nobbz/lua/nobbz/lsp/gleam.lua (1 hunks)
  • plugins/nobbz/lua/nobbz/lsp/html.lua (1 hunks)
  • plugins/nobbz/lua/nobbz/lsp/lua.lua (1 hunks)
  • plugins/nobbz/lua/nobbz/lsp/mdx.lua (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
`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...

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
  • plugins/nobbz/lua/nobbz/lsp/gleam.lua
  • plugins/nobbz/lua/nobbz/lsp/digestif.lua
  • plugins/nobbz/lua/nobbz/lsp/mdx.lua
  • plugins/nobbz/lua/nobbz/lsp/html.lua
  • plugins/nobbz/lua/nobbz/lsp/c-cpp.lua
  • plugins/nobbz/lua/nobbz/lsp/elixir.lua
  • plugins/nobbz/lua/nobbz/lsp.lua
  • plugins/nobbz/lua/nobbz/lsp/lua.lua
🧠 Learnings (1)
plugins/nobbz/lua/nobbz/lsp.lua (1)
Learnt from: NobbZ
PR: NobbZ/nobbz-vim#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.
🔇 Additional comments (3)
plugins/nobbz/lua/nobbz/lsp/elixir.lua (1)

3-7: LGTM! Clean refactor to declarative configuration.

The refactor from imperative LSP setup to declarative configuration table is well-executed. The code follows the luarocks style guide with proper 2-space indentation and uses local appropriately.

plugins/nobbz/lua/nobbz/lsp/lua.lua (2)

3-13: LGTM! Proper autoformatting setup.

The on_attach function correctly sets up synchronous formatting on save, which is appropriate for Lua files to ensure consistent formatting.


41-50: Excellent declarative configuration structure.

The configuration table properly combines the default helper with the custom on_attach function and includes appropriate Lua-specific settings. The structure aligns perfectly with the new LSP initialization pattern.

Comment on lines +9 to +12
return {
name = "mdx_analyzer",
on_attach = { helpers.keymap, },
}
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Missing lazyloading mechanism as required by coding guidelines.

The declarative configuration approach is consistent with the refactoring pattern. However, the coding guidelines specify that plugins should be lazyloaded through nobbz.lazy, which is not implemented here.

🤖 Prompt for AI Agents
In plugins/nobbz/lua/nobbz/lsp/mdx.lua around lines 9 to 12, the plugin
configuration lacks the required lazyloading mechanism as per coding guidelines.
Modify the return table to include lazyloading by wrapping the plugin setup with
`nobbz.lazy` or by adding a lazyload key or function according to the project's
lazyloading pattern. This ensures the plugin is loaded only when needed,
following the established conventions.

@NobbZ NobbZ requested a review from Copilot June 21, 2025 14:25
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 refactors individual language server configurations into a unified, declarative abstraction that returns configuration tables. It centralizes LSP setup and defers health registration and activation to a global aggregator.

  • Converted individual lspconfig setups to return configuration tables.
  • Removed per-server health registration in favor of centralized registration.
  • Introduced an aggregator in lsp.lua that loops through each server configuration for unified setup.

Reviewed Changes

Copilot reviewed 19 out of 19 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
plugins/nobbz/lua/nobbz/lsp/zig.lua Refactored Zig LSP setup to return a config table instead of directly calling setup.
plugins/nobbz/lua/nobbz/lsp/typescript.lua Similar refactor applied to the TypeScript LSP configuration.
plugins/nobbz/lua/nobbz/lsp/tailwind.lua Converted Tailwind CSS LSP initialization to return configuration for centralized usage.
plugins/nobbz/lua/nobbz/lsp/rust.lua Updated Rust LSP config with inline plugin specs and combined on_attach callbacks.
plugins/nobbz/lua/nobbz/lsp/python.lua Updated Python LSP setup to conform to the new abstraction.
plugins/nobbz/lua/nobbz/lsp/oxide.lua Reworked Oxide LSP configuration to return a config table with capabilities explicitly set.
plugins/nobbz/lua/nobbz/lsp/nushell.lua Adjusted Nushell LSP setup to match centralized configuration standards.
plugins/nobbz/lua/nobbz/lsp/nil.lua Modified Nil LSP configuration to return a config table.
plugins/nobbz/lua/nobbz/lsp/meson.lua Refactored Meson LSP config to return a configuration table.
plugins/nobbz/lua/nobbz/lsp/mdx.lua Converted MDX LSP setup to return a configuration table.
plugins/nobbz/lua/nobbz/lsp/lua.lua Overhauled Lua LSP config to use local helper functions and return a config table.
plugins/nobbz/lua/nobbz/lsp/html.lua Refactored HTML LSP config to return a configuration table.
plugins/nobbz/lua/nobbz/lsp/gleam.lua Updated Gleam LSP configuration to return a configuration table.
plugins/nobbz/lua/nobbz/lsp/elixir.lua Converted Elixir LSP setup to adhere to the new abstraction.
plugins/nobbz/lua/nobbz/lsp/digestif.lua Refactored Digestif LSP setup to return a configuration table.
plugins/nobbz/lua/nobbz/lsp/c-cpp.lua Adjusted C/C++ LSP configuration to return a configuration table for centralized setup.
plugins/nobbz/lua/nobbz/lsp/beancount.lua Introduced an activate function in Beancount LSP config to conditionally enable it.
plugins/nobbz/lua/nobbz/lsp/astro.lua Refactored Astro LSP configuration to return a configuration table.
plugins/nobbz/lua/nobbz/lsp.lua Implemented a centralized aggregator that iterates over LSP configuration tables.
Comments suppressed due to low confidence (1)

plugins/nobbz/lua/nobbz/lsp/lua.lua:3

  • [nitpick] Consider renaming the local function 'on_attach' (e.g., 'custom_on_attach') to reduce ambiguity with the on_attach array in the returned table.
local function on_attach(_, buffer)

@NobbZ NobbZ merged commit d63f99a into main Jun 21, 2025
3 checks passed
@NobbZ NobbZ deleted the lsp-init branch June 21, 2025 14:40
@coderabbitai coderabbitai bot mentioned this pull request Jun 22, 2025
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