Commit Graph

3889 Commits

Author SHA1 Message Date
Pascal Hertleif
1e6ba19015 Make rainbows optional 2019-05-27 11:44:46 +02:00
Pascal Hertleif
4ac338b608
rename stray id field 2019-05-27 11:26:35 +02:00
Pascal Hertleif
5abcca516d
make it build again 2019-05-27 11:26:35 +02:00
Pascal Hertleif
2b200f6e1a
Disable broken struct field rainbowing 2019-05-27 11:26:35 +02:00
Pascal Hertleif
43d5a49653
More clever highlighting, incl draft for structs 2019-05-27 11:26:35 +02:00
Pascal Hertleif
ed89b0638b
Hash based on binding name and shadow counter 2019-05-27 11:26:35 +02:00
Pascal Hertleif
5bf3e949e8
Semantic highlighting spike
Very simple approach: For each identifier, set the hash of the range
where it's defined as its 'id' and use it in the VSCode extension to
generate unique colors.

Thus, the generated colors are per-file. They are also quite fragile,
and I'm not entirely sure why. Looks like we need to make sure the
same ranges aren't overwritten by a later request?
2019-05-27 11:26:33 +02:00
bors[bot]
4b48cff022 Merge #1333
1333: add profile calls to real-time requests r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-05-27 08:48:50 +00:00
Aleksey Kladov
ce040aa907 add profile calls to real-time requests 2019-05-27 11:48:23 +03:00
bors[bot]
bdd779aa44 Merge #1277
1277: Improve macro item resolution r=matklad a=edwin0cheng

~This PR add a new namespace `Macros` in `per_ns.rs` to allow following use case:~
This PR improve macro item resolution to allow following use case:

```rust
//- /main.rs     
use foo::bar;
bar!();

//- /lib.rs  (crate foo)
#[macro_export]
macro_rules! bar{
() => {
    struct Foo { field: u32 } 
}
```


Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2019-05-27 07:38:21 +00:00
Edwin Cheng
6d68d60d32 Formatting 2019-05-27 15:37:22 +08:00
bors[bot]
ce694ae118 Merge #1328
1328: Change TokenSource to iteration based r=matklad a=edwin0cheng

This PR change the `TokenSource` trait from random access to be an iteration based trait:
```rust

/// `TokenSource` abstracts the source of the tokens parser operates one.
///
/// Hopefully this will allow us to treat text and token trees in the same way!
pub trait TokenSource {
    fn current(&self) -> Token;

    /// Lookahead n token
    fn lookahead_nth(&self, n: usize) -> Token;

    /// bump cursor to next token
    fn bump(&mut self);

    /// Is the current token a specified keyword?
    fn is_keyword(&self, kw: &str) -> bool;
}

/// `TokenCursor` abstracts the cursor of `TokenSource` operates one.
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub struct Token {
    /// What is the current token?
    pub kind: SyntaxKind,

    /// Is the current token joined to the next one (`> >` vs `>>`).
    pub is_jointed_to_next: bool,
}
```

Note that the refactoring based on this new trait will be separated to incoming PRs

Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2019-05-27 07:28:13 +00:00
Edwin Cheng
d6e6a98c03 Add Test for new item resolution 2019-05-26 20:11:18 +08:00
Edwin Cheng
b72074a715 Use ItemOrMacro in item resolution 2019-05-26 20:10:56 +08:00
Edwin Cheng
c0dc14ba5a Add Either dep 2019-05-26 20:10:05 +08:00
Edwin Cheng
d5fbce4458 Put back unexpaned_macros after resolve 2019-05-26 13:38:03 +08:00
bors[bot]
4f4e50db90 Merge #1330
1330: Add Vim and NeoVim setup section r=oblitum a=oblitum



Co-authored-by: Francisco Lopes <francisco@oblita.com>
2019-05-26 05:34:02 +00:00
Francisco Lopes
da28dccf62 Add Vim and NeoVim setup section 2019-05-25 18:55:59 -03:00
Edwin Cheng
90764fc54b Remove duplicated code 2019-05-26 02:41:00 +08:00
Edwin Cheng
816147c4b5 Simplify token_tree_to_xxx 2019-05-25 21:55:46 +08:00
Edwin Cheng
fcb1eef323 Change TokenSource to iteration based 2019-05-25 20:41:03 +08:00
bors[bot]
91bd783273 Merge #1327
1327: Colorize Rust code as HTML r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-05-25 10:48:47 +00:00
Aleksey Kladov
c6e905a79f Colorize Rust code as HTML 2019-05-25 13:42:34 +03:00
bors[bot]
9800699bab Merge #1318
1318: cargo update r=matklad a=kjeremy

Nothing interesting

