editor-rs / vscode-rust

Rust for Visual Studio Code
MIT License
474 stars 62 forks source link

Go to definition of std lib not working with RLS #343

Open thomak-dev opened 7 years ago

thomak-dev commented 7 years ago

Version of VSCode: 1.14.2 Version of the extension: 0.4.2 OS: Windows 10 Pro

When I try to go to definition of some std code, for example String::new, I get "Unable to open 'string.rs': File not found..." followed by the path to my project where it of course can't find string.rs.

When I try it with legacy mode, it opens the Rust source code, as expected.

I already tried rustup component add rust-src --toolchain nightly rustup component add rust-src --toolchain stable

Output of the "Rust logging" channel: DEBUG: Rustup: updateToolchains: this.toolchains=[{"channel":"stable","host":"x86_64-pc-windows-msvc","isDefault":true},{"channel":"nightly","host":"x86_64-pc-windows-msvc","isDefault":false}] DEBUG: activate: processPossibleSetButMissingUserToolchain: toolchainKind=toolchain DEBUG: activate: processPossibleSetButMissingUserToolchain: user toolchain is installed DEBUG: Rustup: updateComponents(stable-x86_64-pc-windows-msvc): components=["cargo-x86_64-pc-windows-msvc (default)","rust-analysis-x86_64-pc-windows-msvc","rust-docs-x86_64-pc-windows-msvc (default)","rust-src (installed)","rust-std-aarch64-apple-ios","rust-std-aarch64-linux-android","rust-std-aarch64-unknown-fuchsia","rust-std-aarch64-unknown-linux-gnu","rust-std-arm-linux-androideabi","rust-std-arm-unknown-linux-gnueabi","rust-std-arm-unknown-linux-gnueabihf","rust-std-arm-unknown-linux-musleabi","rust-std-arm-unknown-linux-musleabihf","rust-std-armv7-apple-ios","rust-std-armv7-linux-androideabi","rust-std-armv7-unknown-linux-gnueabihf","rust-std-armv7-unknown-linux-musleabihf","rust-std-armv7s-apple-ios","rust-std-asmjs-unknown-emscripten","rust-std-i386-apple-ios","rust-std-i586-pc-windows-msvc","rust-std-i586-unknown-linux-gnu","rust-std-i686-apple-darwin","rust-std-i686-linux-android","rust-std-i686-pc-windows-gnu","rust-std-i686-pc-windows-msvc","rust-std-i686-unknown-freebsd","rust-std-i686-unknown-linux-gnu","rust-std-i686-unknown-linux-musl","rust-std-mips-unknown-linux-gnu","rust-std-mips-unknown-linux-musl","rust-std-mips64-unknown-linux-gnuabi64","rust-std-mips64el-unknown-linux-gnuabi64","rust-std-mipsel-unknown-linux-gnu","rust-std-mipsel-unknown-linux-musl","rust-std-powerpc-unknown-linux-gnu","rust-std-powerpc64-unknown-linux-gnu","rust-std-powerpc64le-unknown-linux-gnu","rust-std-s390x-unknown-linux-gnu","rust-std-sparc64-unknown-linux-gnu","rust-std-wasm32-unknown-emscripten","rust-std-x86_64-apple-darwin","rust-std-x86_64-apple-ios","rust-std-x86_64-linux-android","rust-std-x86_64-pc-windows-gnu","rust-std-x86_64-pc-windows-msvc (default)","rust-std-x86_64-rumprun-netbsd","rust-std-x86_64-unknown-freebsd","rust-std-x86_64-unknown-fuchsia","rust-std-x86_64-unknown-linux-gnu","rust-std-x86_64-unknown-linux-musl","rust-std-x86_64-unknown-netbsd","rustc-x86_64-pc-windows-msvc (default)",""] DEBUG: RlsMode: start: enter DEBUG: RlsMode: start: no RLS executable DEBUG: RlsMode: start: processPossibleSetButMissingUserToolchain: toolchainKind=nightly toolchain DEBUG: RlsMode: start: processPossibleSetButMissingUserToolchain: user nightly toolchain is installed DEBUG: Rustup: updateComponents(nightly-x86_64-pc-windows-msvc): components=["cargo-x86_64-pc-windows-msvc (default)","rls-x86_64-pc-windows-msvc (installed)","rust-analysis-x86_64-pc-windows-msvc (installed)","rust-docs-x86_64-pc-windows-msvc (default)","rust-src (installed)","rust-std-aarch64-apple-ios","rust-std-aarch64-linux-android","rust-std-aarch64-unknown-fuchsia","rust-std-aarch64-unknown-linux-gnu","rust-std-arm-linux-androideabi","rust-std-arm-unknown-linux-gnueabi","rust-std-arm-unknown-linux-gnueabihf","rust-std-arm-unknown-linux-musleabi","rust-std-arm-unknown-linux-musleabihf","rust-std-armv7-apple-ios","rust-std-armv7-linux-androideabi","rust-std-armv7-unknown-linux-gnueabihf","rust-std-armv7-unknown-linux-musleabihf","rust-std-armv7s-apple-ios","rust-std-asmjs-unknown-emscripten","rust-std-i386-apple-ios","rust-std-i586-pc-windows-msvc","rust-std-i586-unknown-linux-gnu","rust-std-i686-apple-darwin","rust-std-i686-linux-android","rust-std-i686-pc-windows-gnu","rust-std-i686-pc-windows-msvc","rust-std-i686-unknown-freebsd","rust-std-i686-unknown-linux-gnu","rust-std-i686-unknown-linux-musl","rust-std-mips-unknown-linux-gnu","rust-std-mips-unknown-linux-musl","rust-std-mips64-unknown-linux-gnuabi64","rust-std-mips64el-unknown-linux-gnuabi64","rust-std-mipsel-unknown-linux-gnu","rust-std-mipsel-unknown-linux-musl","rust-std-powerpc-unknown-linux-gnu","rust-std-powerpc64-unknown-linux-gnu","rust-std-powerpc64le-unknown-linux-gnu","rust-std-s390x-unknown-linux-gnu","rust-std-sparc64-unknown-linux-gnu","rust-std-wasm32-unknown-emscripten","rust-std-x86_64-apple-darwin","rust-std-x86_64-apple-ios","rust-std-x86_64-linux-android","rust-std-x86_64-pc-windows-gnu","rust-std-x86_64-pc-windows-msvc (default)","rust-std-x86_64-rumprun-netbsd","rust-std-x86_64-unknown-freebsd","rust-std-x86_64-unknown-fuchsia","rust-std-x86_64-unknown-linux-gnu","rust-std-x86_64-unknown-linux-musl","rust-std-x86_64-unknown-netbsd","rustc-x86_64-pc-windows-msvc (default)",""] DEBUG: RlsMode: processPossiblyMissingRlsComponents: RLS is installed DEBUG: RlsMode: processPossiblyMissingRlsComponents: rust-analysis is installed DEBUG: RlsMode: start: User decided to use rustfmt DEBUG: RlsMode: start: rlsPath=rustup DEBUG: RlsMode: start: env={"RUST_SRC_PATH":"C:\Users\thomak\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\src\rust\src"} DEBUG: RlsMode: start: args=["run","nightly-x86_64-pc-windows-msvc","rls"] DEBUG: RlsMode: start: revealOutputChannelOn=3 DEBUG: RlsMode: start: Language Client Manager: start

