1

Update generated neovim config

This commit is contained in:
2024-08-15 14:28:54 +02:00
parent 07409c223d
commit 25cfcf2941
3809 changed files with 351157 additions and 0 deletions

View File

@ -0,0 +1,241 @@
commands = {}
dependencies = {
rustaceanvim = {
["5.2.0-1"] = {
{
constraints = {
{
op = ">=",
version = {
5, 1, string = "5.1"
}
}
},
name = "lua"
}
}
}
}
modules = {
["rustaceanvim.cached_commands"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.cargo"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.commands.code_action_group"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.commands.crate_graph"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.commands.debuggables"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.commands.diagnostic"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.commands.expand_macro"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.commands.external_docs"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.commands.fly_check"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.commands.hover_range"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.commands.init"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.commands.join_lines"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.commands.move_item"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.commands.open_cargo_toml"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.commands.parent_module"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.commands.rebuild_proc_macros"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.commands.rustc_unpretty"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.commands.ssr"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.commands.syntax_tree"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.commands.view_ir"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.commands.workspace_refresh"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.commands.workspace_symbol"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.config.check"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.config.init"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.config.internal"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.config.json"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.config.server"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.dap"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.executors.background"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.executors.init"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.executors.meta"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.executors.neotest"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.executors.quickfix"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.executors.termopen"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.executors.toggleterm"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.executors.vimux"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.health"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.hover_actions"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.init"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.lsp"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.neotest.init"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.neotest.parser"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.neotest.trans"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.os"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.overrides"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.runnables"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.rust_analyzer"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.server_status"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.shell"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.test"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.types.internal"] = {
"rustaceanvim/5.2.0-1"
},
["rustaceanvim.ui"] = {
"rustaceanvim/5.2.0-1"
}
}
repository = {
rustaceanvim = {
["5.2.0-1"] = {
{
arch = "installed",
commands = {},
dependencies = {},
modules = {
["rustaceanvim.cached_commands"] = "rustaceanvim/cached_commands.lua",
["rustaceanvim.cargo"] = "rustaceanvim/cargo.lua",
["rustaceanvim.commands.code_action_group"] = "rustaceanvim/commands/code_action_group.lua",
["rustaceanvim.commands.crate_graph"] = "rustaceanvim/commands/crate_graph.lua",
["rustaceanvim.commands.debuggables"] = "rustaceanvim/commands/debuggables.lua",
["rustaceanvim.commands.diagnostic"] = "rustaceanvim/commands/diagnostic.lua",
["rustaceanvim.commands.expand_macro"] = "rustaceanvim/commands/expand_macro.lua",
["rustaceanvim.commands.external_docs"] = "rustaceanvim/commands/external_docs.lua",
["rustaceanvim.commands.fly_check"] = "rustaceanvim/commands/fly_check.lua",
["rustaceanvim.commands.hover_range"] = "rustaceanvim/commands/hover_range.lua",
["rustaceanvim.commands.init"] = "rustaceanvim/commands/init.lua",
["rustaceanvim.commands.join_lines"] = "rustaceanvim/commands/join_lines.lua",
["rustaceanvim.commands.move_item"] = "rustaceanvim/commands/move_item.lua",
["rustaceanvim.commands.open_cargo_toml"] = "rustaceanvim/commands/open_cargo_toml.lua",
["rustaceanvim.commands.parent_module"] = "rustaceanvim/commands/parent_module.lua",
["rustaceanvim.commands.rebuild_proc_macros"] = "rustaceanvim/commands/rebuild_proc_macros.lua",
["rustaceanvim.commands.rustc_unpretty"] = "rustaceanvim/commands/rustc_unpretty.lua",
["rustaceanvim.commands.ssr"] = "rustaceanvim/commands/ssr.lua",
["rustaceanvim.commands.syntax_tree"] = "rustaceanvim/commands/syntax_tree.lua",
["rustaceanvim.commands.view_ir"] = "rustaceanvim/commands/view_ir.lua",
["rustaceanvim.commands.workspace_refresh"] = "rustaceanvim/commands/workspace_refresh.lua",
["rustaceanvim.commands.workspace_symbol"] = "rustaceanvim/commands/workspace_symbol.lua",
["rustaceanvim.config.check"] = "rustaceanvim/config/check.lua",
["rustaceanvim.config.init"] = "rustaceanvim/config/init.lua",
["rustaceanvim.config.internal"] = "rustaceanvim/config/internal.lua",
["rustaceanvim.config.json"] = "rustaceanvim/config/json.lua",
["rustaceanvim.config.server"] = "rustaceanvim/config/server.lua",
["rustaceanvim.dap"] = "rustaceanvim/dap.lua",
["rustaceanvim.executors.background"] = "rustaceanvim/executors/background.lua",
["rustaceanvim.executors.init"] = "rustaceanvim/executors/init.lua",
["rustaceanvim.executors.meta"] = "rustaceanvim/executors/meta.lua",
["rustaceanvim.executors.neotest"] = "rustaceanvim/executors/neotest.lua",
["rustaceanvim.executors.quickfix"] = "rustaceanvim/executors/quickfix.lua",
["rustaceanvim.executors.termopen"] = "rustaceanvim/executors/termopen.lua",
["rustaceanvim.executors.toggleterm"] = "rustaceanvim/executors/toggleterm.lua",
["rustaceanvim.executors.vimux"] = "rustaceanvim/executors/vimux.lua",
["rustaceanvim.health"] = "rustaceanvim/health.lua",
["rustaceanvim.hover_actions"] = "rustaceanvim/hover_actions.lua",
["rustaceanvim.init"] = "rustaceanvim/init.lua",
["rustaceanvim.lsp"] = "rustaceanvim/lsp.lua",
["rustaceanvim.neotest.init"] = "rustaceanvim/neotest/init.lua",
["rustaceanvim.neotest.parser"] = "rustaceanvim/neotest/parser.lua",
["rustaceanvim.neotest.trans"] = "rustaceanvim/neotest/trans.lua",
["rustaceanvim.os"] = "rustaceanvim/os.lua",
["rustaceanvim.overrides"] = "rustaceanvim/overrides.lua",
["rustaceanvim.runnables"] = "rustaceanvim/runnables.lua",
["rustaceanvim.rust_analyzer"] = "rustaceanvim/rust_analyzer.lua",
["rustaceanvim.server_status"] = "rustaceanvim/server_status.lua",
["rustaceanvim.shell"] = "rustaceanvim/shell.lua",
["rustaceanvim.test"] = "rustaceanvim/test.lua",
["rustaceanvim.types.internal"] = "rustaceanvim/types/internal.lua",
["rustaceanvim.ui"] = "rustaceanvim/ui.lua"
}
}
}
}
}