Co-authored-by: kjeremy <kjeremy@gmail.com>
2019-05-23 23:06:16 +00:00
bors[bot]
8a9cc67421 Merge #1321
1321: Rustc r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-05-23 22:50:34 +00:00
Aleksey Kladov
0270b4bc57 reformat 2019-05-24 01:48:44 +03:00
Aleksey Kladov
53ae63835d ⬆️ rustc 2019-05-24 01:46:23 +03:00
kjeremy
60cdd95e17 cargo update 2019-05-23 15:15:35 -04:00
bors[bot]
de87fe293e Merge #1317
1317: profile highlighting r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-05-23 18:25:35 +00:00
Aleksey Kladov
f6d2c3f9d5 profile highlighting 2019-05-23 21:19:54 +03:00
bors[bot]
afb792acb7 Merge #1316
1316: Simplify code model r=matklad a=matklad

* remove references from types which are now id-based
* remove api/impl separation, as the impl is a tiny fraction of API anyway 

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-05-23 18:16:46 +00:00
Aleksey Kladov
ef3169a33a rename code_model_api -> code_model 2019-05-23 21:14:19 +03:00
Aleksey Kladov
0e57d58dd0 kill code_model_impl 2019-05-23 21:13:22 +03:00
Aleksey Kladov
ce82fbfc44 remove more references 2019-05-23 21:08:10 +03:00
Aleksey Kladov
bde9cab66e remove references 2019-05-23 21:01:31 +03:00
Aleksey Kladov
7f22f90503 kill krate_impl 2019-05-23 20:30:09 +03:00
Aleksey Kladov
dbd02546b9 fix signature 2019-05-23 20:25:55 +03:00
bors[bot]
1dc9adc6e2 Merge #1290
1290: Add Union to code_model r=matklad a=matklad

@flodiebold I am conflicted about two possible implementation approaches:

* we can add a separate `struct Union` to code model
* we can add `fn is_union(&self)` to existing `Struct`

This PR goes with the former approach, because it seems like Unions are sufficiently different in semantics to warrant a separate types. Which is in contrast to Syntax Tree, where both structs and unions share the same node kind, because their syntax is the same. 

What would be the right thing to do here?

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-05-23 17:23:17 +00:00
Aleksey Kladov
5d54aa6781 add union to code_model 2019-05-23 20:18:47 +03:00
bors[bot]
ef00b5af1c Merge #1312
1312: Introduce TokenBuffer r=matklad a=edwin0cheng

As discussed in Zulip, this PR Introduce `TokenBuffer` , a safe version of  `syn` crate `TokenBuffer` which support cursor based traversal of `tt::TokenTree`. This is the basis of incoming refactoring of `TokenSource` iterator based API.

This PR do the following things:

* Add TokenBuffer in `ra_tt` crate.
* Try to use this new API to refactor the `SubtreeSource` to prove it usage.




Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2019-05-23 14:31:26 +00:00
bors[bot]
eef24bddc9 Merge #1315
1315: Use Xenial image and fix find call r=matklad a=lnicola



Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2019-05-23 13:16:41 +00:00
Edwin Cheng
63b67134fd Use slice instead of Vec 2019-05-23 21:05:22 +08:00
Laurențiu Nicola
48077d0653 Use Xenial image and fix find call 2019-05-23 16:05:01 +03:00
bors[bot]
c290bb0749 Merge #1305
1305: Try to resolve name refs during highlighting r=matklad a=lnicola

Preview:

![image](https://user-images.githubusercontent.com/308347/58253075-43464a80-7d70-11e9-84cc-e81990f2d3eb.png)

This is probably not the cleanest implementation, but it's not clear to me what parts of `reference_definition` we don't want to run at this point. Also, is the `SourceAnalyzer` cheap enough to construct for each `NameRef`? Not like there's any alternative at this point, though.

Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2019-05-23 12:52:59 +00:00
Laurențiu Nicola
f1ec88cc56 Improve highlighting of name refs 2019-05-23 15:31:35 +03:00
bors[bot]
4466568525 Merge #1311
1311: Move NameRef classification logic out of reference_definition r=matklad a=lnicola



Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2019-05-23 09:39:22 +00:00
Laurențiu Nicola
444e52e519 Move NameRef classification logic out of reference_definition 2019-05-23 12:32:47 +03:00
bors[bot]
078c0e26c3 Merge #1313
1313: Update `gen_lsp_server` examples r=matklad a=dmoonfire

- updated the documentation with an example that has no errors with current compiler
- added two example code to test compilation and show in use
  - one example is the bare bones version in documentation
  - the other example is the same but with logging statements to show flow

Co-authored-by: Dylan Moonfire <dylan.moonfire@ryan.com>
2019-05-23 09:23:36 +00:00
Dylan Moonfire
cbd131acbe updated gen_lsp_server examples
- updated the documentation with an example that has no errors with current compiler
- added two example code to test compilation and show in use
2019-05-22 20:35:12 -05:00
Edwin Cheng
27ae626cfb Formatting 2019-05-23 09:31:36 +08:00