rust-lang / rust-analyzer

A Rust compiler front-end for IDEs
https://rust-analyzer.github.io/
Apache License 2.0
13.82k stars 1.53k forks source link

rust-analyzer.files.excludeDirs is (still) not working #14734

Open willtunnels opened 1 year ago

willtunnels commented 1 year ago

rust-analyzer.files.excludeDirs does not appear to be working. Issue #7755 discussed this awhile ago and was closed, but the feature is still not working for me. I am using rust-analyzer 0.4.1501-standalone with rustc 1.68.2 in VSCode.

It could be that I misunderstand how to specify directories. My project layout is

.
├── src
        ├── module0

and my rust analyzer setting is

{
  "rust-analyzer.files.excludeDirs: ["src/module0"]
}

I tried also setting files.watcherExclude, as suggested in the documentation, but no luck.

jlevon commented 1 year ago

same here. I have a tests/ directory with a lot of small, non-rust files, that stops rust-analyzer from being able to resolve symbols (no idea why). If I move the directory out of the way, RA works. But no form of excludeDirs I've found has any effect.

I'm using vim-lsp, e.g.

if executable('rust-analyzer')
  au User lsp_setup call lsp#register_server({
        \   'name': 'Rust Language Server',
        \   'cmd': {server_info->['rust-analyzer']},
        \ 'root_uri':{server_info->lsp#utils#get_default_root_uri()},
        \ 'initialization_options': { "rust-analyzer.files.excludeDirs": [ "tests", "vendor" ] },
        \   'whitelist': ['rust'],
        \ })
endif

with no effect.

sinesc commented 11 months ago

I have the same issue with non-rust files I use rust syntax highlighting for. They aren't in src/ and don't initially get checked but as soon as I open one in the editor rust-analyzer generates lot's of syntax errors. excludeDirs does not seem to have any effect at all.

cloutiertyler commented 9 months ago

I am having the same issue.

jlevon commented 9 months ago

This sort of works for me:

if executable('rust-analyzer')
  au User lsp_setup call lsp#register_server({
        \   'name': 'Rust Language Server',
        \   'cmd': {server_info->['rust-analyzer']},
        \   'whitelist': ['rust'],
        \   'initialization_options': {
        \        'files': {
        \            'excludeDirs': ['tests', 'vendor'],
        \        }
        \   }
        \ })
endif
$ rust-analyzer --version
rust-analyzer 1.72.1 (d5c2e9c 2023-09-13)

This does seem to ignore tests/ dir (which happens to basically completely break rust-analyzer, and has no rust sources in it), but rust-analyzer still looks at vendor - presumably because it's referenced from src/

Andrew15-5 commented 5 months ago

I also have this problem. It would be nice if rust-analyzer can also just use entries from the .gitignore.

wiiznokes commented 4 months ago

I'm having the same problem. It would be nice if files are also supported

seanchann commented 3 months ago

same problem. Do you have any suggestions for this?