Lukas Wirth
950de7c3c3
Use --keep-going
cargo flag when building build scripts
2022-08-09 14:31:17 +02:00
Lukas Wirth
6a1737242b
Don't switch workspace on vfs file changes from libraries
...
When r-a starts up, it starts switching the workspace before all vfs
events have been processed which causes us to switch workspace multiple
times until all vfs changes have been processed. This scales with the
size of the project and its dependencies. If workspace files from
dependencies as well as the sysroot get loaded, we shouldn't switch
the workspace as those have no impact on the project workspace.
2022-08-05 12:06:42 +02:00
bors
0fe3bcfd35
Auto merge of #12808 - Veykril:check-workspace, r=Veykril
...
feat: Only flycheck workspace that belongs to saved file
Supercedes https://github.com/rust-lang/rust-analyzer/pull/11038
There is still the problem that all the diagnostics are cleared, only clearing diagnostics of the relevant workspace isn't easily doable though I think, will have to dig into that
2022-08-04 12:57:04 +00:00
Lukas Wirth
a8a6c160be
Use an empty expander for ignored non-attribute proc-macros
2022-08-03 18:10:15 +02:00
Lukas Wirth
c8ff70e924
fix: Fix server panicking on project loading when proc-macros are disabled
2022-07-26 16:30:45 +02:00
Amos Wenger
b1e3daf14b
Find standalone proc-macro-srv on windows too
2022-07-26 12:28:59 +02:00
Amos Wenger
74a2fad5e6
Gate and rename binary, use it if it's in the sysroot
2022-07-25 16:22:39 +02:00
Amos Wenger
dadb83282d
Remember the difference between 'sysroot root' and 'sysroot src root', start looking in there for a rust-analyzer-proc-macro-srv binary
2022-07-25 16:07:41 +02:00
Lukas Wirth
50b27e57ba
Better error messages when the proc-macro-server fails to start
2022-07-23 20:24:01 +02:00
Lukas Wirth
aeb07745d5
Spawn a proc-macro-srv instance per workspace
2022-07-23 20:10:10 +02:00
Lukas Wirth
25391e6d44
Only clear diagnostics of workspaces who have been flychecked
2022-07-20 11:49:36 +02:00
Jonas Schievink
ec1142c0d0
Improve file watcher config
2022-07-18 17:50:56 +02:00
Florian Diebold
8b3ec12aac
fix: Report proc macro errors in expressions correctly as well
...
They didn't have a krate before, resulting in the generic "proc macro
not found" error.
Also improve error messages a bit more.
2022-06-28 10:43:22 +02:00
Lukas Wirth
7d51fc4640
Show proc-macro loading errors in unresolved-proc-macro diagnostics
2022-06-15 17:34:01 +02:00
Lukas Wirth
664a751f2b
fix: Clear proc-macro changed flag when reloading workspace
2022-06-15 14:29:13 +02:00
Lukas Wirth
10e9f47dce
fix: Pass the build data to rustc_private crates
2022-06-12 19:29:45 +02:00
DQ
f3a5475082
Keep the other is
in reload.rs
docs
2022-05-23 10:29:03 +02:00
DQ
914ff6a395
Fix typo in new reload.rs
docs
...
Just skimmed today's changelog and came across the repetition
2022-05-23 09:35:32 +02:00
Aleksey Kladov
cbdab0e647
internal: document overall approach to reload
2022-05-21 13:11:05 +01:00
Jonas Schievink
3e356c1fd3
Clear cargo check
diagnostics when flycheck is turned off
2022-05-20 15:07:55 +02:00
Jonas Schievink
b2779111b4
simplify
2022-05-19 15:29:35 +02:00
Laurențiu Nicola
97cdf3eb0e
Try not to invalidate our state when the proc macro preference didn't change
2022-05-06 09:49:03 +03:00
bors
9e10d4b717
Auto merge of #12093 - nico-abram:uwu, r=Veykril
...
Reload project on .cargo/config[.toml] changes
Fixes #11024
Not adding tests as discussed in the issue
2022-05-02 12:21:42 +00:00
Justin Tracey
cfa7204544
small typo in log message
2022-04-29 05:59:32 +00:00
unknown
b373e62f1a
Reload project on .cargo/config[.toml] changes
...
Fixes #11024
2022-04-27 12:10:43 -03:00
Edwin Cheng
72fcc66835
More visibility for switch workspaces and its states
2022-04-18 14:26:00 +08:00
Aleksey Kladov
3f4235d59b
internal: more visibility into why things happen
2022-04-16 13:17:27 +01:00
Lukas Wirth
b23b276310
internal: Show more project building errors to the user
2022-04-14 11:31:01 +02:00
Lukas Wirth
dd4b53402d
Regenrate docs and package.json
2022-01-06 13:50:24 +01:00
Lukas Wirth
aecf26d09b
feat: Add config to replace specific proc-macros with dummy expanders
2022-01-06 13:50:18 +01:00
Aleksey Kladov
b9417f3483
feat: correctly fallback to notify if the clinet-side file watching is not supported
2022-01-01 17:26:54 +03:00
Lukas Wirth
1d80302b76
Set server status to warning when proc-macro sources change
2021-10-30 14:49:32 +02:00
Milo
35e5daacc3
more clippy fixes
2021-10-16 12:32:55 +01:00
bors[bot]
bcf0072bb4
Merge #10199
...
10199: fix: Fix Cargo.toml change detection r=lnicola a=lnicola
Maybe fixes #9546
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2021-09-13 18:14:20 +00:00
Laurențiu Nicola
4d7a3bb5c7
Shuffle code around to avoid an allocation
2021-09-13 21:06:31 +03:00
Jonas Schievink
e241015a75
Rename is_member
to is_local
2021-09-07 17:29:58 +02:00
Aleksey Kladov
81602f8a5d
internal: reduce coupling
...
tt is a data structure, data structures cant' go wrong, they shouldn't
have the knowledge that the world outside of them has all kinds of
errors.
2021-08-31 19:14:33 +03:00
Aleksey Kladov
d8a3d6f378
internal: cleanup proc macro server error handlig
...
When dealing with proc macros, there are two very different kinds of
errors:
* first, usual errors of "proc macro panicked on this particular input"
* second, the proc macro server might day if the user, eg, kills it
First kind of errors are expected and are a normal output, while the
second kind are genuine IO-errors.
For this reason, we use a curious nested result here: `Result<Result<T,
E1>, E2>` pattern, which is 100% inspired by http://sled.rs/errors.html
2021-08-31 19:01:39 +03:00
Aleksey Kladov
722a2a4690
minor: improve readability
...
naming, layout & comments help!
2021-08-31 15:46:00 +03:00
Aleksey Kladov
9e0203bd69
internal: make scheduling control flow more obvious
...
There should be only one place where we need to check if we want to
start background activities.
2021-08-30 19:39:08 +03:00
Dezhi Wu
ba0947dded
switch log
crate to tracing
2021-08-30 15:11:42 +08:00
Jonas Schievink
0ff2c81bb9
Fix reporting of build script errors
2021-08-25 17:56:39 +02:00
Jonas Schievink
095df7bc39
Don't fetch build script output twice
2021-08-25 17:56:24 +02:00
Aleksey Kladov
e86388689f
internal: remove unreasonable crate dependency
...
Proc macro expansion shouldn't know about salsa at all.
2021-08-22 14:05:12 +03:00
Aleksey Kladov
881d71a489
internal: reduce crate interdependence
...
I don't think there's anything wrong with project_model depending on
proc_macro_api directly -- fundamentally, both are about gluing our pure
data model to the messy outside world.
However, it's easy enough to avoid the dependency, so why not.
As an additional consideration, `proc_macro_api` now pulls in `base_db`.
project_model should definitely not depend on that!
2021-08-22 13:32:00 +03:00
Aleksey Kladov
410679285b
internal: prepare to track changes to mem_docs
2021-07-26 20:17:10 +03:00
Aleksey Kladov
b8b166e674
fix: potential bugs when build scripts do not match the current project
2021-07-18 13:13:03 +03:00
Aleksey Kladov
f4de2ece0d
internal: simplify handling of the build scripts
2021-07-18 11:29:22 +03:00
Aleksey Kladov
8d8c26e6f5
internal: a bit more of cwd safety for flycheck
2021-07-17 18:13:35 +03:00
Laurențiu Nicola
f1f3d5cb84
Watch for Cargo.toml and .lock changes
2021-06-29 14:38:50 +03:00
Jonas Schievink
9fdb8f9037
Make it opt-in
2021-06-03 18:09:21 +02:00
ammkrn
96ee19851b
Check for subdirs in vfs loader exclusions.
...
The current logic used to transfer global_excludes into vfs exclusions
only transfers global_excludes that are the parent of an item in
dirs.include.
This commit additionally adds an item from global_exclude to the vfs
exclusions if the global_exclude is a child of an included item.
2021-05-25 11:35:39 -05:00
Kirill Bulatov
de090749d9
Drag detached files towards loading
2021-05-23 22:46:20 +03:00
Kirill Bulatov
695569d978
Draft detached files retrieval
2021-05-23 22:46:20 +03:00
Laurențiu Nicola
6b187af337
Add profiling spans under cargo_to_crate_graph
2021-04-22 21:25:29 +03:00
Aleksey Kladov
29d5f29932
fix: don't spam repeated error messages when cargo check
fails
...
Conceptually, using a *message* here is wrong, because this is a
"status", rather than "point in time" thing. But statuses are an LSP
extension, while messages are stable. As a compromise, send message only
for more critical `metadata` failures, and only once per state change.
2021-04-12 16:19:36 +03:00
Aleksey Kladov
de33702784
feat: show errors from cargo metadata
and initial cargo check
in the status bar
...
closes #3155
2021-04-06 18:08:05 +03:00
Aleksey Kladov
8fe20b19d4
More robust status notifications
2021-04-06 15:45:31 +03:00
Aleksey Kladov
e3c47ccefc
Use autoreload config to gate execution rather that staleness
2021-04-06 13:10:50 +03:00
Aleksey Kladov
9ca59733e3
Improve readability
...
It's better to order functions in the order they are called, if there's
ordering between them.
2021-04-06 12:35:40 +03:00
Aleksey Kladov
aaa8c208b1
internal: do not drop errors from cargo metadata/check
...
Work towards #3155
2021-04-06 12:33:19 +03:00
Aleksey Kladov
7099438e0c
internal: prepare to store OpQueue results in the queue itself
2021-04-05 20:49:00 +03:00
Matthias Krüger
202b51bc7b
a lot of clippy::style fixes
2021-03-21 16:15:41 +01:00
Aleksey Kladov
3d80e0a154
Migrate to user-centric config name for cargo check
stuff
2021-03-04 15:38:53 +03:00
Florian Diebold
a7387cae2c
Fix slow tests sometimes failing
...
In some situations we reloaded the workspace in the tests after having reported
to be ready. There's two fixes here:
1. Add a version to the VFS config and include that version in progress reports,
so that we don't think we're done prematurely;
2. Delay status transitions until after changes are applied. Otherwise the last
change during loading can potentially trigger a workspace reload, if it contains
interesting changes.
2021-02-12 16:31:16 +01:00
Edwin Cheng
4adf13e2ef
Only allow one proc-macro process
2021-02-02 04:55:17 +08:00
Edwin Cheng
dd47f8bac6
bug fix
2021-01-29 01:19:09 +08:00
Edwin Cheng
9358eecc04
Async Loading outdir and proc-macro
2021-01-29 01:04:14 +08:00
Aleksey Kladov
4b59c3a538
Make logger-based debugging more pleasant
2021-01-28 17:07:53 +03:00
Aleksey Kladov
2870e70163
Add config option to ignore directories
2021-01-26 16:45:54 +03:00
Aleksey Kladov
add87f5424
Avoid blocking the main loop when editing Cargo.toml
...
I've noticed a bunch of "main loop too long" warnings in console when
typing in Cargo.toml. Profiling showed that the culprit is `rustc
--print cfg` call.
I moved it to the background project loading phase, where it belongs.
This highlighted a problem: we generally use single `cfg`, while it
really should be per crate.
2021-01-18 14:52:12 +03:00
Aleksey Kladov
e13065b8ac
Add profile call
2021-01-18 13:30:12 +03:00
Aleksey Kladov
bb453edebe
Honor client's dynamic registration caps
...
cc https://github.com/rust-analyzer/rust-analyzer/pull/5516#issuecomment-757520828
2021-01-10 22:38:35 +03:00
Aleksey Kladov
2ed258ba42
Fix progress token is already registered crash
...
After we started reporting progress when running cargo check during
loading, it is possible to crash the client with two identical progress
tokens.
This points to a deeper issue: we might be running several cargo checks
concurrently, which doesn't make sense.
This commit linearizes all workspace fetches, making sure no updates are
lost.
As an additional touch, it also normalizes progress & result reporting,
to make sure they stand in sync.
2021-01-10 18:02:02 +03:00
Edwin Cheng
2b2d699b35
Report progress for cargo metadata and output-dir
2021-01-08 01:18:58 +08:00
Aleksey Kladov
66ed821e18
Speed up snapshoting
...
Config can be fairly big, no need to deep clone it frequently
2021-01-06 15:46:31 +03:00
Aleksey Kladov
f7a15b5cd1
More maintainable config
...
Rather than eagerly converting JSON, we losslessly keep it as is, and
change the shape of user-submitted data at the last moment.
This also allows us to remove a bunch of wrong Defaults
2021-01-06 15:39:28 +03:00
Aleksey Kladov
624eb1ee54
More maintainable caps config
...
The idea here is that we preserve client's config as is, without
changes. This gets rid of state!
2021-01-05 17:46:57 +03:00
Jonas Schievink
2b2318e695
Remove dummy ProcMacroClient in favor of Option
2020-12-07 17:16:50 +01:00
Jonas Schievink
e49ba0d1df
Downgrade "failed to load" error to warning
2020-11-27 18:35:22 +01:00
Aleksey Kladov
0d19ee1d70
Simplify
2020-11-17 15:25:57 +01:00
Aleksey Kladov
4dfda64b39
Cleanup workspace loading a tiny bit
2020-11-13 17:38:26 +01:00
Xavier Denis
8716087919
Add support for loading rustc private crates
2020-11-11 12:45:40 +01:00
Igor Aleksanov
19cce08662
Re-export base_db from ide_db
2020-10-24 11:39:57 +03:00
Aleksey Kladov
8716c4cec3
Move ide::AnalysisChange -> base_db::Change
...
This seems like a better factoring logically; ideally, clients shouldn't touch
`set_` methods of the database directly. Additionally, I think this
should remove the unfortunate duplication in fixture code.
2020-10-02 16:45:08 +02:00
Jonas Schievink
1a28f30ba4
Spawn a flycheck instance per workspace
2020-09-27 19:41:54 +02:00
bors[bot]
e70cf706bb
Merge #6018
...
6018: Correct project_root path for ProjectJson. r=jonas-schievink a=woody77
It was already the folder containing the rust-project.json file, not the file itself. This also removes the Option-ness of it, since it's now an infallible operation to set the member value.
Co-authored-by: Aaron Wood <aaronwood@google.com>
2020-09-20 19:25:09 +00:00
Laurențiu Nicola
5a0bad7754
Don't re-read open files from disk when reloading a workspace
2020-09-18 22:15:44 +03:00
Aaron Wood
2fbb09a73f
Correct project_root path for ProjectJson.
...
It was already the folder containing the rust-project.json file, not the file itself.
2020-09-16 12:09:44 -07:00
Aaron Wood
74c26a785a
Add support for custom flycheck commands with JSON project workspaces
...
Enable flychecks with JSON project workspaces if an override command was provided as part
of the client configuration.
2020-09-15 18:51:57 -07:00
Jonas Schievink
681ac6294a
Report better errors in project.json/sysroot
2020-09-11 14:48:56 +02:00
Aleksey Kladov
3a72afed8c
Improve logging
2020-08-25 11:43:21 +02:00
bors[bot]
6826dd044a
Merge #5782
...
5782: Fix StatusNotification r=matklad a=vsrs
This PR fixes the following:
As per specification `params` property in [NotificationMessage ](https://microsoft.github.io/language-server-protocol/specifications/specification-current/#notificationMessage ) should be `array | object` while RA uses `"loading" | "ready" | "invalid" | "needsReload"`.
Co-authored-by: vsrs <vit@conrlab.com>
2020-08-17 14:23:03 +00:00
vsrs
1eed036a6e
Fix StatusNotification
2020-08-17 14:56:27 +03:00
Aleksey Kladov
1b0c7701cc
Rename ra_ide -> ide
2020-08-13 17:58:27 +02:00
Aleksey Kladov
ed20a857f4
Rename ra_db -> base_db
2020-08-13 16:29:33 +02:00
Pavan Kumar Sunkara
eac24d52e6
Rename ra_project_model -> project_model
2020-08-13 12:05:30 +02:00
Pavan Kumar Sunkara
349e6c62ad
Rename ra_proc_macro_srv -> proc_macro_srv
2020-08-13 03:18:19 +02:00
Aleksey Kladov
208b7bd7ba
Rename ra_prof -> profile
2020-08-12 16:35:29 +02:00
Aleksey Kladov
39a2bc5e3c
Expose package roots more directly
2020-07-21 12:52:51 +02:00
Jeremy Kolb
17f4d27f12
Minor perf tweaks per clippy
2020-07-19 14:26:24 -04:00
Aleksey Kladov
a40e05dd5d
Don't drop flycheck messages during restart
...
closes #5386
2020-07-15 14:37:44 +02:00
Aleksey Kladov
e6ea395fb0
Don't show error when speculatively reloading workspace
2020-07-11 01:39:06 +02:00
Aleksey Kladov
a425d7d871
Simplify
2020-07-10 23:57:10 +02:00
Aleksey Kladov
dac9a4cebd
Don't spawn notify unnecessary
2020-07-10 23:45:07 +02:00
Aleksey Kladov
be679a02ab
Add profiling calls
2020-07-10 22:30:24 +02:00
Aleksey Kladov
86bc4d20b3
Also reload when adding new examples, tests, etc
2020-07-10 22:30:24 +02:00
Aleksey Kladov
d0a8f6a3eb
Automatically reload project info on Cargo.toml changes
2020-07-10 15:35:15 +02:00
Aleksey Kladov
6c7578bd7a
Move cargo metadata off the main loop
2020-07-02 17:39:51 +02:00
bors[bot]
83f3cdca4f
Merge #5191
...
5191: Minor r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-07-02 14:10:13 +00:00
Aleksey Kladov
6a694ad047
Minor
2020-07-02 16:06:00 +02:00
Aleksey Kladov
4f26a3734e
Indicate when project needs a reload
2020-07-02 15:34:12 +02:00
Aleksey Kladov
a03cfa4926
Automatically reload project on config change
2020-07-01 16:42:14 +02:00
Aleksey Kladov
5a18734338
Fix config switching
2020-06-26 17:28:04 +02:00
Aleksey Kladov
9d15e8fc4f
Type safer requests
2020-06-26 17:07:14 +02:00
Aleksey Kladov
1893289e5c
Move progress reporting to utils
2020-06-26 16:33:57 +02:00
Aleksey Kladov
e70f7dc10c
Minor
2020-06-26 00:27:57 +02:00
Aleksey Kladov
72fb712dff
Add new module for project loading stuff
2020-06-26 00:27:57 +02:00