RazrFalcon commented 7 years ago

Have the same error on linux:

Unable to open 'option.rs': File not found (/checkout/src/libcore/option.rs).

Version of VSCode: 1.14.2 Version of the extension: 0.4.2

watzon commented 7 years ago

Same here, even after adding modifying the "rust.rustLangSrcPath" option

asteinba commented 7 years ago

Same here. I resolved it by creating a symbolic link under /checkout to my src folder like this:

ln -s /home/username/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust /checkout

Works fine but it is just a workaround. Seems like the plugin ignores the rust.rustLangSrcPath and uses /checkout everytime as the path to src.

mrkaspa commented 7 years ago

Same problem here, it looks in the same project

screen shot 2017-08-28 at 2 02 25 pm

My rust settings are

"rust.rustup": {
        "toolchain": "nightly-x86_64-apple-darwin",
        "nightlyToolchain": "nightly-x86_64-apple-darwin"
    },
    "rust.mode": "rls",
    "rust.rls": {
        "useRustfmt": true
    },
    "rust.rustLangSrcPath": "/Users/mrkaspa/rust/src"
achillesss commented 7 years ago

@asteinba what is the absolute path where your dir "/checkout" is under?

asteinba commented 7 years ago

@achillesss "/checkout" is the absolute path. Just created the symlink under "/".

achillesss commented 7 years ago

@asteinba i've tried your method, it seems doesn't work for me. thanks anyway 👍

lpbak commented 6 years ago

This seems to be related to https://github.com/rust-lang-nursery/rls/issues/227. Since that bug is long-standing and it seems unclear whether it'll be fixed anytime soon, is it possible to implement some temporary workaround in this project?

BrainMaestro commented 6 years ago

@achillesss, I was able to temporarily fix it be running ln -s ~/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src /src since my error was Unable to open 'stdio.rs': File not found (file:///src/libstd/io/stdio.rs).. Maybe you can try that

odalet commented 6 years ago

@BrainMaestro The same trick works for windowsers: I used the following command (that creates a *nix-like symbolic link, not a windows shortcut) in a cmd.exe with Admin rights:

mklink /D "C:\Program Files\Microsoft VS Code\src" "C:\Users\<USER>\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\src"

Neo-Mind commented 6 years ago

@odalet tried it but not working for me in Windows 10. Still tries to pick up from \<projectdir>/src/libcore/convert.rs

Has anyone else fixed it?

Mike-AgileBits commented 6 years ago

@MStr3am This trick does work for me, did you change his directories to match yours? This is what I had to do:

mklink /D "C:\projects\rust\src\" "C:\Users\miket.multirust\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\src"