Lukas Wirth
e4f2d0e3a8
Introduce SymbolKind::Derive
2021-12-04 18:18:09 +01:00
Lukas Wirth
642c1eb720
Introduce SymbolKind::Attribute
2021-12-04 18:01:22 +01:00
Lukas Wirth
d174158abc
Rename things: Tool -> ToolModule
2021-12-03 17:15:19 +01:00
Lukas Wirth
d1677f3286
Remove syntax highlighting hack for builtin attrs
2021-12-03 16:54:34 +01:00
bors[bot]
4ca6233bd2
Merge #10847
...
10847: fix: derive attr path handling in `replace_derive_with_manual_impl` r=rainy-me a=rainy-me
partially fixes #10666
renaming issues mentioned in https://github.com/rust-analyzer/rust-analyzer/issues/10666#issuecomment-955671021 doesn't seem to be fixable at this moment since it's not searchable?(not recorded?) by name.
<del>I'm not sure if it's appropriate to move `parse_comma_sep_paths` function to a method in `ast/node_ext`, maybe `ide_db::helpers` also make sense.</del> put into `ide_db::` instead.
Co-authored-by: rainy-me <github@yue.coffee>
2021-11-24 15:33:00 +00:00
rainy-me
0bb08ccb8f
fix: derive path handling
2021-11-25 00:21:29 +09:00
Lukas Wirth
0c98a01b3e
Remove possible multiline details in completions
2021-11-24 16:08:11 +01:00
Andrew Leverette
7f15537fa9
Add optimization for not allocating in case of no module path for struct literal
2021-11-23 14:41:31 -06:00
Andrew Leverette
ce7a141110
Add support for qualified struct names
2021-11-23 10:57:29 -06:00
Lukas Wirth
77f08d0fc3
Split parts of ide_db::call_info
off into ide
2021-11-22 13:23:34 +01:00
Lukas Wirth
f2f89618b7
minor: Simplify
2021-11-16 19:28:32 +01:00
zhoufan
5666046ec9
fix: flyimport triggers on enum variant declarations
2021-11-14 12:16:21 +08:00
Lukas Wirth
dea973089c
Simplify
2021-11-10 18:26:18 +01:00
Lukas Wirth
ab657af5b7
Add some completion profile spans
2021-11-08 19:41:16 +01:00
bors[bot]
c5c11b87cc
Merge #10720
...
10720: fix: Don't ascribe types in pattern completion for param patterns twice r=Veykril a=Veykril
Fixes #10323
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-11-08 13:12:03 +00:00
Lukas Wirth
f7e8136923
Add test for current incorrect behaviour
2021-11-08 14:10:26 +01:00
Lukas Wirth
7369360c15
Don't ascribe types in pattern completion for patterns twice
2021-11-05 18:39:36 +01:00
Lukas Wirth
2f5afba9f8
Replace some String usages with SmolStr in completions
2021-11-05 12:30:39 +01:00
Lukas Wirth
439a8194b0
Replace more Name::to_string usages with Name::to_smol_str
2021-11-04 18:12:05 +01:00
Lukas Wirth
96db0d8bdd
Add Semantics::original_ast_node for upmapping nodes out of macro files
2021-11-03 21:12:36 +01:00
Lukas Wirth
ebd63ec1cf
feat: Make unqualified derive attributes flyimportable
2021-10-29 14:51:26 +02:00
Lukas Wirth
0468b11de7
Remove CompletionKind
in favor of CompletionItemKind
2021-10-27 17:23:43 +02:00
Lukas Wirth
722489e3ff
Remove filtered completion list usage in completion tests
2021-10-27 16:53:39 +02:00
bors[bot]
142b6dc650
Merge #10631
...
10631: fix: Fix postfix completions panicking r=Veykril a=Veykril
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/10243 , I couldn't reproduce the panic with the given snippet, but this change should still guard against it.
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-10-25 13:24:07 +00:00
Lukas Wirth
a932935d4e
Fix postfix completions panicking
2021-10-25 15:22:29 +02:00
Laurențiu Nicola
8457ae34bd
Set MSRV
2021-10-23 15:07:11 +03:00
Laurențiu Nicola
ca44b6892e
Use array IntoIter
2021-10-22 09:23:29 +03:00
Lukas Wirth
1294bfce86
Migrate to edition 2021
2021-10-21 20:10:40 +02:00
Lukas Wirth
bed6eae304
Fix qualified lint completions ignoring the qualifier value
2021-10-20 14:03:41 +02:00
bors[bot]
0e4c3b2c2b
Merge #10586
...
10586: internal: Derive completions work on hir, not names r=Veykril a=Veykril
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-10-19 11:51:07 +00:00
Lukas Wirth
3dfe5045c5
Derive completions work on hir, not names
2021-10-19 13:50:08 +02:00
Lukas Wirth
5704de66c2
Skip non clippy completions when completing a clippy path
2021-10-17 23:04:38 +02:00
Lukas Wirth
99906baa17
Fix clippy attribute completions always prefixing with clippy::
2021-10-17 13:07:49 +02:00
Lukas Wirth
ce47d13101
Make attribute completions more ast based
2021-10-17 12:44:44 +02:00
Lukas Wirth
e329b7742b
Reorder CompletionContext functions
2021-10-17 11:15:56 +02:00
Lukas Wirth
791a2afbf9
Don't turn local names into strings in CompletionContext
2021-10-17 10:59:06 +02:00
Lukas Wirth
81ccebf1f2
internal: Refactor lifetime completion context fields
2021-10-16 23:56:57 +02:00
Lukas Wirth
2fbd52c78f
fix: Fix qualified path completion not completing macros
2021-10-16 23:33:09 +02:00
Mirko Rainer
eccfa1645b
Saw a FIXME comment and decided to fix it.
...
This renames `descend_into_macros` to `descend_into_macros_single` and `descend_into_macros_many` into `descend_into_macros`.
However, this does not touch a function in `SemanticsImpl` of same name.
2021-10-12 11:52:31 -04:00
Lukas Wirth
66bfa6fc88
Improve user snippet import performance
2021-10-12 11:48:37 +02:00
bors[bot]
1cca1fa5bf
Merge #10525
...
10525: Regenerate lints and features r=Veykril a=Veykril
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-10-12 07:56:00 +00:00
Lukas Wirth
acaf270911
Remove stale module
2021-10-12 09:37:16 +02:00
Lukas Wirth
d71a4f40d9
Regenerate lints
2021-10-12 09:35:02 +02:00
Lukas Wirth
5ccaff3c97
Simplify
2021-10-11 21:49:50 +02:00
bors[bot]
64ca0f63bf
Merge #10504
...
10504: Remove needless clone r=lnicola a=k-nasa
## Why
Delete clones for efficiency
## What
- I erased unnecessary clones
Co-authored-by: k-nasa <htilcs1115@gmail.com>
2021-10-10 07:17:52 +00:00
k-nasa
b50cb5c261
Remove neesless clone
2021-10-10 10:50:51 +09:00
Aleksey Kladov
afacdd612d
internal: update expect
2021-10-09 17:17:16 +03:00
Lukas Wirth
12465a8a3c
Expose HasSource::source through Semantics with caching behaviour
2021-10-07 15:00:14 +02:00
bors[bot]
c409cf0e26
Merge #10458
...
10458: feat: Implement custom user snippets r=Veykril a=Veykril
![Y24dX7fOWX](https://user-images.githubusercontent.com/3757771/136059454-ceccfc2c-2c90-46da-8ad1-bac9c2e83ec1.gif )
Allows us to address the following issues:
- `.arc / .rc / .pin, similar to .box?` https://github.com/rust-analyzer/rust-analyzer/issues/7033
- `Add unsafe snippet` https://github.com/rust-analyzer/rust-analyzer/issues/10392 , would allow users to have this without the diagnostic)
- `.ok() postfix snippet is annoying` https://github.com/rust-analyzer/rust-analyzer/issues/9636 , allows us to get rid of the `ok` postfix and similar ones
- `Postfix vec completion` https://github.com/rust-analyzer/rust-analyzer/issues/7773
cc https://github.com/rust-analyzer/rust-analyzer/issues/772
Zulipd discussion: https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frust-analyzer/topic/Custom.20Postfix.20snippets
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-10-05 16:41:11 +00:00
Lukas Wirth
041cfbe0f4
Render the expansion of snippets as their docs
2021-10-05 18:11:22 +02:00
Lukas Wirth
77cbf4adbc
Bring the implementation closer to VSCode snippet definitions
2021-10-05 17:18:40 +02:00
bors[bot]
86c534f244
Merge #10440
...
10440: Fix Clippy warnings and replace some `if let`s with `match` r=Veykril a=arzg
I decided to try fixing a bunch of Clippy warnings. I am aware of this project’s opinion of Clippy (I have read both [rust-lang/clippy#5537 ](https://github.com/rust-lang/rust-clippy/issues/5537 ) and [rust-analyzer/rowan#57 (comment)](https://github.com/rust-analyzer/rowan/pull/57#discussion_r415676159 )), so I totally understand if part of or the entirety of this PR is rejected. In particular, I can see how the semicolons and `if let` vs `match` commits provide comparatively little benefit when compared to the ensuing churn.
I tried to separate each kind of change into its own commit to make it easier to discard certain changes. I also only applied Clippy suggestions where I thought they provided a definite improvement to the code (apart from semicolons, which is IMO more of a formatting/consistency question than a linting question). In the end I accumulated a list of 28 Clippy lints I ignored entirely.
Sidenote: I should really have asked about this on Zulip before going through all 1,555 `if let`s in the codebase to decide which ones definitely look better as `match` :P
Co-authored-by: Aramis Razzaghipour <aramisnoah@gmail.com>
2021-10-05 08:58:40 +00:00
Aramis Razzaghipour
9583dd5725
Replace if let
with match
where appropriate
2021-10-05 09:00:21 +11:00
Lukas Wirth
2b17da60db
Resolve macros in snippet require items
2021-10-04 22:53:02 +02:00
Lukas Wirth
ca1fdd75f1
Regen docs
2021-10-04 22:13:12 +02:00
Lukas Wirth
1f7e14e78b
Fix multiple imports acting on files on separately
2021-10-04 22:05:30 +02:00
Lukas Wirth
454ecd167c
Make multiple import edits work for completions
2021-10-04 21:44:33 +02:00
Lukas Wirth
046c85ef0c
Add custom non-postfix snippets
2021-10-04 19:22:41 +02:00
Lukas Wirth
88f213eadd
Initial implementation of custom postfix snippets
2021-10-04 17:49:21 +02:00
Lukas Wirth
7faa35cbbd
Simplify
2021-10-04 15:16:13 +02:00
bors[bot]
4f3ce62b0d
Merge #10402
...
10402: fix: Don't show flyimport completions in use renames r=Veykril a=Veykril
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/10367
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-09-30 16:18:09 +00:00
Lukas Wirth
d7d16a7ac9
Don't show flyimport completions in use renames
2021-09-30 18:15:55 +02:00
Ariel Davis
00a615b819
Add pub(super) along with pub(crate) and pub as a completion keyword
2021-09-29 21:55:15 -07:00
bors[bot]
629db286d1
Merge #10373
...
10373: fix: `into_iterator` not completed on `Vec<{unknown}>` r=iDawer a=iDawer
Fixes #10297
Co-authored-by: Dawer <7803845+iDawer@users.noreply.github.com>
2021-09-28 19:38:59 +00:00
Dawer
11aed78e2b
fix: replace errors in receiver type when iterating method candidates
2021-09-27 21:46:00 +05:00
Lukas Wirth
b6ed91a6de
Rename *Owner
traits to Has*
2021-09-27 12:54:24 +02:00
Aleksey Kladov
2bf81922f7
internal: more reasonable grammar for blocks
...
Consider these expples
{ 92 }
async { 92 }
'a: { 92 }
#[a] { 92 }
Previously the tree for them were
BLOCK_EXPR
{ ... }
EFFECT_EXPR
async
BLOCK_EXPR
{ ... }
EFFECT_EXPR
'a:
BLOCK_EXPR
{ ... }
BLOCK_EXPR
#[a]
{ ... }
As you see, it gets progressively worse :) The last two items are
especially odd. The last one even violates the balanced curleys
invariant we have (#10357 ) The new approach is to say that the stuff in
`{}` is stmt_list, and the block is stmt_list + optional modifiers
BLOCK_EXPR
STMT_LIST
{ ... }
BLOCK_EXPR
async
STMT_LIST
{ ... }
BLOCK_EXPR
'a:
STMT_LIST
{ ... }
BLOCK_EXPR
#[a]
STMT_LIST
{ ... }
2021-09-26 19:16:09 +03:00
bors[bot]
c577e128fc
Merge #10248
...
10248: internal: remove dead code r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-09-15 18:23:46 +00:00
Aleksey Kladov
73b0f9dc04
internal: remove dead code
2021-09-15 21:22:06 +03:00
bors[bot]
911659a166
Merge #10048
...
10048: fix: correctly complete macro call if cursor at `!` r=Veykril a=unexge
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/9904
Co-authored-by: unexge <unexge@gmail.com>
2021-09-15 18:13:09 +00:00
bors[bot]
249ebdd076
Merge #10229
...
10229: fix: do not complete builtin attributes for qualified paths r=Veykril a=Veykril
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-09-13 22:31:39 +00:00
Lukas Wirth
845904f0bb
fix: do not complete builtin attributes for qualified paths
2021-09-14 00:31:14 +02:00
Lukas Wirth
aa1b36dc6d
Downmap the token in attribute inputs when expanding speculatively
2021-09-14 00:04:04 +02:00
Lukas Wirth
2b907652ee
Speculatively expand attributes in completions
2021-09-13 19:30:23 +02:00
Aleksey Kladov
076c972e3b
internal: prevent possible bugs when adding magical comments
2021-09-13 13:43:13 +03:00
Giles Cope
4ccd90af81
remove unused deps
2021-09-11 16:20:04 +01:00
Laurențiu Nicola
d27ed8c243
Avoid extra allocation in completion rendering
2021-09-06 17:55:07 +03:00
bors[bot]
cbc13ae6bd
Merge #10152
...
10152: feat: Add completion for raw identifiers r=matklad a=nabakin
![rust_analyzer_pr](https://user-images.githubusercontent.com/894305/132110362-c21b713d-acaf-4a6d-9749-ff812172cbce.gif )
Adds support for valid Rust completion of raw identifiers.
Previously, code completion of fields made via raw identifiers would not re-insert those raw identifiers, resulting in invalid Rust code. Now, code completion of fields made via raw identifiers do re-insert those raw identifiers, resulting in valid Rust code.
The same is true for all code completion instances for fields and compatible Rust identifiers.
Co-authored-by: Blake Wyatt <894305+nabakin@users.noreply.github.com>
2021-09-06 10:54:18 +00:00
bors[bot]
0bc8e2acb8
Merge #10154
...
10154: feat: Complete `#![recursion_limit = "N"]` instead of `#![recursion_limit = N]` r=lnicola a=hkmatsumoto
Currently ra emits `#![recursion_limit = 128]`, but this should rather be `#![recursion_limit = "128"]`
Co-authored-by: Hirochika Matsumoto <git@hkmatsumoto.com>
2021-09-06 10:38:41 +00:00
Jonas Schievink
8e736da456
Recover from statement macro expansion errors
2021-09-06 00:16:12 +02:00
Hirochika Matsumoto
1f238b3bb5
Complete #![recursion_limit = "N"]
over #![recursion_limit = N]
2021-09-05 18:05:06 +09:00
Blake Wyatt
6c51ecad5b
Add completion for raw identifiers
2021-09-04 19:28:59 -04:00
Lukas Wirth
40a2faee65
Enable flyimport for ident patterns
2021-09-01 16:13:53 +02:00
unexge
e0e7f0c170
Move "complete macro call if cursor at !
token" logic to MacroRender
2021-09-01 09:11:20 +03:00
Dezhi Wu
ba0947dded
switch log
crate to tracing
2021-08-30 15:11:42 +08:00
Lukas Wirth
ebb87fe157
Don't use fake text range in original node search as is in completions
2021-08-27 15:10:42 +02:00
Lukas Wirth
5012fa2dd4
Add completion tests for cursor after items
2021-08-27 14:21:17 +02:00
unexge
c0d2b44250
fix: correctly complete macro call if cursor at !
2021-08-26 19:44:46 +03:00
Frank Steffahn
3a5a93595f
Fix typos “a”→“an”
2021-08-22 14:31:37 +02:00
Lukas Wirth
833de22d0b
fix: Do not show functional update completion when already qualified
2021-08-21 20:45:15 +02:00
bors[bot]
933a4dc3a6
Merge #9902
...
9902: minor: move functionality to a better place r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-08-14 17:43:52 +00:00
Aleksey Kladov
3c49a9f079
minor: move functionality to a better place
2021-08-14 20:43:28 +03:00
bors[bot]
1e0d20366f
Merge #9900
...
9900: internal: remove one more usage of old editing API. r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-08-14 17:17:51 +00:00
Aleksey Kladov
e300f58d2c
internal: remove one more usage of old editing API.
2021-08-14 20:17:16 +03:00
Lukas Wirth
2e733b1a3e
Simplify
2021-08-14 19:09:36 +02:00
Lukas Wirth
bf918046fa
Only complete type annotations for patterns in function params
2021-08-14 18:18:32 +02:00
Lukas Wirth
73b7b34f89
Fill out expected type for functional update syntax completion
2021-08-11 18:12:44 +02:00
Lukas Wirth
f6d6fda85b
Refine functional update completion some more
2021-08-10 17:03:38 +02:00
bors[bot]
f6ef043a88
Merge #9845
...
9845: fix: Do not drop `..Default::default()` completion when typing `..` r=Veykril a=Veykril
cc https://github.com/rust-analyzer/rust-analyzer/issues/9839
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-08-10 13:08:58 +00:00
Lukas Wirth
e729529410
Do not drop ..Default::default()
completion when typing ..
2021-08-10 15:08:35 +02:00