aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Merge #7904bors[bot]2021-03-125-46/+140
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7904: Improved completion sorting r=JoshMcguigan a=JoshMcguigan I was working on extending #3954 to apply completion scores in more places (I'll have another PR open for that soon) when I discovered that actually completion sorting was not working for me at all in `coc.nvim`. This led me down a bit of a rabbit hole of how coc and vs code each sort completion items. Before this PR, rust-analyzer was setting the `sortText` field on completion items to `None` if we hadn't applied any completion score for that item, or to the label of the item with a leading whitespace character if we had applied any completion score. Completion score is defined in rust-analyzer as an enum with two variants, `TypeMatch` and `TypeAndNameMatch`. In vs code the above strategy works, because if `sortText` isn't set [they default it to the label](https://github.com/microsoft/vscode/commit/b4ead4ed665e1ce2e58d8329c682f78da2d4e89d). However, coc [does not do this](https://github.com/neoclide/coc.nvim/blob/e211e361475a38b146a903b9b02343551c6cd372/src/completion/complete.ts#L245). I was going to file a bug report against coc, but I read the [LSP spec for the `sortText` field](https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_completion) and I feel like it is ambiguous and coc could claim what they do is a valid interpretation of the spec. Further, the existing rust-analyzer behavior of prepending a leading whitespace character for completion items with any completion score does not handle sorting `TypeAndNameMatch` completions above `TypeMatch` completions. They were both being treated the same. The first change this PR makes is to set the `sortText` field to either "1" for `TypeAndNameMatch` completions, "2" for `TypeMatch` completions, or "3" for completions which are neither of those. This change works around the potential ambiguity in the LSP spec and fixes completion sorting for users of coc. It also allows `TypeAndNameMatch` items to be sorted above just `TypeMatch` items (of course both of these will be sorted above completion items without a score). The second change this PR makes is to use the actual completion scores for ref matches. The existing code ignored the actual score and always assumed these would be a high priority completion item. #### Before Here coc just sorts based on how close the items are in the file. ![image](https://user-images.githubusercontent.com/22216761/110249880-46063580-7f2d-11eb-9233-91a2bbd48238.png) #### After Here we correctly get `zzz` first, since that is both a type and name match. Then we get `ccc` which is just a type match. ![image](https://user-images.githubusercontent.com/22216761/110249883-4e5e7080-7f2d-11eb-9269-a3bc133fdee7.png) Co-authored-by: Josh Mcguigan <[email protected]>
| * update relevance score u8 -> u32Josh Mcguigan2021-03-122-10/+10
| |
| * add relevance score testJosh Mcguigan2021-03-121-0/+60
| |
| * remove unused CompletionScore enumJosh Mcguigan2021-03-123-14/+3
| |
| * add completion relevance scoreJosh Mcguigan2021-03-125-37/+82
| |
* | Merge #7980bors[bot]2021-03-125-7/+7
|\ \ | |/ |/| | | | | | | | | | | 7980: Fix remaining references to `cargo xtask codegen` r=matklad a=Veykril Co-authored-by: Lukas Wirth <[email protected]>
| * Fix remaining references to `cargo xtask codegen`Lukas Wirth2021-03-125-7/+7
|/
* Merge #7978bors[bot]2021-03-1213-103/+90
|\ | | | | | | | | | | | | | | | | 7978: Unify naming r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * Unify namingAleksey Kladov2021-03-1213-103/+90
|/
* Merge #7974bors[bot]2021-03-1217-166/+183
|\ | | | | | | | | | | | | | | | | 7974: use references in CompletionItem's builder r=matklad a=yonip23 @matklad This is a follow up to [this pr](https://github.com/rust-analyzer/rust-analyzer/pull/7973) Co-authored-by: yonip23 <[email protected]>
| * use references in CompletionItem's builderyonip232021-03-1117-166/+183
|/
* Merge #7972bors[bot]2021-03-111-3/+30
|\ | | | | | | | | | | | | | | 7972: fix: add semicolon after type ascription r=matklad a=conradludgate Fixes #7971 Co-authored-by: Conrad Ludgate <[email protected]>
| * fix: add semicolon after type ascriptionConrad Ludgate2021-03-111-3/+30
|/
* Merge #7969bors[bot]2021-03-101-7/+47
|\ | | | | | | | | | | | | | | | | 7969: Return original text range in PrepareRename responses when inside macro r=Veykril a=Veykril bors r+ Issue found in #7968 Co-authored-by: Lukas Wirth <[email protected]>
| * Return original text range in PrepareRename responses when inside macroLukas Wirth2021-03-101-7/+47
|/
* Merge #7967bors[bot]2021-03-104-80/+66
|\ | | | | | | | | | | | | | | 7967: Use expect-test for builtin macro/derive tests r=jonas-schievink a=jonas-schievink bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * Use expect-test for builtin macro/derive testsJonas Schievink2021-03-104-80/+66
|/
* Merge #7965bors[bot]2021-03-102-9/+9
|\ | | | | | | | | | | | | | | 7965: cargo update and lexer r=kjeremy a=kjeremy Co-authored-by: kjeremy <[email protected]>
| * cargo update and lexerkjeremy2021-03-102-9/+9
| |
* | Merge #7964bors[bot]2021-03-105-2/+20
|\ \ | |/ |/| | | | | | | | | | | 7964: Implement builtin `cfg!` macro r=jonas-schievink a=jonas-schievink bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * Implement builtin `cfg!` macroJonas Schievink2021-03-105-2/+20
|/
* Merge #7961bors[bot]2021-03-101-0/+9
|\ | | | | | | | | | | | | | | | | | | 7961: add user docs for ssr assist r=JoshMcguigan a=JoshMcguigan @matklad This is a small follow up on #7874, adding user docs for the SSR assist functionality. Since most other assists aren't handled this way I wasn't sure exactly how we wanted to document this, so feel free to suggest alternatives. Co-authored-by: Josh Mcguigan <[email protected]>
| * add user docs for ssr assistJosh Mcguigan2021-03-101-0/+9
| |
* | Merge #7959bors[bot]2021-03-102-5/+40
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7959: Prefer names from outer DefMap over extern prelude r=jonas-schievink a=jonas-schievink Fixes https://github.com/rust-analyzer/rust-analyzer/issues/7919 Just one more special case, how bad could it be. bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | Prefer names from outer DefMap over extern preludeJonas Schievink2021-03-102-5/+40
|/ /
* | Merge #7958bors[bot]2021-03-104-2/+15
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 7958: Avoid double text edits when renaming mod declaration r=matklad a=Veykril Closes https://github.com/rust-analyzer/rust-analyzer/issues/7916 See https://github.com/microsoft/vscode-languageserver-node/issues/752 for context Co-authored-by: Lukas Wirth <[email protected]>
| * | Avoid double text edits when renaming mod declarationLukas Wirth2021-03-104-2/+15
| |/
* | Merge #7874bors[bot]2021-03-104-1/+300
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | 7874: add apply ssr assist r=JoshMcguigan a=JoshMcguigan This PR adds an `Apply SSR` assist which was briefly mentioned in #3186. It allows writing an ssr rule as a comment, and then applying that SSR via an assist. This workflow is much nicer than the default available via `coc-rust-analyzer` when iterating to find the proper replacement. As currently implemented, this requires the ssr rule is written as a single line in the comment, and it doesn't require any kind of prefix. Anything which properly parses as a ssr rule will enable the assist. The benefit of requiring the ssr rule be on a single line is it allows for a workflow where the user has several rules written one after the other, possibly to be triggered in order, without having to try to parse multiple lines of text and determine where one rule ends and the next begins. The benefit of not requiring a prefix is less typing :laughing: - plus, I think the chance of something accidentally parsing as an ssr rule is minimal. I think a reasonable extension of this would be to allow either any ssr rule that fits on a single line, or any comment block which in its entirety makes up a single ssr rule (parsing a comment block containing multiple ssr rules and running them all would break the use case that currently works where a user writes multiple ssr rules then runs them each one by one in arbitrary order). I've marked this as a draft because for some reason I am strugging to make the unit tests pass. It does work when I compile rust-analyzer and test it in my editor though, so I'm not sure what is going on. Co-authored-by: Josh Mcguigan <[email protected]>
| * add apply ssr assistJosh Mcguigan2021-03-104-1/+300
|/
* Merge #7957bors[bot]2021-03-102-20/+12
|\ | | | | | | | | | | | | | | | | | | | | | | | | 7957: Fix labels for single import assists r=SomeoneToIgnore a=SomeoneToIgnore Before: ![image](https://user-images.githubusercontent.com/2690773/110609185-a26b8e00-8195-11eb-87be-d21b75817c22.png) After: ![image](https://user-images.githubusercontent.com/2690773/110609198-a5667e80-8195-11eb-8c58-9ae19ba71905.png) Co-authored-by: Kirill Bulatov <[email protected]>
| * Fix labels for single import assistsKirill Bulatov2021-03-102-20/+12
|/
* Merge #7955bors[bot]2021-03-101-14/+1
|\ | | | | | | | | | | | | | | 7955: Stop fetching ItemTrees for no reason r=jonas-schievink a=jonas-schievink bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * Stop fetching ItemTrees for no reasonJonas Schievink2021-03-101-14/+1
|/
* Merge #6822bors[bot]2021-03-094-3/+173
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6822: Read version of rustc that compiled proc macro r=edwin0cheng a=jsomedon Signed-off-by: Jay Somedon <[email protected]> This PR is to fix #6174. I basically * added two methods, `read_version` and `read_section`(used by `read_version`) * two new crates `snap` and `object` to be used by those two methods I just noticed that some part of code were auto-reformatted by rust-analyzer on file save. Does it matter? Co-authored-by: Jay Somedon <[email protected]> Co-authored-by: Edwin Cheng <[email protected]>
| * use doc-commentsEdwin Cheng2021-03-091-21/+22
| |
| * Print warning if proc-macro built by old rustcEdwin Cheng2021-03-042-73/+148
| |
| * Revise error message regarding metadata versionJay Somedon2021-03-041-10/+6
| | | | | | | | Co-authored-by: LaurenÈ›iu Nicola <[email protected]>
| * Update condition check code styleJay Somedon2021-03-041-1/+1
| | | | | | Co-authored-by: Jonas Schievink <[email protected]>
| * Update commentJay Somedon2021-03-041-1/+1
| | | | | | Co-authored-by: Jonas Schievink <[email protected]>
| * Fix multiple issues from code reviewJay Somedon2021-03-043-34/+44
| | | | | | | | | | | | | | | | * check metadata version * use memmap * use Result instead of unwrap with Jay Somedon <[email protected]>
| * Configure object crate's featureJay Somedon2021-03-041-1/+1
| | | | | | | | Signed-off-by: Jay Somedon <[email protected]>
| * Read version of rustc that compiled proc macroJay Somedon2021-03-043-12/+100
| | | | | | | | With Jay Somedon <[email protected]>
* | Merge #7949bors[bot]2021-03-0910-10/+12
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | 7949: Compilation speed r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | Compilation speedAleksey Kladov2021-03-0910-10/+12
|/ /
* | Merge #7948bors[bot]2021-03-0911-100/+61
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 7948: Delete `ContainerId` r=jonas-schievink a=jonas-schievink Since block expressions containing items now have a `ModuleId`, there's no need to also treat `DefWithBodyId` as a potential item container. Since https://github.com/rust-analyzer/rust-analyzer/pull/7878, only the `ModuleId` variant of `ContainerId` was ever created, so just delete the thing and use `ModuleId` everywhere. bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | Delete `ContainerId`Jonas Schievink2021-03-0911-100/+61
|/ /
* | Merge #7878bors[bot]2021-03-0915-229/+111
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7878: Remove `item_scope` field from `Body` r=jonas-schievink a=jonas-schievink Closes https://github.com/rust-analyzer/rust-analyzer/issues/7632 Instead of storing an `ItemScope` filled with inner items, we store the list of `BlockId`s for all block expressions that are part of a `Body`. Code can then query the `block_def_map` for those. bors r+ Co-authored-by: Jonas Schievink <[email protected]> Co-authored-by: Jonas Schievink <[email protected]>
| * | Stop using `ContainerId` in `AssocContainerId`Jonas Schievink2021-03-097-12/+12
| | |
| * | Check ancestor maps when computing traits in scopeJonas Schievink2021-03-092-0/+43
| | |
| * | Remove `item_scope` field from `Body`Jonas Schievink2021-03-093-175/+6
| | |