From 2ab6fbca7c474c4cf776c27867b0dba3f57301de Mon Sep 17 00:00:00 2001 From: Christopher Smyth Date: Tue, 14 Feb 2023 00:16:01 -0500 Subject: [PATCH] Add Neovim configuration information (#1545) * Add Neovim configuration information The JSON provided for VSCode works with coc and nlsp-settings. This is verified by https://github.com/fannheyward/coc-rust-analyzer/blob/9d8bdb9290e2a9644367594a1ceed0288506efcd/README.md for coc, and feeding the JSON in to this schema https://github.com/tamago324/nlsp-settings.nvim/blob/215b537cfb3fad7c9c2e352fe47a10698b0993e0/schemas/_generated/rust_analyzer.json for validating nlsp-settings. * Make the steps clear First open a Rust buffer Then update RA settings If you don't open a buffer first then nothing will happen. This is because the plugin makes a raw LSP RPC, so RA must be attached. * Use separate sections for VSCode and Nvim * Add a short section on the VSCode tasks. --- README.md | 2 +- src/building/suggested.md | 34 +++++++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 006ea3231..e501c9161 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ rustdocs][rustdocs]. To build a local static HTML site, install [`mdbook`](https://github.com/rust-lang/mdBook) with: ``` -> cargo install mdbook mdbook-linkcheck mdbook-toc +> cargo install mdbook mdbook-linkcheck mdbook-toc mdbook-mermaid ``` and execute the following command in the root of the repository: diff --git a/src/building/suggested.md b/src/building/suggested.md index 38801723e..5a1891503 100644 --- a/src/building/suggested.md +++ b/src/building/suggested.md @@ -19,6 +19,8 @@ You can also install the hook as a step of running `./x.py setup`! ## Configuring `rust-analyzer` for `rustc` +### Visual Studio Code + `rust-analyzer` can help you check and format your code whenever you save a file. By default, `rust-analyzer` runs the `cargo check` and `rustfmt` commands, but you can override these commands to use more adapted versions @@ -31,9 +33,6 @@ If you have enough free disk space and you would like to be able to run `x.py` c rust-analyzer runs in the background, you can also add `--build-dir build-rust-analyzer` to the `overrideCommand` to avoid x.py locking. -If you're running `coc.nvim`, you can use `:CocLocalConfig` to create a -`.vim/coc-settings.json` and copy the settings from [this file](https://github.com/rust-lang/rust/blob/master/src/etc/vscode_settings.json). - If running `./x.py check` on save is inconvenient, in VS Code you can use a [Build Task] instead: @@ -56,6 +55,35 @@ Task] instead: [Build Task]: https://code.visualstudio.com/docs/editor/tasks + +### Neovim + +For Neovim users there are several options for configuring for rustc. The easiest way is by using +[neoconf.nvim](https://github.com/folke/neoconf.nvim/), which allows for project-local +configuration files with the native LSP. The steps for how to use it are below. Note that requires +Rust-Analyzer to already be configured with Neovim. Steps for this can be +[found here](https://rust-analyzer.github.io/manual.html#nvim-lsp). + +1. First install the plugin. This can be done by following the steps in the README. +2. Run `x.py setup`, which will have a prompt for it to create a `.vscode/settings.json` file. +`neoconf` is able to read and update Rust-Analyzer settings automatically when the project is +opened when this file is detected. + +If you're running `coc.nvim`, you can use `:CocLocalConfig` to create a +`.vim/coc-settings.json` and copy the settings from +[this file](https://github.com/rust-lang/rust/blob/master/src/etc/vscode_settings.json). + +Another way is without a plugin, and creating your own logic in your configuration. To do this you +must translate the JSON to Lua yourself. The translation is 1:1 and fairly straight-forward. It +must be put in the `["rust-analyzer"]` key of the setup table, which is +[shown here](https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#rust_analyzer) + +If you would like to use the build task that is described above, you may either make your own +command in your config, or you can install a plugin such as +[overseer.nvim](https://github.com/stevearc/overseer.nvim) that can [read VSCode's `task.json` +files](https://github.com/stevearc/overseer.nvim/blob/master/doc/guides.md#vs-code-tasks), and +follow the same instructions as above. + ## Check, check, and check again When doing simple refactorings, it can be useful to run `./x.py check`