3075: Migrate u32::from(TextUnit) as usize to .to_usize() r=matklad a=Veetaha
@matklad I see 29 uses of `.to_usize()` cast, wouldn't it be reasonable to change `TextUnit(u32)` to `TextUnit(usize)` ? Or do you have reasons to stick with `u32` here?
Co-authored-by: Veetaha <gerzoh1@gmail.com>
3072: vscode: removed unnecessary awaits feature r=matklad a=Veetaha
Found a feature that when the user has no internet connection the whole extension is blocked by waiting for the user to dismiss the error message and for making a sanity-check dns resolution.
Co-authored-by: Veetaha <gerzoh1@gmail.com>
3071: Freshen docs for prebuilt binaries and raLspServer setting r=matklad a=Veetaha
Better documented breaking changes as per an incident in #2988
Follow up for #3053
Co-authored-by: Veetaha <gerzoh1@gmail.com>
3068: Do not import anything if first segment of the qualified path resolves r=matklad a=SomeoneToIgnore
Part of initial https://github.com/rust-analyzer/rust-analyzer/pull/3061, closing 2nd issue mentioned in the last comment there.
Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
3053: Feature: downloading lsp server from GitHub r=matklad a=Veetaha
This is currently very WIP, I may need to change this and that, add "download language server command", logging stuff (for future bug reports), etc., but it already works.
Also didn't test this on windows yet and mac (don't have the latter)
The quirks:
* Downloaded binary doesn't have executable permissions by default, that's why we ~~`chmod 111`~~ (**[UPD]** `chmod 755` as per @lnicola [suggestion](https://github.com/rust-analyzer/rust-analyzer/pull/3053#discussion_r376694456)) for it.
* To remove installed binary run `rm /${HOME}/.config/Code/User/globalStorage/matklad.rust-analyzer/ra_lsp_server-linux`, ~~note that `-f` flag is necessary, because of `111` permissions (I think this should be changed)~~ (**[UPD]** --force is no longer needed due to 755 permissions).
I also tried to keep things simple and not to use too many dependencies, all the ones added have 0 dependencies, (`ts-not-nil` is my personal npm package, that imitates `unwrap()` in TypeScript)
**[UPD]** I reduced throttle latency of progress indicator to 200ms for smoother UX
// TODO:
- [x] ~~Add `Rust Analyzer: Download latest language server` vscode command.~~ **[UPD]**: having reviewed the code and estimated available options I concluded that this feature requires too many code changes, I'd like to extract this into a separate PR after we merge this one.
- [x] Add some logging for future debugging
- [x] ~~Gracefully handle the case when language server is not available (e.g. no internet connection, user explicitly rejected the download, etc.)~~ **[UPD]** Decided to postpone better implementation of graceful degradation logic as per [conversation](https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0/topic/Deployment.20and.20installation/near/187758550).
Demo (**[UPD]** this is a bit outdated, but still mainly reflects the feature):
![ra-github-release-download-mvp](https://user-images.githubusercontent.com/36276403/74077961-4f248a80-4a2d-11ea-962f-27c650fd6c4c.gif)
Related issue: #2988#3007
Co-authored-by: Veetaha <gerzoh1@gmail.com>
Co-authored-by: Veetaha <veetaha2@gmail.com>
3069: Simplify Assists interface r=matklad a=matklad
Instead of building a physical tree structure, just tag related
assists with the same group
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
3066: Some README fixes/cleanups r=matklad a=flodiebold
Make capitalization more consistent and fix some typos.
Co-authored-by: Florian Diebold <flodiebold@gmail.com>