-
Notifications
You must be signed in to change notification settings - Fork 15
docs: restructure README and add vim.pack configuration example #93
base: main
Are you sure you want to change the base?
Conversation
WalkthroughMajor documentation overhaul: README reorganized to center rzls.nvim and seblyng/roslyn.nvim, fixed typos/naming, reorganized installation/configuration examples (lazy.nvim and vim.pack), added License and Known Issues edits, and introduced doc/CONFIGURATION.md with full integration examples and Razor filetype guidance. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant Neovim
participant PluginMgr as Plugin Manager (lazy.nvim / vim.pack)
participant rzls as rzls.nvim
participant Roslyn as seblyng/roslyn.nvim
User->>Neovim: Open project/file
Neovim->>PluginMgr: Load plugins (rzls.nvim, roslyn.nvim)
PluginMgr->>rzls: require("rzls").setup()
rzls-->>Neovim: Register handlers & capabilities
Neovim->>Roslyn: Start LSP (cmd composed manually or via Mason) with handlers & settings
Roslyn-->>Neovim: Initialize and provide LSP features (diagnostics, inlay hints, code lens, completion)
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Suggested reviewers
Poem
Tip 🔌 Remote MCP (Model Context Protocol) integration is now available!Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats. ✨ Finishing Touches🧪 Generate unit tests
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
|
Thanks for the contribution. Although I like the general feel of this, I'm not sure I like the added recommendation for It also feels like it takes too long to get to the point. I don't think we need to concern ourselves too much with telling people how to install the other LSPs, etc. I will take another look when you either ping me or mark this ready for review |
|
Thanks @tris203 for the feedback! After reading back what I had written I agree that it wasn't concise enough. I removed all of the Mason examples as well and only kept the configuration that was relevant to the rzls.nvim. If there are any other improvements you'd like me to make let me know. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 5
🧹 Nitpick comments (8)
doc/CONFIGURATION.md (3)
29-54: Clarify Neovim version requirement forvim.lsp.config/enableThis example uses the new LSP API (
vim.lsp.config,vim.lsp.enable) that ships with newer Neovim. Make the version requirement explicit so users on older versions don’t cargo-cult this and fail.Proposed inline note:
- vim.lsp.config("roslyn", { + -- Neovim 0.12+: using new LSP API + vim.lsp.config("roslyn", {Please also confirm the minimum version intended for the lazy.nvim example (0.12+), as the vim.pack example already targets 0.12+.
95-96: Remove stray plugin require or add it to the structure
require("plugins.nvim-treesitter")is referenced but not part of the described tree. Either list it in the structure and provide a stub or drop the require to avoid confusion.Apply this diff to remove it:
-require("plugins.nvim-treesitter")
101-116: Be consistent about Roslyn invocation strategyHere you invoke the
roslynbinary directly. In README you showdotnet <dll>. Both are valid depending on install method. Add a brief comment to help users choose and avoid mismatches.For example:
local cmd = { - "roslyn", + -- If you installed a roslyn binary, use "roslyn". Otherwise, prefer: + -- "dotnet", vim.fs.joinpath(roslyn_base_path, "Microsoft.CodeAnalysis.LanguageServer.dll"), + "roslyn",README.md (5)
36-55: Fix TOC list indentation (MD007) and keep headings leanIndentation of nested list items is off, triggering markdownlint MD007. Also consider trimming the TOC to keep the README snappy per maintainer feedback, with deep examples living in doc/CONFIGURATION.md.
Apply this diff to fix indentation:
- - [lazy.nvim](#lazynvim) - - [vim.pack (neovim v0.12+)](#vimpack-neovim-v012) + - [lazy.nvim](#lazynvim) + - [vim.pack (neovim v0.12+)](#vimpack-neovim-v012)
123-143: Tighten wording and avoid plugin recommendations concernTwo small tweaks:
- Grammar: use “etc.” (with a period).
- Path guidance: avoid implying Mason-specific tooling; keep neutral.
- A table describing what features your LSP client supports (like completion, hover, etc). + A table describing what features your LSP client supports (like completion, hover, etc.). @@ - If you installed `rzls` via Mason, you don't need to set this. - But if you installed it manually, set this to the full path to your `rzls` binary. + If you installed `rzls` via a package manager that exposes it on PATH, you can omit this. + Otherwise, set this to the full path of your `rzls` binary.
191-191: Minor wording: prefer concise phrasing“A variety of custom methods” can be simplified.
-This plugin is still under construction. The Razor Language Server (`rzls`) uses a -variety of custom methods that need to be understood and implemented. We are +This plugin is still under construction. The Razor Language Server (`rzls`) uses +several custom methods that need to be understood and implemented. We are
63-63: Style nit: “inside of” → “inside”Smoother phrasing per LanguageTool suggestion.
-Provides completions and formatting for HTML inside of `.razor` files. +Provides completions and formatting for HTML inside `.razor` files.
48-51: Trim ancillary sections to keep README focused (maintainer feedback)Per maintainer’s comment about getting to the point, consider moving “Additional Configuration” (Telescope, Trouble) into doc/CONFIGURATION.md and linking to it, keeping the README concise.
I can provide a follow-up diff relocating those sections if you agree.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
README.md(4 hunks)doc/CONFIGURATION.md(1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
doc/CONFIGURATION.md (1)
lua/rzls/init.lua (1)
M.setup(48-148)
🪛 LanguageTool
README.md
[style] ~63-~63: This phrase is redundant (‘L’ stands for ‘language’). Use simply “HTML”.
Context: ...icrosoft/vscode-html-languageservice) - The HTML language server. Provides completions and format...
(ACRONYM_TAUTOLOGY)
[style] ~63-~63: This phrase is redundant. Consider using “inside”.
Context: ...des completions and formatting for HTML inside of .razor files.
[-> Jump to in...
(OUTSIDE_OF)
[style] ~128-~128: In American English, abbreviations like “etc.” require a period.
Context: ...lient supports (like completion, hover, etc). If you're using a completion plug...
(ETC_PERIOD)
[style] ~191-~191: Consider using a more concise synonym.
Context: ...The Razor Language Server (rzls) uses a variety of custom methods that need to be understo...
(A_VARIETY_OF)
🪛 markdownlint-cli2 (0.17.2)
README.md
43-43: Unordered list indentation
Expected: 4; Actual: 6
(MD007, ul-indent)
44-44: Unordered list indentation
Expected: 4; Actual: 6
(MD007, ul-indent)
60-60: Link fragments should be valid
(MD051, link-fragments)
62-62: Link fragments should be valid
(MD051, link-fragments)
64-64: Link fragments should be valid
(MD051, link-fragments)
66-66: Link fragments should be valid
(MD051, link-fragments)
74-74: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4
(MD001, heading-increment)
🔇 Additional comments (6)
doc/CONFIGURATION.md (2)
55-63: Razor filetypes registration looks goodPre-registering razor/cshtml filetypes in
initis correct and prevents late-detection issues.
118-123: Verifyroot_markersusage with new LSP APIDouble-check that
root_markers = { { ".sln", ".csproj", "project.json" }, ".git" }matches the expected schema forvim.lsp.configin Neovim 0.12. If the API expects a flat list or different key (e.g.,root_dirpattern), this may be ignored.Would you like me to generate a small script to scan for existing usages of
vim.lsp.configkeys in the repo to ensure consistency?README.md (4)
90-121: Confirm handler placement for roslyn.nvim and version expectationsPlacing
handlers = require("rzls.roslyn_handlers")underconfig = { ... }assumes roslyn.nvim passes-through LSP config as-is. Verify against current roslyn.nvim API so users don’t end up with silently ignored handlers. If handlers are top-level in roslyn.nvim’s setup, move accordingly.If roslyn.nvim requires Neovim 0.12’s
vim.lsp.config, consider noting that here too for consistency with doc/CONFIGURATION.md.
16-29: Reconcile CodeLens support status with configuration examplesThe Features table marks CodeLens as unsupported (❌) while examples enable
["csharp|code_lens"]. Confirm current support and align the table and examples accordingly.Would you like me to update the table and examples once you confirm the current behavior for Razor and C# buffers?
180-183: Nice cross-link to examplesLinking out to detailed examples keeps the README focused and discoverable. Good direction.
187-187: Validate currency of this Known Issue“Opening a CS file first means that roslyn and rzls don't connect properly.” If this has been addressed recently in rzls.nvim or roslyn integration, consider removing or scoping with version notes.
I can search the repo for related issues/commits to verify and update this note—let me know.
doc/CONFIGURATION.md
Outdated
| ```lua | ||
| vim.api.nvim_create_autocmd('LspAttach', { | ||
| callback = function(ev) | ||
| local client = vim.lsp.get_client_by_id(ev.data.client_id) | ||
| if client and client:supports_method(vim.lsp.protocol.Methods.textDocument_completion) then | ||
| vim.opt.completeopt = { 'menu', 'menuone', 'noinsert', 'fuzzy', 'popup' } | ||
| vim.lsp.completion.enable(true, client.id, ev.buf, { autotrigger = true }) | ||
| vim.keymap.set('i', '<C-Space>', function() | ||
| vim.lsp.completion.get() | ||
| end) | ||
| end | ||
| end, | ||
| }) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Scope completion keymap to the buffer and set opts properly
The <C-Space> mapping is currently global and missing options. Also prefer vim.opt_local when adjusting options per-buffer.
Apply this diff:
- if client and client:supports_method(vim.lsp.protocol.Methods.textDocument_completion) then
- vim.opt.completeopt = { 'menu', 'menuone', 'noinsert', 'fuzzy', 'popup' }
- vim.lsp.completion.enable(true, client.id, ev.buf, { autotrigger = true })
- vim.keymap.set('i', '<C-Space>', function()
- vim.lsp.completion.get()
- end)
+ if client and client:supports_method(vim.lsp.protocol.Methods.textDocument_completion) then
+ vim.opt_local.completeopt = { 'menu', 'menuone', 'noinsert', 'fuzzy', 'popup' }
+ vim.lsp.completion.enable(true, client.id, ev.buf, { autotrigger = true })
+ vim.keymap.set('i', '<C-Space>', function()
+ vim.lsp.completion.get()
+ end, { buffer = ev.buf, silent = true, desc = 'LSP: Trigger completion' })📝 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.
| ```lua | |
| vim.api.nvim_create_autocmd('LspAttach', { | |
| callback = function(ev) | |
| local client = vim.lsp.get_client_by_id(ev.data.client_id) | |
| if client and client:supports_method(vim.lsp.protocol.Methods.textDocument_completion) then | |
| vim.opt.completeopt = { 'menu', 'menuone', 'noinsert', 'fuzzy', 'popup' } | |
| vim.lsp.completion.enable(true, client.id, ev.buf, { autotrigger = true }) | |
| vim.keymap.set('i', '<C-Space>', function() | |
| vim.lsp.completion.get() | |
| end) | |
| end | |
| end, | |
| }) | |
| vim.api.nvim_create_autocmd('LspAttach', { | |
| callback = function(ev) | |
| local client = vim.lsp.get_client_by_id(ev.data.client_id) | |
| if client and client:supports_method(vim.lsp.protocol.Methods.textDocument_completion) then | |
| vim.opt_local.completeopt = { 'menu', 'menuone', 'noinsert', 'fuzzy', 'popup' } | |
| vim.lsp.completion.enable(true, client.id, ev.buf, { autotrigger = true }) | |
| vim.keymap.set('i', '<C-Space>', function() | |
| vim.lsp.completion.get() | |
| end, { buffer = ev.buf, silent = true, desc = 'LSP: Trigger completion' }) | |
| end | |
| end, | |
| }) |
🤖 Prompt for AI Agents
In doc/CONFIGURATION.md around lines 169 to 181, the LspAttach snippet sets
completeopt globally and creates a global <C-Space> mapping without options;
change vim.opt.completeopt to vim.opt_local.completeopt so the option is set
per-buffer, and scope the keymap to the buffer by passing mapping options like
{buffer = ev.buf, noremap = true, silent = true} to vim.keymap.set (keep mode
'i' and the callback), ensuring the mapping is local to the attached buffer and
non-recursive/silent.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🔭 Outside diff range comments (3)
README.md (3)
175-179: Fix Telescope ignore pattern (Lua patterns).The current pattern “%__virtual.cs$” won’t behave as intended:
- “%_” is unnecessary (underscore isn’t magic).
- “.” must be escaped to match a literal dot.
Use a Lua pattern that matches the literal “__virtual.cs” suffix.
- file_ignore_patterns = { "%__virtual.cs$" }, + file_ignore_patterns = { "__virtual%.cs$" },
191-195: Fix Trouble filter pattern (Lua patterns).Same issue as above: escape the dot; no need to escape underscore.
- return not string.match(item.basename, [[%__virtual.cs$]]) + return not string.match(item.basename, [[__virtual%.cs$]])
115-131: Use mason-registry API forrzlspath instead of$MASONTo avoid relying on an environment variable and to actually use the required module, update the Mason example in README.md (lines 115–131) as follows:
• File: README.md
• Section: “#### Mason” code snippet-local mason_registry = require("mason-registry") - -local rzls_path = vim.fn.expand("$MASON/packages/rzls/libexec") +local mason_registry = require("mason-registry") +local rzls_pkg = mason_registry.get_package("rzls") +local rzls_path = vim.fs.joinpath(rzls_pkg:get_install_path(), "libexec") local cmd = { "roslyn", "--stdio", "--logLevel=Information", "--extensionLogDirectory=" .. vim.fs.dirname(vim.lsp.get_log_path()), "--razorSourceGenerator=" .. vim.fs.joinpath(rzls_path, "Microsoft.CodeAnalysis.Razor.Compiler.dll"), "--razorDesignTimePath=" .. vim.fs.joinpath(rzls_path, "Targets", "Microsoft.NET.Sdk.Razor.DesignTime.targets"), "--extension", vim.fs.joinpath(rzls_path, "RazorExtension", "Microsoft.VisualStudioCode.RazorExtension.dll"), }If you prefer to remove Mason usage from the README entirely, consider moving this snippet to
doc/CONFIGURATION.mdand linking to it instead.
♻️ Duplicate comments (1)
README.md (1)
61-64: Clarify HTML-LSP reference and fix wording (“inside of”).
- The link currently points to the HTML language service library; most users need a distributable server (often from “vscode-langservers-extracted”).
- Replace “inside of” with “inside”.
-- [`html-lsp`](https://github.com/microsoft/vscode-html-languageservice) - The HTML language server. Provides completions and formatting for HTML inside of `.razor` files.<br/> +- [`html-lsp`](https://github.com/microsoft/vscode-html-languageservice) - HTML language server components. Provides completions and formatting for HTML inside `.razor` files. If you need a ready‑to‑run server, consider using the “vscode-langservers-extracted” package.<br/>
🧹 Nitpick comments (4)
README.md (4)
44-44: Capitalize “Neovim” for consistency in the TOC.Use the proper casing.
- - [vim.pack (neovim v0.12+)](#vimpack-neovim-v012) + - [vim.pack (Neovim v0.12+)](#vimpack-neovim-v012)
80-80: Capitalize “Neovim” in the section heading.Aligns with project naming and the TOC change above.
-### vim.pack (neovim v0.12+) +### vim.pack (Neovim v0.12+)
148-151: Punctuation: add period to “etc.”American English uses “etc.” with a period, even inside parentheses.
- A table describing what features your LSP client supports (like completion, hover, etc). + A table describing what features your LSP client supports (like completion, hover, etc.).
212-214: Tighten wording (“a variety of” → concise).Streamline phrasing for clarity.
-This plugin is still under construction. The Razor Language Server (`rzls`) uses a -variety of custom methods that need to be understood and implemented. We are +This plugin is still under construction. The Razor Language Server (`rzls`) uses +several custom methods that need to be implemented. We are
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
README.md(5 hunks)doc/CONFIGURATION.md(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- doc/CONFIGURATION.md
🧰 Additional context used
🪛 LanguageTool
README.md
[style] ~63-~63: This phrase is redundant (‘L’ stands for ‘language’). Use simply “HTML”.
Context: ...icrosoft/vscode-html-languageservice) - The HTML language server. Provides completions and format...
(ACRONYM_TAUTOLOGY)
[style] ~63-~63: This phrase is redundant. Consider using “inside”.
Context: ...des completions and formatting for HTML inside of .razor files.
- [`seblyng/roslyn...
(OUTSIDE_OF)
[style] ~149-~149: In American English, abbreviations like “etc.” require a period.
Context: ...lient supports (like completion, hover, etc). If you're using a completion plug...
(ETC_PERIOD)
[style] ~212-~212: Consider using a more concise synonym.
Context: ...The Razor Language Server (rzls) uses a variety of custom methods that need to be understo...
(A_VARIETY_OF)
🔇 Additional comments (2)
README.md (2)
72-85: Heading level fix looks good (MD001 resolved).The installation section now uses H3 under H2, avoiding heading jumps. Thanks for addressing this.
36-57: TOC structure and links look good.Overall navigation is clear and internally consistent after the restructure.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🔭 Outside diff range comments (1)
README.md (1)
103-113: Manual Roslyn cmd missing Razor extension argument — add--extensionto avoid Razor features not loadingWithout the Razor VSCode extension DLL, Roslyn won't activate Razor support. The Mason example includes it; the manual one should, too.
Apply this diff to the manual
cmdexample:local cmd = { "dotnet", vim.fs.joinpath(roslyn_base_path, "Microsoft.CodeAnalysis.LanguageServer.dll"), "--stdio", "--logLevel=Information", "--extensionLogDirectory=" .. vim.fs.dirname(vim.lsp.get_log_path()), "--razorSourceGenerator=" .. vim.fs.joinpath(rzls_base_path, "Microsoft.CodeAnalysis.Razor.Compiler.dll"), "--razorDesignTimePath=" .. vim.fs.joinpath(rzls_base_path, "Targets", "Microsoft.NET.Sdk.Razor.DesignTime.targets"), + "--extension", + vim.fs.joinpath( + rzls_base_path, + "RazorExtension", + "Microsoft.VisualStudioCode.RazorExtension.dll" + ), }
🧹 Nitpick comments (4)
README.md (4)
61-64: Reference the actual HTML language server package (not the library repo)Linking to the library repo can mislead users. Point to the extracted LSP package most setups use.
-- [`html-lsp`](https://github.com/microsoft/vscode-html-languageservice) - The HTML language server. Provides completions and formatting for HTML inside `.razor` files.<br/> +- [`vscode-langservers-extracted` (HTML)](https://github.com/hrsh7th/vscode-langservers-extracted) - HTML language server. Provides completions and formatting for HTML inside `.razor` files.<br/>
32-35: Tighten wording in the semantic highlighting noteShorter and clearer phrasing helps readers quickly understand what to do.
-> Semantic highlight groups need more configuration. If you find a -> property that isn't highlighted properly and is identified with `:Inspect` -> please raise an issue or a PR to link it to a highlight group. +> Semantic highlight groups may need extra configuration. If `:Inspect` shows a token that's not highlighted correctly, please open an issue or PR to map it to an appropriate highlight group.
149-161: Consider adding a concrete capabilities example (nvim-cmp) to reduce setup frictionMany users will copy-paste this; including a short example avoids common questions.
For example (place after the bullets or near the minimal
setup()):local capabilities = vim.lsp.protocol.make_client_capabilities() local ok_cmp, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp") if ok_cmp then capabilities = cmp_nvim_lsp.default_capabilities(capabilities) end require("rzls").setup({ capabilities = capabilities, })
202-205: Pluralize and tighten the link textReflect that the target doc has multiple examples.
-For detailed configuration examples, see our [example configuration](./doc/CONFIGURATION.md) +For detailed setup, see the [configuration examples](./doc/CONFIGURATION.md).
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
README.md(6 hunks)doc/CONFIGURATION.md(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- doc/CONFIGURATION.md
🧰 Additional context used
🪛 LanguageTool
README.md
[style] ~63-~63: This phrase is redundant (‘L’ stands for ‘language’). Use simply “HTML”.
Context: ...icrosoft/vscode-html-languageservice) - The HTML language server. Provides completions and format...
(ACRONYM_TAUTOLOGY)
🔇 Additional comments (4)
README.md (4)
36-45: TOC anchors and structure look goodAnchors match current headings (including emoji/punctuation slugging). Nice cleanup.
72-85: Installation sections are concise and correctly structuredHeading levels are consistent (H2 → H3). The lazy.nvim and vim.pack snippets are accurate.
176-181: Telescope ignore pattern is correctGood use of Lua patterns for ignoring generated virtual C# files.
189-196: Confirm Trouble.nvim API compatibility for custom diagnostics filterThis callback shape matches Trouble v3’s new API. If users are on Trouble v2,
modes.diagnostics.filteranditem.basenamewon’t exist.Please verify the docs assume Trouble v3+ (or add a brief note). If you want, I can draft a small note indicating v3 is required for this snippet.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
README.md (1)
60-63: Fix redundant "HTML language server" phrasing.The term "HTML language server" is redundant since "LSP" already stands for "Language Server Protocol".
Apply this diff to improve the phrasing:
-- [`html-lsp`](https://github.com/microsoft/vscode-html-languageservice) - The HTML language server. Provides completions and formatting for HTML inside `.razor` files.<br/> +- [`html-lsp`](https://github.com/microsoft/vscode-html-languageservice) - The HTML LSP. Provides completions and formatting for HTML inside `.razor` files.<br/>
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
README.md(6 hunks)doc/CONFIGURATION.md(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- doc/CONFIGURATION.md
🧰 Additional context used
🪛 LanguageTool
README.md
[style] ~62-~62: This phrase is redundant (‘L’ stands for ‘language’). Use simply “HTML”.
Context: ...icrosoft/vscode-html-languageservice) - The HTML language server. Provides completions and format...
(ACRONYM_TAUTOLOGY)
🔇 Additional comments (16)
README.md (16)
16-29: LGTM! Well-formatted feature table.The feature table is clear and comprehensive, providing a good overview of what's supported and what's not. The checkmarks and X marks make it easy to scan.
32-34: LGTM! Clear guidance for semantic highlighting issues.The note provides helpful guidance for users encountering semantic highlighting issues and encourages community contributions.
35-56: LGTM! Comprehensive table of contents.The table of contents is well-structured and provides good navigation for the documentation.
66-67: LGTM! Clear caution about required configuration.The caution message effectively alerts users to the required configuration and provides a helpful link.
71-83: LGTM! Clear installation instructions for both package managers.The installation examples for both lazy.nvim and vim.pack are concise and correct. The vim.pack example is particularly valuable for users wanting to use Neovim's built-in package manager.
87-92: LGTM! Excellent introduction to roslyn.nvim configuration.This section provides clear context about why specific configuration is needed and what the examples will demonstrate. The explanation helps users understand the relationship between the components.
107-110: LGTM! Proper manual installation command structure.The command structure correctly includes all necessary arguments for manual rzls integration with roslyn.
116-130: LGTM! Clean Mason-based installation example.The Mason configuration properly uses the Mason registry to locate the rzls installation path and constructs the command correctly.
132-141: LGTM! Clear setup example with handlers.The final setup example effectively shows how to use the composed command with the required rzls handlers.
145-163: LGTM! Well-documented configuration options.The configuration section clearly explains each option and provides helpful guidance about when to use them. The simple setup example at the end is perfect.
176-176: LGTM! Correct Telescope ignore pattern.The file ignore pattern correctly targets the virtual C# files generated by rzls.
192-192: LGTM! Proper Trouble.nvim filtering.The filter correctly excludes virtual C# files from diagnostics display.
200-203: LGTM! Good reference to detailed configuration.The reference to the separate configuration documentation is helpful and keeps the README concise while providing access to more detailed examples.
207-208: LGTM! Clear documentation of known issues.The known issues section clearly states the current limitations, which helps set proper expectations for users.
211-228: LGTM! Encouraging and comprehensive contributing section.The contributing section strikes a good balance between being welcoming to contributors and being realistic about the current state of the project. The reference to the Discord community is a nice touch.
229-231: LGTM! Added license section.Good addition of the license section for clarity.
f70740a to
5dd2819
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
♻️ Duplicate comments (1)
README.md (1)
60-63: Point to the actual HTML language server (not the library repo)The link currently targets the vscode-html-languageservice library, not an installable server. Suggest referencing vscode-langservers-extracted (html-languageserver) or lspconfig’s html docs.
-- [`html-lsp`](https://github.com/microsoft/vscode-html-languageservice) - The HTML LSP. Provides completions and formatting for HTML inside `.razor` files.<br/> +- [`html-lsp`](https://github.com/hrsh7th/vscode-langserver-extracted) - The HTML language server (html-languageserver). Provides completions and formatting for HTML inside `.razor` files.<br/> + (Alternatively, see nvim-lspconfig’s html setup if you use it.)
🧹 Nitpick comments (7)
doc/CONFIGURATION.md (5)
28-31: Grammar: “dependency” (singular) and clearer phrasingThe comment reads awkwardly. Use singular and tighten wording.
- -- By loading as a dependencies, we ensure that we are available to set - -- the handlers for Roslyn. + -- Load as a dependency so rzls.nvim is available to provide Roslyn handlers.
35-39: Explicitly state Neovim 0.12+ requirement for vim.lsp.config/enableThis snippet uses vim.lsp.config/vim.lsp.enable which are 0.12+ only. Make the requirement obvious to avoid copy-paste confusion on 0.11 and earlier.
- -- Adjust these paths to where you installed Roslyn and rzls. + -- Requires Neovim 0.12+ (uses vim.lsp.config / vim.lsp.enable). + -- Adjust these paths to where you installed Roslyn and rzls.
77-86: Avoid duplicating Razor filetype mappings provided by rzls.nvimrzls.nvim already registers razor/cshtml filetypes internally. Repeating it here is redundant and can confuse readers. Consider removing this block to keep the example lean.
- init = function() - -- We add the Razor file types before the plugin loads. - vim.filetype.add({ - extension = { - razor = "razor", - cshtml = "razor", - }, - }) - end, + -- init = function() end, -- Not needed; rzls.nvim registers Razor filetypes.
96-104: Same grammar nit in the Mason exampleUse “dependency” (singular) here too.
- -- By loading as a dependencies, we ensure that we are available to set - -- the handlers for Roslyn. + -- Load as a dependency so rzls.nvim is available to provide Roslyn handlers.
147-156: Redundant Razor filetype mappings (Mason variant)Same redundancy as in the manual variant; rzls.nvim already adds these mappings.
- init = function() - -- We add the Razor file types before the plugin loads. - vim.filetype.add({ - extension = { - razor = "razor", - cshtml = "razor", - }, - }) - end, + -- init = function() end, -- Not needed; rzls.nvim registers Razor filetypes.README.md (2)
28-29: Clarify CodeLens support scope in FeaturesYou enable Code Lens for C# in examples, while the table marks it unsupported. Clarify that Code Lens is currently for C# (via Roslyn), not Razor buffers.
-| CodeLens | ❌ | +| CodeLens | ❌ | @@ -> Semantic highlight groups may need extra configuration. +> Semantic highlight groups may need extra configuration. +> Note: Code Lens is available for C# buffers via Roslyn; Razor buffers currently do not show Code Lens.Also applies to: 31-34
69-84: Optionally note the Neovim version requirement near install snippetsBecause later examples rely on vim.lsp.config/enable (0.12+), consider a brief note in Installing rzls.nvim to set reader expectations.
-## Installing `rzls.nvim` +## Installing `rzls.nvim` +Note: Some configuration examples in this README target Neovim 0.12+ (vim.lsp.config / vim.lsp.enable).
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
README.md(6 hunks)doc/CONFIGURATION.md(1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
doc/CONFIGURATION.md (1)
lua/rzls/init.lua (1)
M.setup(48-148)
🔇 Additional comments (2)
doc/CONFIGURATION.md (1)
210-246: root_markers is supported in Neovim 0.12’s declarative LSP APIWe’ve confirmed that
root_markersis a valid key (it’s the shorthand the runtime uses to deriveroot_dir). No changes are required to the examples in:
- doc/CONFIGURATION.md lines 210–246
- doc/CONFIGURATION.md lines 266–302
README.md (1)
132-141: Handlers belong underconfigas shown
Verified that roslyn.nvim’s setup API expects LSP handlers (along with on_attach, settings, capabilities, etc.) in the nestedconfigtable. The snippet in README.md is correct and will work as-is.
| vim.lsp.config("roslyn", { | ||
| cmd = cmd, | ||
| handlers = require("rzls.roslyn_handlers"), | ||
| settings = { | ||
| ["csharp|inlay_hints"] = { | ||
| csharp_enable_inlay_hints_for_implicit_object_creation = true, | ||
| csharp_enable_inlay_hints_for_implicit_variable_types = true, | ||
|
|
||
| csharp_enable_inlay_hints_for_lambda_parameter_types = true, | ||
| csharp_enable_inlay_hints_for_types = true, | ||
| dotnet_enable_inlay_hints_for_indexer_parameters = true, | ||
| dotnet_enable_inlay_hints_for_literal_parameters = true, | ||
| dotnet_enable_inlay_hints_for_object_creation_parameters = true, | ||
| dotnet_enable_inlay_hints_for_other_parameters = true, | ||
| dotnet_enable_inlay_hints_for_parameters = true, | ||
| dotnet_suppress_inlay_hints_for_parameters_that_differ_only_by_suffix = true, | ||
| dotnet_suppress_inlay_hints_for_parameters_that_match_argument_name = true, | ||
| dotnet_suppress_inlay_hints_for_parameters_that_match_method_intent = true, | ||
| }, | ||
| ["csharp|code_lens"] = { | ||
| dotnet_enable_references_code_lens = true, | ||
| }, | ||
| }, | ||
| }) | ||
| vim.lsp.enable("roslyn") | ||
| end, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Constrain Roslyn to C# buffers and define project roots (Mason variant)
Mirror the manual example: restrict to C# and set root markers.
vim.lsp.config("roslyn", {
cmd = cmd,
handlers = require("rzls.roslyn_handlers"),
+ filetypes = { "cs" },
+ root_markers = { { ".sln", ".csproj", "project.json" }, ".git" },
settings = {📝 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.
| vim.lsp.config("roslyn", { | |
| cmd = cmd, | |
| handlers = require("rzls.roslyn_handlers"), | |
| settings = { | |
| ["csharp|inlay_hints"] = { | |
| csharp_enable_inlay_hints_for_implicit_object_creation = true, | |
| csharp_enable_inlay_hints_for_implicit_variable_types = true, | |
| csharp_enable_inlay_hints_for_lambda_parameter_types = true, | |
| csharp_enable_inlay_hints_for_types = true, | |
| dotnet_enable_inlay_hints_for_indexer_parameters = true, | |
| dotnet_enable_inlay_hints_for_literal_parameters = true, | |
| dotnet_enable_inlay_hints_for_object_creation_parameters = true, | |
| dotnet_enable_inlay_hints_for_other_parameters = true, | |
| dotnet_enable_inlay_hints_for_parameters = true, | |
| dotnet_suppress_inlay_hints_for_parameters_that_differ_only_by_suffix = true, | |
| dotnet_suppress_inlay_hints_for_parameters_that_match_argument_name = true, | |
| dotnet_suppress_inlay_hints_for_parameters_that_match_method_intent = true, | |
| }, | |
| ["csharp|code_lens"] = { | |
| dotnet_enable_references_code_lens = true, | |
| }, | |
| }, | |
| }) | |
| vim.lsp.enable("roslyn") | |
| end, | |
| vim.lsp.config("roslyn", { | |
| cmd = cmd, | |
| handlers = require("rzls.roslyn_handlers"), | |
| filetypes = { "cs" }, | |
| root_markers = { { ".sln", ".csproj", "project.json" }, ".git" }, | |
| settings = { | |
| ["csharp|inlay_hints"] = { | |
| csharp_enable_inlay_hints_for_implicit_object_creation = true, | |
| csharp_enable_inlay_hints_for_implicit_variable_types = true, | |
| csharp_enable_inlay_hints_for_lambda_parameter_types = true, | |
| csharp_enable_inlay_hints_for_types = true, | |
| dotnet_enable_inlay_hints_for_indexer_parameters = true, | |
| dotnet_enable_inlay_hints_for_literal_parameters = true, | |
| dotnet_enable_inlay_hints_for_object_creation_parameters = true, | |
| dotnet_enable_inlay_hints_for_other_parameters = true, | |
| dotnet_enable_inlay_hints_for_parameters = true, | |
| dotnet_suppress_inlay_hints_for_parameters_that_differ_only_by_suffix = true, | |
| dotnet_suppress_inlay_hints_for_parameters_that_match_argument_name = true, | |
| dotnet_suppress_inlay_hints_for_parameters_that_match_method_intent = true, | |
| }, | |
| ["csharp|code_lens"] = { | |
| dotnet_enable_references_code_lens = true, | |
| }, | |
| }, | |
| }) | |
| vim.lsp.enable("roslyn") | |
| end, |
🤖 Prompt for AI Agents
doc/CONFIGURATION.md around lines 121-146: the roslyn LSP setup needs to be
constrained to C# buffers and supply project root detection (Mason/lspconfig
style); update the config block to include filetypes = { "cs" } and add a
root_dir using lspconfig.util.root_pattern (for example root_pattern("*.sln",
"*.csproj", ".git")) so the server only attaches to C# projects and resolves
workspace roots correctly.
| vim.pack.add({ "https://github.com/seblyng/roslyn.nvim.git" }) | ||
|
|
||
| require("roslyn").setup({ | ||
| ft = { "cs", "razor" } | ||
| }) | ||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Avoid attaching Roslyn to Razor filetype
Roslyn should handle C# buffers; Razor is handled by rzls. Including "razor" here risks double-attaching or conflicts.
-require("roslyn").setup({
- ft = { "cs", "razor" }
-})
+require("roslyn").setup({
+ ft = { "cs" }
+})📝 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.
| vim.pack.add({ "https://github.com/seblyng/roslyn.nvim.git" }) | |
| require("roslyn").setup({ | |
| ft = { "cs", "razor" } | |
| }) | |
| ``` | |
| vim.pack.add({ "https://github.com/seblyng/roslyn.nvim.git" }) | |
| require("roslyn").setup({ | |
| ft = { "cs" } | |
| }) |
🤖 Prompt for AI Agents
In doc/CONFIGURATION.md around lines 319 to 324 the example config registers
roslyn for both "cs" and "razor"; this can cause roslyn to attach to Razor
buffers (which should be handled by rzls) and create double-attach/conflicts —
update the example to remove "razor" from the ft list so roslyn only targets C#
(e.g., ft = { "cs" }) and optionally add a brief comment noting that Razor is
handled by rzls to avoid confusion.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (5)
doc/CONFIGURATION.md (5)
25-25: Don’t attach Roslyn to Razor buffersRoslyn should only target C#; Razor buffers are handled by rzls.nvim. Remove "razor" from the filetypes.
- ft = { "cs", "razor" }, + ft = { "cs" },
51-74: Constrain Roslyn by filetype and project roots (prevents misattachment)Add filetypes and root markers so Roslyn attaches only to C# buffers and resolves the correct workspace root.
vim.lsp.config("roslyn", { cmd = cmd, handlers = require("rzls.roslyn_handlers"), + filetypes = { "cs" }, + root_markers = { { ".sln", ".csproj", "project.json" }, ".git" }, settings = {
96-96: Don’t attach Roslyn to Razor buffers (Mason/lazy example)Keep Roslyn focused on C#; Razor is managed by rzls.
- ft = { "cs", "razor" }, + ft = { "cs" },
121-144: Constrain Roslyn by filetype and roots (Mason/lazy example)Mirror the manual example: restrict to C# and define roots for predictable workspace detection.
vim.lsp.config("roslyn", { cmd = cmd, handlers = require("rzls.roslyn_handlers"), + filetypes = { "cs" }, + root_markers = { { ".sln", ".csproj", "project.json" }, ".git" }, settings = {
318-323: Avoid registering Roslyn for Razor in vim.pack plugin snippetEnsure roslyn.nvim only targets C# to prevent double-attach with rzls.
-require("roslyn").setup({ - ft = { "cs", "razor" } -}) +require("roslyn").setup({ + ft = { "cs" } +})
🧹 Nitpick comments (5)
doc/CONFIGURATION.md (3)
251-253: Resolve rzls path via mason-registry instead of hardcoded $MASONUsing mason-registry is more robust than relying on an env var that may differ across systems.
-require("mason-registry") -local rzls_path = vim.fn.expand("$MASON/packages/rzls/libexec") +local mason_registry = require("mason-registry") +local rzls_pkg = mason_registry.get_package("rzls") +local rzls_path = vim.fs.joinpath(rzls_pkg:get_install_path(), "libexec")
28-31: Grammar nit: “a dependencies” → “a dependency”Minor wording fix in the comment.
- -- By loading as a dependencies, we ensure that we are available to set + -- By loading as a dependency, we ensure that we are available to set -- the handlers for Roslyn.
99-101: Grammar nit: “a dependencies” → “a dependency” (Mason block)Same wording adjustment as above.
- -- By loading as a dependencies, we ensure that we are available to set + -- By loading as a dependency, we ensure that we are available to set -- the handlers for Roslyn.README.md (2)
62-62: Reference the actual HTML server package and simplify wordingPoint to the commonly used server distribution and drop “LSP” tautology.
-- [`html-lsp`](https://github.com/microsoft/vscode-html-languageservice) - The HTML LSP. Provides completions and formatting for HTML inside `.razor` files.<br/> +- [`vscode-langservers-extracted` (HTML)](https://github.com/hrsh7th/vscode-langservers-extracted) - The HTML language server. Provides completions and formatting for HTML inside `.razor` files.<br/>
131-139: Double-check roslyn.nvim setup shape (“config” nesting and handlers)Confirm that roslyn.nvim expects handlers under a nested “config” table alongside “cmd”. If the plugin expects top-level keys (e.g., handlers = ... directly), adjust accordingly to match upstream API.
Would you like me to cross-check roslyn.nvim’s latest README and open a follow-up PR if the shape needs tweaking?
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (2)
README.md(6 hunks)doc/CONFIGURATION.md(1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
doc/CONFIGURATION.md (1)
lua/rzls/init.lua (1)
M.setup(48-148)
🪛 LanguageTool
README.md
[grammar] ~16-~16: There might be a mistake here.
Context: ...-- | | Hover | ✅ | | Diagnostics | ✅ | | Go...
(QB_NEW_EN)
[grammar] ~17-~17: There might be a mistake here.
Context: ... | | Diagnostics | ✅ | | Go To Definition | ✅ | | Go...
(QB_NEW_EN)
[grammar] ~18-~18: There might be a mistake here.
Context: ... | | Go To Definition | ✅ | | Go To References | ✅ | | Se...
(QB_NEW_EN)
[grammar] ~19-~19: There might be a mistake here.
Context: ... | | Go To References | ✅ | | Semantic Highlighting | ✅ | | Fo...
(QB_NEW_EN)
[grammar] ~20-~20: There might be a mistake here.
Context: ... | | Semantic Highlighting | ✅ | | Formatting | ✅ | | Re...
(QB_NEW_EN)
[grammar] ~21-~21: There might be a mistake here.
Context: ... | | Formatting | ✅ | | Rename Symbol | ✅ | | Si...
(QB_NEW_EN)
[grammar] ~22-~22: There might be a mistake here.
Context: ... | | Rename Symbol | ✅ | | Signature Help | ✅ | | Co...
(QB_NEW_EN)
[grammar] ~23-~23: There might be a mistake here.
Context: ... | | Signature Help | ✅ | | Completions | ✅ | | In...
(QB_NEW_EN)
[grammar] ~24-~24: There might be a mistake here.
Context: ... | | Completions | ✅ | | Inlay Hints | ✅ | | Co...
(QB_NEW_EN)
[grammar] ~25-~25: There might be a mistake here.
Context: ... | | Inlay Hints | ✅ | | Code Actions | ✅ | | Fo...
(QB_NEW_EN)
[grammar] ~26-~26: There might be a mistake here.
Context: ... | | Code Actions | ✅ | | Folding | ✅ | | Co...
(QB_NEW_EN)
[grammar] ~27-~27: There might be a mistake here.
Context: ... | | Folding | ✅ | | CodeLens | ❌ | | Fo...
(QB_NEW_EN)
[grammar] ~28-~28: There might be a mistake here.
Context: ... | | CodeLens | ❌ | | Format New Files | ❌ | > [...
(QB_NEW_EN)
[grammar] ~35-~35: There might be a mistake here.
Context: ... highlight group. ## Table of Contents - rzls.nvim 🚀 - [Descripti...
(QB_NEW_EN)
[grammar] ~37-~37: There might be a mistake here.
Context: ...tents - rzls.nvim 🚀 - Description 📄 - [Fea...
(QB_NEW_EN)
[grammar] ~38-~38: There might be a mistake here.
Context: ...Description 📄 - Features - [Table of Content...
(QB_NEW_EN)
[grammar] ~39-~39: There might be a mistake here.
Context: ...ion-) - Features - Table of Contents -...
(QB_NEW_EN)
[grammar] ~40-~40: There might be a mistake here.
Context: ... of Contents](#table-of-contents) - Dependencies - [Installi...
(QB_NEW_EN)
[grammar] ~41-~41: There might be a mistake here.
Context: ... - Dependencies - [Installing rzls.nvim](#installing-rzlsnv...
(QB_NEW_EN)
[grammar] ~42-~42: There might be a mistake here.
Context: ...ls.nvim`](#installing-rzlsnvim) - lazy.nvim - [vim.pack (Neo...
(QB_NEW_EN)
[grammar] ~43-~43: There might be a mistake here.
Context: ...m) - lazy.nvim - [vim.pack (Neovim v0.12+)](#vimpack-neovim-...
(QB_NEW_EN)
[grammar] ~44-~44: There might be a mistake here.
Context: ...im v0.12+)](#vimpack-neovim-v012) - [Plugin Configuration](#plugin-configuratio...
(QB_NEW_EN)
[grammar] ~45-~45: There might be a mistake here.
Context: ...uration](#plugin-configuration) - [Configuring seblyng/roslyn.nvim](#config...
(QB_NEW_EN)
[grammar] ~46-~46: There might be a mistake here.
Context: ...onfiguring-seblyngroslynnvim) - Manually - [Mason](#maso...
(QB_NEW_EN)
[grammar] ~47-~47: There might be a mistake here.
Context: ... - Manually - Mason - [Configuring `rzls.nv...
(QB_NEW_EN)
[grammar] ~48-~48: There might be a mistake here.
Context: ...nually) - Mason - [Configuring rzls.nvim](#configuring-rzls...
(QB_NEW_EN)
[grammar] ~49-~49: There might be a mistake here.
Context: ...zls.nvim`](#configuring-rzlsnvim) - [Additional Configuration](#additional-conf...
(QB_NEW_EN)
[grammar] ~50-~50: There might be a mistake here.
Context: ...ion](#additional-configuration) - Telescope.nvim - [Tro...
(QB_NEW_EN)
[grammar] ~51-~51: There might be a mistake here.
Context: ...Telescope.nvim](#telescopenvim) - Trouble.nvim - [Example C...
(QB_NEW_EN)
[grammar] ~52-~52: There might be a mistake here.
Context: ... - Trouble.nvim - [Example Configuration](#example-configurat...
(QB_NEW_EN)
[grammar] ~53-~53: There might be a mistake here.
Context: ...guration](#example-configuration) - Known Issues - [Contribu...
(QB_NEW_EN)
[grammar] ~54-~54: There might be a mistake here.
Context: ... - Known Issues - Contributing - [Helping ...
(QB_NEW_EN)
[grammar] ~55-~55: There might be a mistake here.
Context: ... - Contributing - Helping Out - [License](#...
(QB_NEW_EN)
[grammar] ~58-~58: There might be a mistake here.
Context: ...elping-out) - License ## Dependencies - [roslyn](https://github....
(QB_NEW_EN)
[grammar] ~65-~65: There might be a mistake here.
Context: ...lyn` language server.
> [!CAUTION] > Please see the [configuring seblyng/ro...
(QB_NEW_EN)
[grammar] ~66-~66: There might be a mistake here.
Context: ...r extra arguments that must be passed to > roslyn.nvim setup. ## Installing `r...
(QB_NEW_EN)
[grammar] ~205-~205: There might be a mistake here.
Context: ...at this time, due to path normalization. - Opening a CS file first means that `rosl...
(QB_NEW_EN)
[grammar] ~211-~211: There might be a mistake here.
Context: ...to be understood and implemented. We are actively working on this and appreciate ...
(QB_NEW_EN)
[grammar] ~214-~214: There might be a mistake here.
Context: ...nity for support of new features, fixing bugs, issues or things on the TODO-list ...
(QB_NEW_EN)
[grammar] ~215-~215: There might be a mistake here.
Context: ... (Grep the code for TODO). If you have experience with LSP or Razor and would l...
(QB_NEW_EN)
[grammar] ~216-~216: There might be a mistake here.
Context: ...ntribute, please open a Pull Request. If you encounter any issues or have suggest...
(QB_NEW_EN)
doc/CONFIGURATION.md
[grammar] ~3-~3: There might be a mistake here.
Context: ...figurations
- Example configurations
- [1. lazy.nvim example](#1-lazynvim-exampl...
(QB_NEW_EN)
[grammar] ~4-~4: There might be a mistake here.
Context: ...nfigurations)
- 1. lazy.nvim example
- Manually
- [Mason](#mas...
(QB_NEW_EN)
[grammar] ~5-~5: There might be a mistake here.
Context: ...e](#1-lazynvim-example)
- Manually
- Mason
- [2. vim.pack example...
(QB_NEW_EN)
[grammar] ~6-~6: There might be a mistake here.
Context: ... - Manually
- Mason
- [2. vim.pack example (Neovim 0.12+)](#2-v...
(QB_NEW_EN)
[grammar] ~7-~7: There might be a mistake here.
Context: ... - 2. vim.pack example (Neovim 0.12+)
- Overall structure
...
(QB_NEW_EN)
[style] ~8-~8: ‘Overall structure’ might be wordy. Consider a shorter alternative.
Context: ...(#2-vimpack-example-neovim-012)
- Overall structure
- [init.lua...
(EN_WORDINESS_PREMIUM_OVERALL_STRUCTURE)
[grammar] ~11-~11: There might be a mistake here.
Context: ....lua](#lsproslynlua) - [Manually](#manually-1) - [Mason](#mason-1) - [lua/config/fil...
(QB_NEW_EN)
[style] ~165-~165: ‘Overall structure’ might be wordy. Consider a shorter alternative.
Context: ...th vim.pack in Neovim v0.12+
Overall structure
├── init.lua
├── lsp
│ ...
(EN_WORDINESS_PREMIUM_OVERALL_STRUCTURE)
</details>
</details>
</details>
<details>
<summary>🔇 Additional comments (1)</summary><blockquote>
<details>
<summary>README.md (1)</summary>
`201-202`: **Nice: clear pointer to detailed examples**
The link to CONFIGURATION.md is correct and helpful.
</details>
</blockquote></details>
</details>
<!-- This is an auto-generated comment by CodeRabbit for review status -->
|
@tris203 Sorry it took a bit, some things came up. I think this should be good, I removed any of the Mason stuff that wasn't in the original README, kept the same general structure that I had before. Should be ready to merge if you are still up for it |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (4)
doc/CONFIGURATION.md (3)
25-25: Do not register Roslyn for the Razor filetypeIncluding "razor" here risks double-attaching Roslyn to Razor buffers (rzls should own Razor). Limit Roslyn to C# only.
- ft = { "cs", "razor" }, + ft = { "cs" },
96-96: Repeat: limit Roslyn to C# in the Mason exampleSame rationale as above; avoid attaching Roslyn to Razor buffers.
- ft = { "cs", "razor" }, + ft = { "cs" },
318-323: Repeat: avoid attaching Roslyn to Razor in vim.pack plugin setupKeep this consistent with guidance above and with rzls owning Razor buffers.
-require("roslyn").setup({ - ft = { "cs", "razor" } -}) +require("roslyn").setup({ + ft = { "cs" } +})README.md (1)
318-322: Do not include "razor" in roslyn.nvim’s ft listTo prevent double-attach/conflicts, keep Roslyn scoped to C# only; Razor buffers are handled by rzls.
require("roslyn").setup({ - ft = { "cs", "razor" } + ft = { "cs" } })
🧹 Nitpick comments (6)
doc/CONFIGURATION.md (3)
51-74: Constrain Roslyn LSP to C# and define project roots (consistency with later example)The lazy.nvim “Manually” block starts Roslyn without filetype/root constraints. Mirror the later lsp/roslyn.lua example so Roslyn attaches only to C# buffers and resolves project roots consistently.
vim.lsp.config("roslyn", { cmd = cmd, handlers = require("rzls.roslyn_handlers"), + filetypes = { "cs" }, + -- Align with the lsp/roslyn.lua example: + root_markers = { { ".sln", ".csproj", "project.json" }, ".git" }, settings = {
121-147: Apply the same filetype/root constraints in the Mason variantKeep the two lazy.nvim examples consistent and predictable by adding filetypes/root markers here as well.
vim.lsp.config("roslyn", { cmd = cmd, handlers = require("rzls.roslyn_handlers"), + filetypes = { "cs" }, + root_markers = { { ".sln", ".csproj", "project.json" }, ".git" }, settings = {
17-20: Add a short version note: Neovim 0.12+ required for vim.lsp.config/enableThese examples call vim.lsp.config()/vim.lsp.enable(), which are 0.12+ APIs. Add a one-line note to set expectations for users on older versions.
-## 1. lazy.nvim example +## 1. lazy.nvim example +Requires Neovim 0.12+ (uses vim.lsp.config / vim.lsp.enable).README.md (3)
131-140: Add filetype scoping to the roslyn.nvim setup snippetThe “Configuring seblyng/roslyn.nvim” snippet does not limit Roslyn to C#; include ft = { "cs" } to align with the rest of the docs and avoid Razor attach.
require("roslyn").setup({ + -- Restrict Roslyn to C# buffers; Razor is handled by rzls.nvim. + ft = { "cs" }, cmd = cmd, config = { -- The rest of your Roslyn configuration handlers = require("rzls.roslyn_handlers"), }, })
116-118: Use mason-registry consistently or drop itThis example requires("mason-registry") but then reads $MASON directly. Prefer a single approach; using mason-registry provides a robust, portable install path.
-require("mason-registry") -local rzls_path = vim.fn.expand("$MASON/packages/rzls/libexec") +local mason_registry = require("mason-registry") +local rzls_pkg = mason_registry.get_package("rzls") +local rzls_path = vim.fs.joinpath(rzls_pkg:get_install_path(), "libexec")
69-84: Minor: call out Neovim version where relevantThe install blocks are fine, but the later configuration relies on Neovim 0.12+ APIs. Consider a brief reminder here (or at the start of “Plugin Configuration”) to reduce support questions from users on older versions.
-## Plugin Configuration +## Plugin Configuration +Note: Examples below use Neovim 0.12+ (vim.lsp.config / vim.lsp.enable).
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (2)
README.md(6 hunks)doc/CONFIGURATION.md(1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (2)
README.md (2)
lua/rzls/refresh.lua (1)
refresh_diagnostics(69-86)lua/rzls/roslyn_handlers/provideDynamicFileInfo.lua (1)
refresh_roslyn_diagnostics(5-14)
doc/CONFIGURATION.md (1)
lua/rzls/init.lua (1)
M.setup(48-148)
🪛 LanguageTool
README.md
[grammar] ~16-~16: There might be a mistake here.
Context: ...-- | | Hover | ✅ | | Diagnostics | ✅ | | Go...
(QB_NEW_EN)
[grammar] ~17-~17: There might be a mistake here.
Context: ... | | Diagnostics | ✅ | | Go To Definition | ✅ | | Go...
(QB_NEW_EN)
[grammar] ~18-~18: There might be a mistake here.
Context: ... | | Go To Definition | ✅ | | Go To References | ✅ | | Se...
(QB_NEW_EN)
[grammar] ~19-~19: There might be a mistake here.
Context: ... | | Go To References | ✅ | | Semantic Highlighting | ✅ | | Fo...
(QB_NEW_EN)
[grammar] ~20-~20: There might be a mistake here.
Context: ... | | Semantic Highlighting | ✅ | | Formatting | ✅ | | Re...
(QB_NEW_EN)
[grammar] ~21-~21: There might be a mistake here.
Context: ... | | Formatting | ✅ | | Rename Symbol | ✅ | | Si...
(QB_NEW_EN)
[grammar] ~22-~22: There might be a mistake here.
Context: ... | | Rename Symbol | ✅ | | Signature Help | ✅ | | Co...
(QB_NEW_EN)
[grammar] ~23-~23: There might be a mistake here.
Context: ... | | Signature Help | ✅ | | Completions | ✅ | | In...
(QB_NEW_EN)
[grammar] ~24-~24: There might be a mistake here.
Context: ... | | Completions | ✅ | | Inlay Hints | ✅ | | Co...
(QB_NEW_EN)
[grammar] ~25-~25: There might be a mistake here.
Context: ... | | Inlay Hints | ✅ | | Code Actions | ✅ | | Fo...
(QB_NEW_EN)
[grammar] ~26-~26: There might be a mistake here.
Context: ... | | Code Actions | ✅ | | Folding | ✅ | | Co...
(QB_NEW_EN)
[grammar] ~27-~27: There might be a mistake here.
Context: ... | | Folding | ✅ | | CodeLens | ❌ | | Fo...
(QB_NEW_EN)
[grammar] ~28-~28: There might be a mistake here.
Context: ... | | CodeLens | ❌ | | Format New Files | ❌ | > [...
(QB_NEW_EN)
[grammar] ~35-~35: There might be a mistake here.
Context: ... highlight group. ## Table of Contents - rzls.nvim 🚀 - [Descripti...
(QB_NEW_EN)
[grammar] ~37-~37: There might be a mistake here.
Context: ...tents - rzls.nvim 🚀 - Description 📄 - [Fea...
(QB_NEW_EN)
[grammar] ~38-~38: There might be a mistake here.
Context: ...Description 📄 - Features - [Table of Content...
(QB_NEW_EN)
[grammar] ~39-~39: There might be a mistake here.
Context: ...ion-) - Features - Table of Contents -...
(QB_NEW_EN)
[grammar] ~40-~40: There might be a mistake here.
Context: ... of Contents](#table-of-contents) - Dependencies - [Installi...
(QB_NEW_EN)
[grammar] ~41-~41: There might be a mistake here.
Context: ... - Dependencies - [Installing rzls.nvim](#installing-rzlsnv...
(QB_NEW_EN)
[grammar] ~42-~42: There might be a mistake here.
Context: ...ls.nvim`](#installing-rzlsnvim) - lazy.nvim - [vim.pack (Neo...
(QB_NEW_EN)
[grammar] ~43-~43: There might be a mistake here.
Context: ...m) - lazy.nvim - [vim.pack (Neovim v0.12+)](#vimpack-neovim-...
(QB_NEW_EN)
[grammar] ~44-~44: There might be a mistake here.
Context: ...im v0.12+)](#vimpack-neovim-v012) - [Plugin Configuration](#plugin-configuratio...
(QB_NEW_EN)
[grammar] ~45-~45: There might be a mistake here.
Context: ...uration](#plugin-configuration) - [Configuring seblyng/roslyn.nvim](#config...
(QB_NEW_EN)
[grammar] ~46-~46: There might be a mistake here.
Context: ...onfiguring-seblyngroslynnvim) - Manually - [Mason](#maso...
(QB_NEW_EN)
[grammar] ~47-~47: There might be a mistake here.
Context: ... - Manually - Mason - [Configuring `rzls.nv...
(QB_NEW_EN)
[grammar] ~48-~48: There might be a mistake here.
Context: ...nually) - Mason - [Configuring rzls.nvim](#configuring-rzls...
(QB_NEW_EN)
[grammar] ~49-~49: There might be a mistake here.
Context: ...zls.nvim`](#configuring-rzlsnvim) - [Additional Configuration](#additional-conf...
(QB_NEW_EN)
[grammar] ~50-~50: There might be a mistake here.
Context: ...ion](#additional-configuration) - Telescope.nvim - [Tro...
(QB_NEW_EN)
[grammar] ~51-~51: There might be a mistake here.
Context: ...Telescope.nvim](#telescopenvim) - Trouble.nvim - [Example C...
(QB_NEW_EN)
[grammar] ~52-~52: There might be a mistake here.
Context: ... - Trouble.nvim - [Example Configuration](#example-configurat...
(QB_NEW_EN)
[grammar] ~53-~53: There might be a mistake here.
Context: ...guration](#example-configuration) - Known Issues - [Contribu...
(QB_NEW_EN)
[grammar] ~54-~54: There might be a mistake here.
Context: ... - Known Issues - Contributing - [Helping ...
(QB_NEW_EN)
[grammar] ~55-~55: There might be a mistake here.
Context: ... - Contributing - Helping Out - [License](#...
(QB_NEW_EN)
[grammar] ~58-~58: There might be a mistake here.
Context: ...elping-out) - License ## Dependencies - [roslyn](https://github....
(QB_NEW_EN)
[style] ~62-~62: This phrase is redundant (‘L’ stands for ‘language’). Use simply “HTML”.
Context: ...icrosoft/vscode-html-languageservice) - The HTML language server. Provides completions and format...
(ACRONYM_TAUTOLOGY)
[grammar] ~65-~65: There might be a mistake here.
Context: ...lyn` language server.
> [!CAUTION] > Please see the [configuring seblyng/ro...
(QB_NEW_EN)
[grammar] ~66-~66: There might be a mistake here.
Context: ...r extra arguments that must be passed to > roslyn.nvim setup. ## Installing `r...
(QB_NEW_EN)
[grammar] ~205-~205: There might be a mistake here.
Context: ...at this time, due to path normalization. - Opening a CS file first means that `rosl...
(QB_NEW_EN)
[grammar] ~211-~211: There might be a mistake here.
Context: ...to be understood and implemented. We are actively working on this and appreciate ...
(QB_NEW_EN)
[grammar] ~214-~214: There might be a mistake here.
Context: ...nity for support of new features, fixing bugs, issues or things on the TODO-list ...
(QB_NEW_EN)
[grammar] ~215-~215: There might be a mistake here.
Context: ... (Grep the code for TODO). If you have experience with LSP or Razor and would l...
(QB_NEW_EN)
[grammar] ~216-~216: There might be a mistake here.
Context: ...ntribute, please open a Pull Request. If you encounter any issues or have suggest...
(QB_NEW_EN)
doc/CONFIGURATION.md
[grammar] ~3-~3: There might be a mistake here.
Context: ...figurations
- Example configurations
- [1. lazy.nvim example](#1-lazynvim-exampl...
(QB_NEW_EN)
[grammar] ~4-~4: There might be a mistake here.
Context: ...nfigurations)
- 1. lazy.nvim example
- Manually
- [Mason](#mas...
(QB_NEW_EN)
[grammar] ~5-~5: There might be a mistake here.
Context: ...e](#1-lazynvim-example)
- Manually
- Mason
- [2. vim.pack example...
(QB_NEW_EN)
[grammar] ~6-~6: There might be a mistake here.
Context: ... - Manually
- Mason
- [2. vim.pack example (Neovim 0.12+)](#2-v...
(QB_NEW_EN)
[grammar] ~7-~7: There might be a mistake here.
Context: ... - 2. vim.pack example (Neovim 0.12+)
- Overall structure
...
(QB_NEW_EN)
[style] ~8-~8: ‘Overall structure’ might be wordy. Consider a shorter alternative.
Context: ...(#2-vimpack-example-neovim-012)
- Overall structure
- [init.lua...
(EN_WORDINESS_PREMIUM_OVERALL_STRUCTURE)
[grammar] ~11-~11: There might be a mistake here.
Context: ....lua](#lsproslynlua) - [Manually](#manually-1) - [Mason](#mason-1) - [lua/config/fil...
(QB_NEW_EN)
[style] ~165-~165: ‘Overall structure’ might be wordy. Consider a shorter alternative.
Context: ...th vim.pack in Neovim v0.12+
Overall structure
├── init.lua
├── lsp
│ ...
(EN_WORDINESS_PREMIUM_OVERALL_STRUCTURE)
</details>
</details>
</details>
<details>
<summary>🔇 Additional comments (2)</summary><blockquote>
<details>
<summary>doc/CONFIGURATION.md (1)</summary>
`193-246`: **Nice: vim.pack lsp/roslyn.lua example is scoped and complete**
This section cleanly composes the Roslyn cmd, wires rzls handlers, and limits filetypes/root markers. Good reference example.
</details>
<details>
<summary>README.md (1)</summary>
`199-202`: **Good cross-link to detailed configuration**
Pointing to doc/CONFIGURATION.md keeps the README lean and routes advanced users to complete examples. Nice touch.
</details>
</blockquote></details>
</details>
<!-- This is an auto-generated comment by CodeRabbit for review status -->
As discussed in #92 this PR is adding more documentation to the README and is adding a configuration example for the up and coming vim.pack added to neovim 0.12+.
The original configuration example and the new example are found in doc/CONFIGURATION.md
Hopefully this is good!
Summary by CodeRabbit