Commit graph

245 commits

Author SHA1 Message Date
Aleksey Kladov
0a8d085619 remove backtraces from Cancelled
Hopefully we won't need them for debugging. If we do need them, it
should be easy to add back.
2018-12-31 00:38:50 +03:00
bors[bot]
acc61cc284 Merge #375
375: Move renames into ra_analysis and rename the correct range r=DJMcNab a=DJMcNab

Fixes #230. Supersedes #235.

TODO: add some tests for this

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-30 20:43:58 +00:00
bors[bot]
f9b58454a4 Merge #378
378: migrate-to-tempdir r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-12-30 20:33:32 +00:00
Aleksey Kladov
f0edb93df2 ⬆️ tempdir 2018-12-30 23:33:04 +03:00
Aleksey Kladov
c2c10b9014 ⬆️ crossbeam
closes #189
2018-12-30 23:23:31 +03:00
DJMcNab
c402b007a3 Move renames into ra_analysis 2018-12-30 18:14:55 +00:00
Aleksey Kladov
0e90e0436a remove runtime dependency on tools 2018-12-30 15:28:54 +03:00
Aleksander Vognild Burkow
0cb270e75d Simplify failure bail code 2018-12-30 00:21:15 +01:00
Aleksander Vognild Burkow
ed47c93afe Install rustfmt in rustfmt test 2018-12-29 23:38:26 +01:00
Aleksander Vognild Burkow
09c20c8fcf Add better error message for Command failure 2018-12-29 23:38:26 +01:00
Aleksander Vognild Burkow
8b24f158f7 Add support for formatting entire document with rustfmt
Attempting to format a document when rustfmt isn't installed will result
in an error being returned to the frontend. An alternative
implementation would be returning zero replacements.
2018-12-29 21:57:46 +01:00
Aleksey Kladov
11122e29b7 completion for enum variants 2018-12-28 21:07:47 +03:00
bors[bot]
7a268b9b96 Merge #350
350: Super simple macro support r=matklad a=matklad

Super simple support for macros, mostly for figuring out how to fit them into the current architecture. Expansion is hard-coded and string based (mid-term, we should try to copy-paste macro-by-example expander from rustc). 

Ideally, we should handle