View File

@ -0,0 +1,54 @@
==============================================================================
mason-lspconfig troubleshooting *rustaceanvim.mason*
This plugin supports automatically detecting mason.nvim codelldb installations,
but not rust-analyzer.
The main reason for this choice is that it mason.nvim installations of rust-analyzer
will most likely have been built with a different toolchain than your project,
leading to inconsistencies and possibly subtle bugs.
If you want to use a mason.nvim installation anyway, you can do so by specifying
the `server.cmd` setting (see |rustaceanvim.config| and |RustaceanLspClientOpts|):
>lua
vim.g.rustaceanvim = {
server = {
cmd = function()
local mason_registry = require('mason-registry')
local ra_binary = mason_registry.is_installed('rust-analyzer')
-- This may need to be tweaked, depending on the operating system.
and mason_registry.get_package('rust-analyzer'):get_install_path() .. "/rust-analyzer"
or "rust-analyzer"
return { ra_binary } -- You can add args to the list, such as '--log-file'
end,
},
}
<
Note that mason-lspconfig.nvim, when configured to ensure rust-analyzer is installed,
assumes you are using the `nvim-lspconfig.rust_analyzer` client.
Some Neovim distributions will automatically call the client's `setup`
function, resulting in a conflict with this plugin.
General approach to prevent mason-lspconfig from setting up
`lspconfig.rust_analyzer`:
>lua
require('mason-lspconfig').setup_handlers {
['rust_analyzer'] = function() end,
}
<
Using LazyVim:
>lua
{
'neovim/nvim-lspconfig',
opts = {
setup = {
rust_analyzer = function()
return true
end,
},
},
}
<
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@ -0,0 +1,505 @@
==============================================================================
Table of Contents *rustaceanvim.contents*
Introduction ·············································· |rustaceanvim.intro|
································································ |rustaceanvim|
plugin configuration ····································· |rustaceanvim.config|
LSP configuration utility ························· |rustaceanvim.config.server|
························································ |rustaceanvim.neotest|
···························································· |rustaceanvim.dap|
==============================================================================
Introduction *rustaceanvim.intro*
This plugin automatically configures the `rust-analyzer` builtin LSP client
and integrates with other rust tools.
==============================================================================
*rustaceanvim*
Commands:
':RustAnalyzer start' - Start the LSP client.
':RustAnalyzer stop' - Stop the LSP client.
':RustAnalyzer restart' - Restart the LSP client.
':RustAnalyzer reloadSettings' - Reload settings for the LSP client.
The ':RustLsp[!]' command is available after the LSP client has initialized.
It accepts the following subcommands:
'runnables {args[]}?' - Run tests, executables, etc.
':RustLsp!' means run the last runnable (ignores any args).
`args[]` allows you to override the executable's arguments.
'run {args[]}?' - Like 'runnables', but runs the target at the current cursor position.
'debuggables {args[]}?' - Debug tests, executables, etc. (requires |nvim-dap|).
':RustLsp!' means run the last debuggable (ignores any args).
`args[]` allows you to override the executable's arguments.
'debug {args[]}?' - Like 'debuggables', but debugs the target at the current cursor position.
'testables {args[]}?' - Run tests
':RustLsp!' means run the last testable (ignores any args).
`args[]` allows you to override the executable's arguments.
'expandMacro' - Expand macros recursively.
'moveItem {up|down}' - Move items up or down.
'hover {actions|range}' - Hover actions, or hover over visually selected range.
'explainError {cycle?|current?}' - Display a hover window with explanations form the Rust error index.
- If called with |cycle| or no args:
Like |vim.diagnostic.goto_next|,
|explainError| will cycle diagnostics,
starting at the cursor position,
until it can find a diagnostic with an error code.
- If called with |current|:
Searches for diagnostics only in the
current cursor line.
'renderDiagnostic {cycle?|current?}' - Display a hover window with the rendered diagnostic,
as displayed during |cargo build|.
- If called with |cycle| or no args:
Like |vim.diagnostic.goto_next|,
|renderDiagnostic| will cycle diagnostics,
starting at the cursor position,
until it can find a diagnostic with rendered data.
- If called with |current|:
Searches for diagnostics only in the
current cursor line.
'openCargo' - Open the Cargo.toml file for the current package.
'openDocs' - Open docs.rs documentation for the symbol under the cursor.
'parentModule' - Open the current module's parent module.
'workspaceSymbol {onlyTypes?|allSymbols?} {query?}'
Filtered workspace symbol search.
When run with a bang (`:RustLsp! workspaceSymbol ...`),
rust-analyzer will include dependencies in the search.
You can also configure rust-analyzer so that |vim.lsp.buf.workspace_symbol|
supports filtering (with a # suffix to the query) or searching dependencies.
'joinLines' - Join adjacent lines.
'ssr {query}' - Structural search and replace.
Searches the entire buffer in normal mode.
Searches the selected region in visual mode.
'crateGraph {backend}' - Create and view a crate graph with graphviz.
'syntaxTree' - View the syntax tree.
'view {mir|hir}' - View MIR or HIR.
'flyCheck' {run?|clear?|cancel?}
- Run `cargo check` or another compatible command (f.x. `clippy`)
in a background thread and provide LSP diagnostics based on
the output of the command.
Useful in large projects where running `cargo check` on each save
can be costly.
Defaults to `flyCheck run` if called without an argument.
'logFile' - Open the rust-analyzer log file.
The ':Rustc' command can be used to interact with rustc.
It accepts the following subcommands:
'unpretty {args[]}' - Opens a buffer with a textual representation of the MIR or others things,
of the function closest to the cursor.
Achieves an experience similar to Rust Playground.
NOTE: This currently requires a tree-sitter parser for Rust,
and a nightly compiler toolchain.
==============================================================================
plugin configuration *rustaceanvim.config*
rustaceanvim is a filetype plugin, and does not need
a `setup` function to work.
To configure rustaceanvim, set the variable `vim.g.rustaceanvim`,
which is a `RustaceanOpts` table, in your neovim configuration.
Example:
>lua
---@type rustaceanvim.Opts
vim.g.rustaceanvim = {
---@type rustaceanvim.tools.Opts
tools = {
-- ...
},
---@type rustaceanvim.lsp.ClientOpts
server = {
on_attach = function(client, bufnr)
-- Set keybindings, etc. here.
end,
default_settings = {
-- rust-analyzer language server configuration
['rust-analyzer'] = {
},
},
-- ...
},
---@type rustaceanvim.dap.Opts
dap = {
-- ...
},
}
<
Notes:
- `vim.g.rustaceanvim` can also be a function that returns a `rustaceanvim.Opts` table.
- `server.settings`, by default, is a function that looks for a `rust-analyzer.json` file
in the project root, to load settings from it. It falls back to an empty table.
rustaceanvim.Opts *rustaceanvim.Opts*
Fields: ~
{tools?} (rustaceanvim.tools.Opts) Plugin options
{server?} (rustaceanvim.lsp.ClientOpts) Language server client options
{dap?} (rustaceanvim.dap.Opts) Debug adapter options
rustaceanvim.tools.Opts *rustaceanvim.tools.Opts*
Fields: ~
{executor?} (rustaceanvim.Executor|rustaceanvim.executor_alias)
The executor to use for runnables/debuggables
{test_executor?} (rustaceanvim.Executor|rustaceanvim.test_executor_alias)
The executor to use for runnables that are tests / testables
{crate_test_executor?} (rustaceanvim.Executor|rustaceanvim.test_executor_alias)
The executor to use for runnables that are crate test suites (--all-targets)
{cargo_override?} (string)
Set this to override the 'cargo' command for runnables, debuggables (etc., e.g. to 'cross').
If set, this takes precedence over 'enable_nextest'.
{enable_nextest?} (boolean)
Whether to enable nextest. If enabled, `cargo test` commands will be transformed to `cargo nextest run` commands.
Defaults to `true` if cargo-nextest is detected. Ignored if `cargo_override` is set.
{enable_clippy?} (boolean)
Whether to enable clippy checks on save if a clippy installation is detected.
Default: `true`
{on_initialized?} (fun(health:rustaceanvim.RAInitializedStatus))
Function that is invoked when the LSP server has finished initializing
{reload_workspace_from_cargo_toml?} (boolean)
Automatically call `RustReloadWorkspace` when writing to a Cargo.toml file
{hover_actions?} (rustaceanvim.hover-actions.Opts) Options for hover actions
{code_actions?} (rustaceanvim.code-action.Opts) Options for code actions
{float_win_config?} (rustaceanvim.FloatWinConfig)
Options applied to floating windows.
See |api-win_config|.
{create_graph?} (rustaceanvim.crate-graph.Opts)
Options for showing the crate graph based on graphviz and the dot
{open_url?} (fun(url:string):nil)
If set, overrides how to open URLs
{rustc?} (rustaceanvim.rustc.Opts)
Options for `rustc`
rustaceanvim.Executor *rustaceanvim.Executor*
Fields: ~
{execute_command} (fun(cmd:string,args:string[],cwd:string|nil,opts?:rustaceanvim.ExecutorOpts))
rustaceanvim.ExecutorOpts *rustaceanvim.ExecutorOpts*
Fields: ~
{bufnr?} (integer)
The buffer from which the executor was invoked.
rustaceanvim.FloatWinConfig *rustaceanvim.FloatWinConfig*
Fields: ~
{auto_focus?} (boolean)
{open_split?} ("horizontal"|"vertical")
See: ~
|vim.lsp.util.open_floating_preview.Opts|
|vim.api.nvim_open_win|
rustaceanvim.executor_alias *rustaceanvim.executor_alias*
Type: ~
"termopen"|"quickfix"|"toggleterm"|"vimux"
rustaceanvim.test_executor_alias *rustaceanvim.test_executor_alias*
Type: ~
rustaceanvim.executor_alias|"background"|"neotest"
rustaceanvim.hover-actions.Opts *rustaceanvim.hover-actions.Opts*
Fields: ~
{replace_builtin_hover?} (boolean)
Whether to replace Neovim's built-in `vim.lsp.buf.hover` with hover actions.
Default: `true`
rustaceanvim.code-action.Opts *rustaceanvim.code-action.Opts*
Fields: ~
{group_icon?} (string)
Text appended to a group action
{ui_select_fallback?} (boolean)
Whether to fall back to `vim.ui.select` if there are no grouped code actions.
Default: `false`
rustaceanvim.lsp_server_health_status *rustaceanvim.lsp_server_health_status*
Type: ~
"ok"|"warning"|"error"
rustaceanvim.RAInitializedStatus *rustaceanvim.RAInitializedStatus*
Fields: ~
{health} (rustaceanvim.lsp_server_health_status)
rustaceanvim.crate-graph.Opts *rustaceanvim.crate-graph.Opts*
Fields: ~
{backend?} (string)
Backend used for displaying the graph.
See: https://graphviz.org/docs/outputs/
Defaults to `"x11"` if unset.
{output?} (string)
Where to store the output. No output if unset.
Relative path from `cwd`.
{enabled_graphviz_backends?} (string[])
Override the enabled graphviz backends list, used for input validation and autocompletion.
{pipe?} (string)
Overide the pipe symbol in the shell command.
Useful if using a shell that is not supported by this plugin.
rustaceanvim.rustc.Opts *rustaceanvim.rustc.Opts*
Fields: ~
{default_edition?} (string)
The default edition to use if it cannot be auto-detected.
See https://rustc-dev-guide.rust-lang.org/guides/editions.html.
Default '2021'.
rustaceanvim.lsp.ClientOpts *rustaceanvim.lsp.ClientOpts*
Fields: ~
{auto_attach?} (boolean|fun(bufnr:integer):boolean)
Whether to automatically attach the LSP client.
Defaults to `true` if the `rust-analyzer` executable is found.
{cmd?} (string[]|fun():string[])
Command and arguments for starting rust-analyzer
{root_dir?} (string|fun(filename:string,default:fun(filename:string):string|nil):string|nil)
The directory to use for the attached LSP.
Can be a function, which may return nil if no server should attach.
The second argument contains the default implementation, which can be used for fallback behavior.
{settings?} (table|fun(project_root:string|nil,default_settings:table):table)
Setting passed to rust-analyzer.
Defaults to a function that looks for a `rust-analyzer.json` file or returns an empty table.
See https://rust-analyzer.github.io/manual.html#configuration.
{standalone?} (boolean)
Standalone file support (enabled by default).
Disabling it may improve rust-analyzer's startup time.
{logfile?} (string)
The path to the rust-analyzer log file.
{load_vscode_settings?} (boolean)
Whether to search (upward from the buffer) for rust-analyzer settings in .vscode/settings json.
If found, loaded settings will override configured options.
Default: true
See: ~
|vim.lsp.ClientConfig|
rustaceanvim.dap.Opts *rustaceanvim.dap.Opts*
Fields: ~
{autoload_configurations} (boolean)
Whether to autoload nvim-dap configurations when rust-analyzer has attached?
Default: `true`.
rustaceanvim.disable *rustaceanvim.disable*
Type: ~
false
rustaceanvim.dap.Command *rustaceanvim.dap.Command*
Type: ~
string
rustaceanvim.dap.executable.Config *rustaceanvim.dap.executable.Config*
Fields: ~
{type} (rustaceanvim.dap.adapter.types.executable)
The type of debug adapter.
{command} (string) Default: `"lldb-vscode"`.
{args?} (string) Default: unset.
{name?} (string) Default: `"lldb"`.
rustaceanvim.dap.server.Config *rustaceanvim.dap.server.Config*
Fields: ~
{type} (rustaceanvim.dap.adapter.types.server) The type of debug adapter.
{host?} (string) The host to connect to.
{port} (string) The port to connect to.
{executable} (rustaceanvim.dap.Executable) The executable to run
{name?} (string)
rustaceanvim.dap.Executable *rustaceanvim.dap.Executable*
Fields: ~
{command} (string) The executable.
{args} (string[]) Its arguments.
*rustaceanvim.dap.adapter.types.executable*
rustaceanvim.dap.adapter.types.executable
Type: ~
rustaceanvim.dap.adapter.types.server *rustaceanvim.dap.adapter.types.server*
Type: ~
*rustaceanvim.dap.client.Config*
rustaceanvim.dap.client.Config : Configuration
Fields: ~
{type} (string) The dap adapter to use
{name} (string)
{request} (rustaceanvim.dap.config.requests.launch|rustaceanvim.dap.config.requests.attach|rustaceanvim.dap.config.requests.custom) The type of dap session
{cwd?} (string) Current working directory
{program?} (string) Path to executable for most DAP clients
{args?} (string[]) Optional args to DAP client, not valid for all client types
{env?} (rustaceanvim.EnvironmentMap) Environmental variables
{initCommands?} (string[]) Initial commands to run, `lldb` clients only
{coreConfigs?} (table)
Essential config values for `probe-rs` client, see https://probe.rs/docs/tools/debugger/
rustaceanvim.EnvironmentMap *rustaceanvim.EnvironmentMap*
Type: ~
table<string,string[]>
rustaceanvim.dap.config.requests.launch*rustaceanvim.dap.config.requests.launch*
Type: ~
rustaceanvim.dap.config.requests.attach*rustaceanvim.dap.config.requests.attach*
Type: ~
rustaceanvim.dap.config.requests.custom*rustaceanvim.dap.config.requests.custom*
Type: ~
*M.get_codelldb_adapter*
M.get_codelldb_adapter({codelldb_path}, {liblldb_path})
For the heroes who want to use it.
Parameters: ~
{codelldb_path} (string) Path to the codelldb executable
{liblldb_path} (string) Path to the liblldb dynamic library
Returns: ~
(rustaceanvim.dap.server.Config)
==============================================================================
LSP configuration utility *rustaceanvim.config.server*
rustaceanvim.LoadRASettingsOpts *rustaceanvim.LoadRASettingsOpts*
Fields: ~
{settings_file_pattern} (string|nil) File name or pattern to search for. Defaults to 'rust-analyzer.json'
{default_settings} (table|nil) Default settings to merge the loaded settings into
*server.load_rust_analyzer_settings*
server.load_rust_analyzer_settings({project_root}, {opts})
Load rust-analyzer settings from a JSON file,
falling back to the default settings if none is found or if it cannot be decoded.
Parameters: ~
{project_root} (string|nil) The project root
{opts} (rustaceanvim.LoadRASettingsOpts|nil)
Returns: ~
(table) server_settings
See: ~
|https://rust-analyzer.github.io/manual.html#configuration|
server.create_client_capabilities() *server.create_client_capabilities*
Returns: ~
(lsp.ClientCapabilities)
==============================================================================
*rustaceanvim.neotest*
A |neotest| adapter for rust, powered by rustaceanvim.
If you add this to neotest:
>
require('neotest').setup {
-- ...,
adapters = {
-- ...,
require('rustaceanvim.neotest')
},
}
<
this plugin will configure itself to use |neotest|
as a test executor, and |neotest| will use rust-analyzer
for test discovery and command construction.
Note: If you use this adapter, do not add the neotest-rust adapter
(another plugin).
==============================================================================
*rustaceanvim.dap*
The DAP integration requires `nvim-dap` https://github.com/mfussenegger/nvim-dap
(Please read the plugin's documentation, see |dap-adapter|)
and a debug adapter (e.g. `lldb` https://lldb.llvm.org/
or `codelldb` https://github.com/vadimcn/codelldb).
By default, this plugin will silently attempt to autoload |dap-configuration|s
when the LSP client attaches.
You can call them with `require('dap').continue()` or `:DapContinue` once
they have been loaded. The feature can be disabled by setting
`vim.g.rustaceanvim.dap.autoload_configurations = false`.
- `:RustLsp debuggables` will only load debug configurations
created by `rust-analyzer`.
- `require('dap').continue()` will load all Rust debug configurations,
including those specified in a `.vscode/launch.json`
(see |dap-launch.json|)
IMPORTANT: Note that rustaceanvim may only be able to load DAP configurations
when rust-analyzer has finished initializing (which may be after
the client attaches, in large projects). This means that the
DAP configurations may not be loaded immediately upon startup.
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@ -0,0 +1,57 @@
---@type rustaceanvim.Config
local config = require('rustaceanvim.config.internal')
if not vim.g.loaded_rustaceanvim then
require('rustaceanvim.config.check').check_for_lspconfig_conflict(vim.schedule_wrap(function(warn)
vim.notify_once(warn, vim.log.levels.WARN)
end))
vim.lsp.commands['rust-analyzer.runSingle'] = function(command)
local runnables = require('rustaceanvim.runnables')
local cached_commands = require('rustaceanvim.cached_commands')
---@type rustaceanvim.RARunnable[]
local ra_runnables = command.arguments
local runnable = ra_runnables[1]
local cargo_args = runnable.args.cargoArgs
if #cargo_args > 0 and vim.startswith(cargo_args[1], 'test') then
cached_commands.set_last_testable(1, ra_runnables)
end
cached_commands.set_last_runnable(1, ra_runnables)
runnables.run_command(1, ra_runnables)
end
vim.lsp.commands['rust-analyzer.gotoLocation'] = function(command, ctx)
local client = vim.lsp.get_client_by_id(ctx.client_id)
if client then
vim.lsp.util.jump_to_location(command.arguments[1], client.offset_encoding)
end
end
vim.lsp.commands['rust-analyzer.showReferences'] = function(_)
vim.lsp.buf.implementation()
end
vim.lsp.commands['rust-analyzer.debugSingle'] = function(command)
local overrides = require('rustaceanvim.overrides')
local args = command.arguments[1].args
overrides.sanitize_command_for_debugging(args.cargoArgs)
local cached_commands = require('rustaceanvim.cached_commands')
cached_commands.set_last_debuggable(args)
local rt_dap = require('rustaceanvim.dap')
rt_dap.start(args)
end
local commands = require('rustaceanvim.commands')
commands.create_rustc_command()
end
vim.g.loaded_rustaceanvim = true
local auto_attach = config.server.auto_attach
if type(auto_attach) == 'function' then
local bufnr = vim.api.nvim_get_current_buf()
auto_attach = auto_attach(bufnr)
end
if auto_attach then
require('rustaceanvim.lsp').start()
end

View File

@ -0,0 +1,26 @@
" Copied from built-in compiler/{rustc,cargo}.vim
setlocal errorformat=
\%f:%l:%c:\ %t%*[^:]:\ %m,
\%f:%l:%c:\ %*\\d:%*\\d\ %t%*[^:]:\ %m,
\%-G%f:%l\ %s,
\%-G%*[\ ]^,
\%-G%*[\ ]^%*[~],
\%-G%*[\ ]...
" New errorformat (after nightly 2016/08/10)
setlocal errorformat+=
\%-G,
\%-Gerror:\ aborting\ %.%#,
\%-Gerror:\ Could\ not\ compile\ %.%#,
\%Eerror:\ %m,
\%Eerror[E%n]:\ %m,
\%Wwarning:\ %m,
\%Inote:\ %m,
\%C\ %#-->\ %f:%l:%c
setlocal errorformat+=
\%-G%\\s%#Downloading%.%#,
\%-G%\\s%#Compiling%.%#,
\%-G%\\s%#Finished%.%#,
\%-G%\\s%#error:\ Could\ not\ compile\ %.%#,
\%-G%\\s%#To\ learn\ more\\,%.%#

View File

@ -0,0 +1,24 @@
local fname = vim.fn.fnamemodify(vim.api.nvim_buf_get_name(0), ':t')
if fname ~= 'Cargo.toml' then
return
end
local config = require('rustaceanvim.config.internal')
local ra = require('rustaceanvim.rust_analyzer')
if config.tools.reload_workspace_from_cargo_toml then
local group = vim.api.nvim_create_augroup('RustaceanCargoReloadWorkspace', { clear = false })
local bufnr = vim.api.nvim_get_current_buf()
vim.api.nvim_clear_autocmds {
buffer = bufnr,
group = group,
}
vim.api.nvim_create_autocmd('BufWritePost', {
buffer = vim.api.nvim_get_current_buf(),
group = group,
callback = function()
if #ra.get_active_rustaceanvim_clients(nil) > 0 then
vim.cmd.RustLsp { 'reloadWorkspace', mods = { silent = true } }
end
end,
})
end

View File

@ -0,0 +1,78 @@
rock_manifest = {
doc = {
["mason.txt"] = "858adffa88b1649b91187f49f191e376",
["rustaceanvim.txt"] = "1eabb6dea51788209975fd19245bfcbe"
},
ftplugin = {
["rust.lua"] = "0bbc548280195d6d0a741e9640808675",
["rust.vim"] = "3121ffa3b7f1aa9c3efbfe32e438dbeb",
["toml.lua"] = "a8807dcfb5f6687ac543f4f8da3a9554"
},
lua = {
rustaceanvim = {
["cached_commands.lua"] = "31274668a1dc9e611c6fb4c0ac757d31",
["cargo.lua"] = "f5378ecec5944cb0ee3444c31c378b88",
commands = {
["code_action_group.lua"] = "4d2aee0d4d35a240b1c9d602695ed87e",
["crate_graph.lua"] = "41d7ba76e788d984278f59d6c73f1dbd",
["debuggables.lua"] = "f67f35eb3774672912e785c88cd91d48",
["diagnostic.lua"] = "b37ce82f62b9c0ddc4646147d66765a0",
["expand_macro.lua"] = "8c3785e8b5958081f4bec175d360ebb5",
["external_docs.lua"] = "1d2fa5d88ea197ad9976c23b0ff70763",
["fly_check.lua"] = "4ff335c2cc84d301b247e85110482311",
["hover_range.lua"] = "68828cfd0c465bbe0915996795ff7b92",
["init.lua"] = "b637c5c02f9c61c674e01c3eb599bb5d",
["join_lines.lua"] = "f31a68f1ddac01b926d58ccd249bc03d",
["move_item.lua"] = "f05118ba148e66c1e92882141e68343f",
["open_cargo_toml.lua"] = "2368251db4ce52659693acc8eee15b74",
["parent_module.lua"] = "a607e6c3f3871ed233704a2ba79c5ddc",
["rebuild_proc_macros.lua"] = "6113336c3b82042f60c54446e6c5a887",
["rustc_unpretty.lua"] = "ca233f8271917c20b5265a3161708b33",
["ssr.lua"] = "1c936709630f09b2a81d22452d3e3fa2",
["syntax_tree.lua"] = "c28fd8b22608e3f7bd3bdbb2e10c1617",
["view_ir.lua"] = "97c8467240eb473cb9fc1a0bfc6674ef",
["workspace_refresh.lua"] = "083b2d70533d0f417b65d2b7866f531b",
["workspace_symbol.lua"] = "69bdc6d1255f7eb586ea8e350b840b85"
},
config = {
["check.lua"] = "8c87e8208f5b8fa2e5799531b4b88efa",
["init.lua"] = "d9f55e37992cc4be0fa491927382c1df",
["internal.lua"] = "6d452c01acd0e591b1943c949be310d7",
["json.lua"] = "a8c7caf443ad9ce1193726aec053cc8d",
["server.lua"] = "412839511a5dbc58672df8b182ce7e98"
},
["dap.lua"] = "44957dcdc4b2055c8aeaa94c0f833a01",
executors = {
["background.lua"] = "93264d91d4f1e40b2ac914b2155544d5",
["init.lua"] = "e0363361b74cbfdc0171bcab526b3fa2",
["meta.lua"] = "c508069ea13f5b6dee89bfbc3baf5cca",
["neotest.lua"] = "aaf98a780d535fc17506c4548ee1ac35",
["quickfix.lua"] = "75bdebff2926554ed1e60fa35ab8b675",
["termopen.lua"] = "394bfe73772bf3a901479e2f0813e265",
["toggleterm.lua"] = "ef28fd456e9350e4250746899a6ae9ee",
["vimux.lua"] = "a26ff98b8b3f0bff6a48090ac3fcf606"
},
["health.lua"] = "d739674bff96b05c82d00538a033aca2",
["hover_actions.lua"] = "47721a479d52ff6cdc5afa76dcb36907",
["init.lua"] = "cc66a50c1f863f59cf1ec703687f3336",
["lsp.lua"] = "fa2f869c3f92b607d62fae44cec51137",
neotest = {
["init.lua"] = "33b7a7be4dd23ee95cda1a170d4d0987",
["parser.lua"] = "32b5c6bacd357015fb5167632bb82f7a",
["trans.lua"] = "61e2e162521d1c47f077a29a8e058059"
},
["os.lua"] = "7a8abad874b58678039c73b3797328e7",
["overrides.lua"] = "bccbf0314c999a8f51cbdf655651d48c",
["runnables.lua"] = "fa001d0825d5a641649540f37d5d50dc",
["rust_analyzer.lua"] = "68f0a270cb2de0ae86b91b0a10eec6c9",
["server_status.lua"] = "4dade02d4facc6b3ed59a0d117ce3710",
["shell.lua"] = "2a59375b5b9f9971573253c33a392b63",
["test.lua"] = "e436ae539217729f46a1d556974e1100",
types = {
["internal.lua"] = "95d9ff5763390a3efae83cc27dbef452"
},
["ui.lua"] = "185cbb4ef9b15b4feb6699fcbd5d4435"
}
},
["rustaceanvim-5.2.0-1.rockspec"] = "6551a7b17c39e7a27abb40d620829019"
}

View File

@ -0,0 +1,40 @@
local git_ref = '5.2.0'
local modrev = '5.2.0'
local specrev = '1'
local repo_url = 'https://github.com/mrcjkb/rustaceanvim'
rockspec_format = '3.0'
package = 'rustaceanvim'
version = modrev ..'-'.. specrev
description = {
summary = '🦀 Supercharge your Rust experience in Neovim! A heavily modified fork of rust-tools.nvim',
detailed = [[
This plugin automatically configures the rust-analyzer builtin LSP client
and integrates with other Rust tools. See the README's #features section
for more info.]],
labels = { 'dap', 'debug-adapter-protocol', 'language-server-protocol', 'lsp', 'neovim', 'nvim', 'plugin', 'rust', 'rust-analyzer', 'rust-lang', 'rust-tools' } ,
homepage = 'https://github.com/mrcjkb/rustaceanvim',
license = 'GPL-2.0'
}
dependencies = { 'lua >= 5.1' }
test_dependencies = { }
source = {
url = repo_url .. '/archive/' .. git_ref .. '.zip',
dir = 'rustaceanvim-' .. '5.2.0',
}
if modrev == 'scm' or modrev == 'dev' then
source = {
url = repo_url:gsub('https', 'git')
}
end
build = {
type = 'builtin',
copy_directories = { 'doc', 'ftplugin' } ,
}