diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-11-13 00:20:25 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-11-13 00:20:25 +0000 |
commit | 517424dcc11380511bc34f4a081f119104ff9e80 (patch) | |
tree | 77dc031614745bb406dbd90cea9a082a1b5cdd54 /rust-analyzer-chromiumos-wrapper/README.md | |
parent | 4d310bf178aa94bdc46c1b86b9937312ddac644a (diff) | |
parent | 40214b48188358a80b7478bfff21d4814dd9177c (diff) | |
download | toolchain-utils-517424dcc11380511bc34f4a081f119104ff9e80.tar.gz |
Snap for 9286241 from 40214b48188358a80b7478bfff21d4814dd9177c to udc-releaseandroid-vts-14.0_r4android-vts-14.0_r3android-vts-14.0_r2android-vts-14.0_r1android-security-14.0.0_r9android-security-14.0.0_r8android-security-14.0.0_r7android-security-14.0.0_r6android-security-14.0.0_r5android-security-14.0.0_r4android-security-14.0.0_r3android-security-14.0.0_r2android-security-14.0.0_r1android-platform-14.0.0_r1android-cts-14.0_r4android-cts-14.0_r3android-cts-14.0_r2android-cts-14.0_r1android-14.0.0_r28android-14.0.0_r2android-14.0.0_r15android-14.0.0_r14android-14.0.0_r13android-14.0.0_r1android14-tests-releaseandroid14-security-releaseandroid14-s2-releaseandroid14-s1-releaseandroid14-releaseandroid14-platform-releaseandroid14-gsi
Change-Id: I709f9d23cce32c5c2c81fc2d5869983d17b416ed
Diffstat (limited to 'rust-analyzer-chromiumos-wrapper/README.md')
-rw-r--r-- | rust-analyzer-chromiumos-wrapper/README.md | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/rust-analyzer-chromiumos-wrapper/README.md b/rust-analyzer-chromiumos-wrapper/README.md new file mode 100644 index 00000000..e834ff34 --- /dev/null +++ b/rust-analyzer-chromiumos-wrapper/README.md @@ -0,0 +1,61 @@ +# rust-analyzer-chromiumos-wrapper + +## Intro + +rust-analyzer is an LSP server for the Rust language. It allows editors like +vim, emacs, or VS Code to provide IDE-like features for Rust. + +This program, `rust-analyzer-chromiumos-wrapper`, is a wrapper around +`rust-analyzer`. It exists to translate paths between an instance of +rust-analyzer running inside the chromiumos chroot and a client running outside +the chroot. + +It is of course possible to simply run `rust-analyzer` outside the chroot, but +version mismatch issues may lead to a suboptimal experience. + +It should run outside the chroot. If invoked in a `chromiumos` repo in a +subdirectory of either `chromiumos/src` or `chromiumos/chroot`, it will attempt +to invoke `rust-analyzer` inside the chroot and translate paths. Otherwise, it +will attempt to invoke a `rust-analyzer` outside the chroot and will not +translate paths. + +It supports none of rust-analyzer's command line options, which aren't +necessary for acting as a LSP server anyway. + +## Quickstart + +*Outside* the chroot, install the `rust-analyzer-chromiumos-wrapper` binary: + +``` +cargo install --path /path-to-a-chromiumos-checkout/src/third_party/toolchain-utils/rust-analyzer-chromiumos-wrapper +``` + +Make sure `~/.cargo/bin' is in your PATH, or move/symlink `~/.cargo/bin/rust-analyzer-chromiumos-wrapper` to a location in your PATH. + +Configure your editor to use the binary `rust-analyzer-chromiumos-wrapper` as +`rust-analyzer`. In Neovim, if you're using +[nvim-lspconfig](https://github.com/neovim/nvim-lspconfig), this can be done by +putting the following in your `init.lua`: + +``` +require('lspconfig')['rust_analyzer'].setup { + cmd = {'rust-analyzer-chromiumos-wrapper'}, +} +``` + +This configuration is specific to your editor, but see the +[Rust analyzer manual](https://rust-analyzer.github.io/manual.html) for +more about several different editors. + +Once the above general configuration is set up, you'll need to install +`rust-analyzer` inside each chroot where you want to edit code: +``` +sudo emerge rust-analyzer +``` + +## Misc + +A wrapper isn't necessary for clangd, because clangd supports the option +`--path-mappings` to translate paths. In principle a similar option could be +added to `rust-analyzer`, obviating the need for this wrapper. See this +[issue on github](https://github.com/rust-lang/rust-analyzer/issues/12485). |