* highlighting inside the macro (done)
* extend selection inside the macro 
* completion inside the macro
* indexing structs, produced by the macro

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-12-28 16:17:19 +00:00
Aleksey Kladov
fd33c89207 switch to FileRange 2018-12-28 18:17:43 +03:00
dependabot[bot]
626badc30a
Bump serde from 1.0.82 to 1.0.83
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.82 to 1.0.83.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.82...v1.0.83)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-28 06:08:30 +00:00
dependabot[bot]
74f342648d
Bump languageserver-types from 0.53.0 to 0.53.1
Bumps [languageserver-types](https://github.com/gluon-lang/languageserver-types) from 0.53.0 to 0.53.1.
- [Release notes](https://github.com/gluon-lang/languageserver-types/releases)
- [Changelog](https://github.com/gluon-lang/languageserver-types/blob/master/release.toml)
- [Commits](https://github.com/gluon-lang/languageserver-types/compare/v0.53.0...v0.53.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-27 13:15:04 +00:00
bors[bot]
e422c2e2f4 Merge #325
325: implement translate_offset_with_edit r=matklad a=vemoo

- Implement `translate_offset_with_edit` to resolve #105 
- Add proptest impls for text, offsets and edits and use them in tests for `translate_offset_with_edit` and `LineIndex`
- Added benchmark for `translate_offset_with_edit`

Co-authored-by: Bernardo <berublan@gmail.com>
2018-12-27 12:19:19 +00:00
bors[bot]
1d6dcef5c5 Merge #332
332: Struct types r=matklad a=flodiebold

Infer types for struct fields, and add basic field completions. There's also some code for enums, but I focused on getting structs working.

There's still ways to go before this becomes useful: There's no autoderef (or even reference types) and no inference for `self`, for example.

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2018-12-27 10:08:34 +00:00
Aleksey Kladov
93996fecdc add cancelation module & cancelation backtraces 2018-12-27 13:03:32 +03:00
Aleksey Kladov
62c40b0e91 fix the test 2018-12-27 12:54:59 +03:00
Bernardo
e9c186e48a change to TextEdit to avoid allocation and sort
rename newline to step where applicable
2018-12-25 20:49:18 +01:00
Bernardo
6b2da4e547 use new translate_offset_with_edit for TryConvWith
doc comments
2018-12-25 20:06:49 +01:00
Bernardo
8c9df62c1c move translate_offset_with_edit to ra_editor 2018-12-25 19:59:02 +01:00
Bernardo
881c29192d initial newline translation working
todo:
cleanup, simplify
handle columns
2018-12-25 19:55:05 +01:00
Bernardo
d951979159 test translate_offset_with_edit against simple impl for single edits 2018-12-25 19:49:55 +01:00
Florian Diebold
e5a8089b08 Add . to trigger characters 2018-12-25 15:27:15 +01:00
Florian Diebold
ab0b63992b Implement basic completion for fields 2018-12-25 15:27:15 +01:00
Florian Diebold
4ff1618520 Do name resolution by namespace (types/values) 2018-12-25 15:16:42 +01:00
Aleksey Kladov
21293d0533 fix warning conversion 2018-12-25 02:07:30 +03:00
bors[bot]
b65ba8f1d6 Merge #326
326: resolved #324: remove unnecessary braces in use statement. r=matklad a=gfreezy

Add inspection for unnecessary braces in use statement

Co-authored-by: gfreezy <gfreezy@gmail.com>
2018-12-24 18:39:31 +00:00
gfreezy
29798c763c remove option from Diagnostic 2018-12-24 23:00:18 +08:00
bors[bot]
b052059f86 Merge #302
302: WIP: Support tracing lsp requests. r=DJMcNab a=DJMcNab

EDIT: We need to work out a better way to handle settings before this can be merged. Help wanted

TODO: Debug why decorations are sent even when highlightingOn is disabled
This makes the log volume so high its impossible to work with anyway.
(Continuation of #84 [#99 only disabled using it, not making sure we don't send it]).

These logs can be used in https://microsoft.github.io/language-server-protocol/inspector/

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-24 13:47:27 +00:00
gfreezy
346638c809 add serverity to vscode diagnostics 2018-12-24 00:39:33 +08:00
DJMcNab
a0e8538129 Improve comment 2018-12-23 11:10:12 +00:00
Aleksey Kladov
5c7e8f47a8 less chatty logging 2018-12-22 15:09:08 +03:00
Aleksey Kladov
90f20f8c53 less verbose debug 2018-12-22 12:38:24 +03:00
Aleksey Kladov
2639997973 log times 2018-12-22 11:53:20 +03:00
Aleksey Kladov
498e3a6846 binding icon 2018-12-22 02:24:59 +03:00
Aleksey Kladov
97cb463c9b moar icons 2018-12-22 02:20:14 +03:00
Aleksey Kladov
238b52358d more icons 2018-12-22 02:03:18 +03:00
Aleksey Kladov
f1f2804c71 move completion items to conv 2018-12-22 01:59:32 +03:00
Aleksey Kladov
2351308d92 remove explicit serde_derive 2018-12-21 22:39:59 +03:00
DJMcNab
380733d6d0 Undo the previous mistaken change and make publish_decorations optional
See https://github.com/Microsoft/language-server-protocol/issues/567
for motivations to not require `InitializationOptions`

TODO: Check if there are any other protocol extensions
which should be disabled if not implemented on the client
2018-12-21 17:00:31 +00:00
Aleksey Kladov
4092b8d0b5 make compleion item details private 2018-12-21 15:19:46 +03:00
Aleksey Kladov
b5b44659a4 edits use source-root API 2018-12-21 12:18:14 +03:00
Aleksey Kladov
0063f03e86 hide atom edits a bit 2018-12-21 11:52:32 +03:00
Aleksey Kladov
aa628f4749 fix SourceFileEdit name 2018-12-21 11:15:23 +03:00
Aleksey Kladov
b7d8bf1262 tweak canceled message 2018-12-21 11:08:43 +03:00
Aleksey Kladov
23b040962f fold curly blocks 2018-12-20 22:43:06 +03:00
DJMcNab
70e5fb98a0 Disable highlighting if disabled
This isn't working properly because we don't dynamically disable or enable it

TODO: work out why highlighting can be enabled mid session.

TODO: Improve settings handling
2018-12-20 12:16:44 +00:00
bors[bot]
d8c6b8d999 Merge #297
297: Use ContentModified error code r=matklad a=matklad

25679c2e4b

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-12-20 09:23:27 +00:00
Aleksey Kladov
b2f2621c17 Use ContentModified error code
25679c2e4b
2018-12-20 12:20:28 +03:00
Aleksey Kladov
2fe41574a1 fix tests 2018-12-20 12:15:38 +03:00
Aleksey Kladov
7b6bafa631 fix syc 2018-12-20 12:15:38 +03:00
Aleksey Kladov
a5ef8ad05b swtich lsp server to vfs 2018-12-20 12:15:38 +03:00
Aleksey Kladov
6a755ed83a remove more imports 2018-12-20 12:15:38 +03:00
Aleksey Kladov
a422d480a1 implement vfs events handling 2018-12-20 12:15:38 +03:00
Aleksey Kladov
2ae05a6163 vfs crate scaffold 2018-12-20 12:15:23 +03:00
Aleksey Kladov
7509901fa0 wip 2018-12-20 12:15:23 +03:00
Jeremy A. Kolb
93cf39d968 Bump languageserver-types to 0.53.0 to support LSP 3.14.0
See: https://microsoft.github.io/language-server-protocol/specification#version_3_14_0
2018-12-19 17:32:44 -05:00
Aleksey Kladov
193992fd14 move thread worker to a separate crate 2018-12-18 12:52:17 +03:00
Andrew Chin
8b1e667077 By default, log only to stderr, and not to disk.
This fixes a common problem when running under VS Code, the user
doesn't have permissions to create a `log` directory in the CWD.

The old behavior can be re-enabled by setting RA_INTERNAL_MODE=1
2018-12-17 17:22:30 -05:00
Bernardo
0527e3b283 rename Edit to TextEdit and AtomEdit to AtomTextEdit 2018-12-11 19:07:17 +01:00
Bernardo
7344d28768 extract AtomEdit and Edit into new ra_text_edit crate 2018-12-10 22:09:12 +01:00
Aleksey Kladov
b9c17a6001 Answer canceled requests 2018-12-09 14:43:02 +03:00
Aleksey Kladov
961cae7e53 thread info about dep names 2018-12-09 13:33:16 +03:00
Aleksey Kladov
9b1356464a propagate deps to CrateGraph 2018-12-09 13:33:16 +03:00
Aleksey Kladov
32c067f8c9 track deps in project model 2018-12-09 13:33:16 +03:00
Aleksey Kladov
13100da7a2 switch threadpool back from rayon to threadpool
rayon does not replenish the pool when the thread panics, but we must
be reselient to bugs.
2018-12-09 13:13:36 +03:00
Aleksey Kladov
7fd6a41127 Refactor symbol resolve API
Introduce ReferenceResolution to avoid nesting to many non-nominal
types.
2018-12-08 21:18:29 +03:00
Aleksey Kladov
4cbc902fcc grand module rename 2018-12-08 19:30:35 +03:00
Aleksey Kladov
e096867ada reformat 2018-12-08 19:28:24 +03:00
DJMcNab
f88e0700e6 Add a better text for hover and stop duplicating work done in approximatelly_resolve_symbol 2018-12-08 19:28:10 +03:00
DJMcNab
3d3026dc60 Fix the range of a hover request to be more in line with prior art 2018-12-08 19:28:10 +03:00
Florian Diebold
29793e7de9 Add test for code actions 2018-12-06 21:32:15 +01:00
Florian Diebold
1dfd06fc8a Use json comparison code from cargo for heavy tests 2018-12-06 21:32:15 +01:00
Aleksey Kladov
f6e8b376d1 modernize more 2018-12-06 21:03:39 +03:00
Aleksey Kladov
e477b87455 drop extern crates 2018-12-06 20:50:16 +03:00
Florian Diebold
d0811c4066 Fix diagnostic fixes showing up everywhere
The LSP code action request always returned the fixes for all diagnostics
anywhere in the file, because of a shadowed variable.
2018-12-02 20:58:16 +01:00
Aleksey Kladov
bcc2342be6 Put derive back
It is used in this file
2018-12-02 12:27:30 +03:00
Jeremy A. Kolb
ab7843c2d1 Put map back 2018-11-30 09:39:30 -05:00
Jeremy A. Kolb
f32dc71351 Clippy lints 2018-11-29 15:30:49 -05:00
Aleksey Kladov
11168c464c move db basics to ra_db
This should allow to move hir to a separate crate
2018-11-28 03:25:20 +03:00
Aleksey Kladov
6b1f30ade9 hack around nested libraries 2018-11-27 00:12:43 +03:00
Aleksey Kladov
e8c50f0915 Use : as a trigger character for completion
Note that VSCode asks for completion after *first* `:` as well:

    use crate:

we use hacks to protect against that, and to give completions only
after the second `:`.
2018-11-21 19:06:48 +03:00
Adolfo Ochagavía
bccbee5ba3 Rename col to col_utf16 2018-11-16 12:15:50 +01:00
Adolfo Ochagavía
136d1864bc Support UTF-16 chars in LineIndex 2018-11-16 12:15:50 +01:00
Aleksey Kladov
8475c962a0 Fix the test 2018-11-08 18:54:19 +03:00
Aleksey Kladov
00e80b24e3 workspace-symbols function for Emacs 2018-11-08 18:43:02 +03:00
Aleksey Kladov
c69ff08dc9 eglot worksapce symbol 2018-11-08 17:40:24 +03:00
Aleksey Kladov
f8b36bbc3b Rename File -> SourceFileNode 2018-11-07 18:42:36 +03:00
Jeremy A. Kolb
2119fe2143 Cargo update 2018-11-07 18:42:09 +03:00
Jeremy A. Kolb
c29f158c20 Rustfmt to pass CI 2018-11-07 18:24:55 +03:00
Jeremy A. Kolb
a83ed374d0 Remove unused variable 2018-11-07 18:24:55 +03:00
Jeremy A. Kolb
8ccd26adf3 Show documentation for hover requests 2018-11-07 18:24:55 +03:00
Jeremy A. Kolb
5a9d471f98 Use closing paren as a trigger character
This seems counter-intuitive based on the concept of "trigger character"
but it provides a better function signature experience.
2018-11-05 17:13:56 -05:00
Aleksey Kladov
0192c116f7 Use FilePosition everywhere 2018-11-05 14:57:41 +03:00
Aleksey Kladov
8b132354bb don't send backtraces for canceled requests 2018-11-05 14:22:39 +03:00
Aleksey Kladov
6bbcfca7ae Fully add inline modules to module tree 2018-11-05 14:10:20 +03:00
Aleksey Kladov
f29b0172fb Use Default everywhere 2018-11-04 14:09:21 +03:00
Aleksey Kladov
6be50f7d5d Reformat all 2018-10-31 23:41:43 +03:00
Jeremy A. Kolb
05eb489ec5 Useful comments from function signatures 2018-10-31 15:23:20 -04:00
Aleksey Kladov
64ce895ef0 extract fixture parsing 2018-10-31 21:37:40 +03:00
Aleksey Kladov
e0eb33605a Encapsulate CrateGraph a bit 2018-10-25 17:40:24 +03:00
Aleksey Kladov
772acb53f2 use correct file when resolving callables 2018-10-25 16:25:40 +03:00
Aleksey Kladov
56df0fc83c Improve logging 2018-10-25 16:25:40 +03:00
Aleksey Kladov
ee4d904cfb Store all the data in the Salsa Database 2018-10-25 16:25:40 +03:00
Aleksey Kladov
bca5a41dff Fix the test 2018-10-25 13:47:31 +03:00
Aleksey Kladov
48fa1f8ba0 More informative lable for check runnable 2018-10-25 11:01:37 +03:00
Aleksey Kladov
6660101554 specify package when running cargo check 2018-10-25 10:56:12 +03:00
Aleksey Kladov
0e359af291 Always add cargo check as a runnable 2018-10-25 10:29:39 +03:00
Jeremy A. Kolb
0ee37099b5 Cargo Update run
Bump relative-path to 0.4.0
Failure 0.1.3 to fix leak with downcast

Updated everything else too
2018-10-23 09:46:00 -04:00
bors[bot]
0043d7e9c7 Merge #151
151: Add LspError to explicity return errors from LSP handlers r=matklad a=kjeremy

Fixes #145

Co-authored-by: Jeremy A. Kolb <jkolb@ara.com>
2018-10-23 12:28:57 +00:00
bors[bot]
fd7f6beedc Merge #152
152: Fix typo r=matklad a=kjeremy



Co-authored-by: Jeremy A. Kolb <jkolb@ara.com>
2018-10-22 22:00:42 +00:00
bors[bot]
27694abd94 Merge #138
138: Fix some clippy lints r=matklad a=alanhdu

I went ahead and fixed all the clippy lints (there were a couple I thought would be better unfixed and added `cfg` statements to allow them) and also re-enabled clippy and rustfmt in CI.

They were disabled with `no time to explain, disable clippy checks`, so hopefully this won't go against whatever the reason at the time was 😆.

One question about the CI though: right now, it's an allowed failure that runs against the latest nightly each time. Would it be better to pin it to a specific nightly (or use the `beta` versions) to lower the churn?

Co-authored-by: Alan Du <alanhdu@gmail.com>
2018-10-22 21:14:38 +00:00
Jeremy A. Kolb
652afa17ad Fix typo 2018-10-22 13:55:17 -04:00
Jeremy A. Kolb
6453b29cb5 Add LspError to explicity return errors from LSP handlers
Fixes #145
2018-10-22 13:49:27 -04:00
Aleksey Kladov
0102a01f76 Remove job handle 2018-10-20 22:59:54 +03:00
Aleksey Kladov
6e88aaef5d use pythonic import order
use std
// blank line
use extern crates
// blank line
use crate::{}
2018-10-20 22:38:52 +03:00
Aleksey Kladov
9fb41716de make more things cancelable 2018-10-20 22:09:12 +03:00
Aleksey Kladov
998f2ae762 remove job tokens 2018-10-20 22:02:41 +03:00
Aleksey Kladov
c4b0d3cd56 make parent module cancelable 2018-10-20 21:52:49 +03:00
Alan Du
0857c22f26 Revert "clippy: Fix new_ret_no_self"
This reverts commit 2ae9dfa812.
2018-10-20 12:29:25 -04:00
Jeremy A. Kolb
9f9e41885c LSP: Add support for prepareRename 2018-10-19 15:25:10 -04:00
Jeremy A. Kolb
2844c8fdfa Handle renaming of local variables 2018-10-18 17:56:22 -04:00
Jeremy A. Kolb
3746689e9d Implement Find All References for local variables 2018-10-18 13:40:12 -04:00
Alan Du
6dd3fa6a94 clippy: cast_lossless 2018-10-17 19:42:23 -04:00
Alan Du
a5da770ec6 Fix function calls 2018-10-17 19:42:23 -04:00
Alan Du
fc8024de51 clippy: type_complexity 2018-10-17 19:42:23 -04:00
Alan Du
2ae9dfa812 clippy: Fix new_ret_no_self 2018-10-17 19:42:23 -04:00
Alan Du
d493a4476c clippy: Use if lets and remove redundant returns 2018-10-17 19:42:23 -04:00
Alan Du
5db663d61f Clippy lint: single-character string constant 2018-10-17 19:42:23 -04:00
Jeremy A. Kolb
61f3a438d3 Cargo Format
Run `cargo fmt` and ignore generated files
2018-10-16 09:41:10 -04:00
Aleksey Kladov
85ff328d31 remove clones 2018-10-15 22:36:08 +03:00
Aleksey Kladov
bb298158eb migrate analysis and server to 2018 2018-10-15 20:15:53 +03:00
Jeremy A. Kolb
f8a2b53304 Language Server: textDocument/signatureHelp
Implements a pretty barebones function signature help mechanism in
the language server.

Users can use `Analysis::resolve_callback()` to get basic information
about a call site.

Fixes #102
2018-10-11 16:40:46 -04:00
Muhammad Mominul Huque
dc2b30e9b6
Replace HashMap, HashSet with FxHashMap and FxHashSet 2018-10-12 00:07:44 +06:00
Aleksey Kladov
2b956fd3a8 Add on-enter handler
Now, typing doc comments is much more pleasant
2018-10-09 19:52:06 +03:00
Aleksey Kladov
239213a3db Prepare gen_lsp_server for publishing 2018-10-09 12:55:23 +03:00
Aleksey Kladov
804e29402a fix code actions 2018-09-29 21:59:34 +03:00
Jeremy A. Kolb
ff0a706a30 Split folding ranges into editor and lsp parts 2018-09-24 09:52:33 -04:00
Jeremy A. Kolb
bd2b2f1b48 Implement folding ranges 2018-09-23 11:19:36 -04:00
Jeremy A. Kolb
e293a16d6b Support LSP 3.13 2018-09-23 11:10:57 -04:00
Jeremy A. Kolb
8845b50438 libsyntax2 -> rust-analyzer 2018-09-18 17:40:33 -04:00
Aleksey Kladov
b5021411a8 rename all things 2018-09-16 13:07:39 +03:00