rust-analyzer/crates
bors[bot] 848aa56df5
Merge #4397
4397: Textmate cooperation r=matklad a=georgewfraser

This PR tweaks the fallback TextMate scopes to make them more consistent with the existing grammar and other languages, and edits the builtin TextMate grammar to align with semantic coloring. Before is on the left, after is on the right:

<img width="855" alt="Screen Shot 2020-05-10 at 1 45 51 PM" src="https://user-images.githubusercontent.com/1369240/81512320-a8be7e80-92d4-11ea-8940-2c03f6769015.png">

**Use keyword.other for regular keywords instead of keyword**. This is a really peculiar quirk of TextMate conventions, but virtually *all* TextMate grammars use `keyword.other` (colored blue in VSCode Dark+) for regular keywords and `keyword.control` (colored purple in VSCode Dark+) for control keywords. The TextMate scope `keyword` is colored like control keywords, not regular keywords. It may seem strange that the `keyword` scope is not the right fallback for the `keyword` semantic token, but TextMate has a long and weird history. Note how keywords change from purple back to blue (what they were before semantic coloring was added):

**(1) Use punctuation.section.embedded for format specifiers**. This aligns with how Typescript colors formatting directives:

<img width="238" alt="Screen Shot 2020-05-09 at 10 54 01 AM" src="https://user-images.githubusercontent.com/1369240/81481258-93b5f280-91e3-11ea-99c2-c6d258c5bcad.png">

**(2) Consistently use `entity.name.type.*` scopes for type names**. Avoid using `entity.name.*` which gets colored like a keyword.

**(3) Use Property instead of Member for fields**. Property and Member are very similar, but if you look at the TextMate fallback scopes, it's clear that Member is intended for function-like-things (methods?) and Property is intended for variable-like-things.

**(4) Color `for` as a regular keyword when it's part of `impl Trait for Struct`**. 

**(5) Use `variable.other.constant` for constants instead of `entity.name.constant`**. In the latest VSCode insiders, variable.other.constant has a subtly different color that differentiates constants from ordinary variables. It looks close to the green of types but it's not the same---it's a new color recently added to take advantage of semantic coloring.

I also made some minor changes that make the TextMate scopes better match the semantic scopes. The effect of this for the user is you observe less of a change when semantic coloring "activates". You can see the changes I made relative to the built-in TextMate grammar here:

a91d15c80c..97428b6d52 (diff-6966c729b862f79f79bf7258eb3e0885)


Co-authored-by: George Fraser <george@fivetran.com>
2020-05-11 17:33:38 +00:00
..
ra_arena Extract messy tree handling out of profiling code 2020-04-25 21:22:40 +02:00
ra_assists Merge #4406 #4410 #4411 #4417 2020-05-10 17:37:07 +00:00
ra_cfg Move feature desugaring to the right abstraction layer 2020-05-08 02:56:53 +02:00
ra_db Add fixture doc comment 2020-05-06 18:09:28 +02:00
ra_flycheck Merge #4406 #4410 #4411 #4417 2020-05-10 17:37:07 +00:00
ra_fmt Introduce EffectExpr 2020-05-02 11:21:39 +02:00
ra_hir Merge #4421 2020-05-11 12:21:08 +00:00
ra_hir_def Highlight mutable statics as mutable 2020-05-10 16:25:51 +01:00
ra_hir_expand Merge #4234 2020-05-02 10:30:49 +00:00
ra_hir_ty Merge #4394 #4414 2020-05-10 17:47:27 +00:00
ra_ide Merge #4397 2020-05-11 17:33:38 +00:00
ra_ide_db New definition_visibility method 2020-05-11 14:28:14 +03:00
ra_mbe Rename ImplItem to AssocItem 2020-05-05 23:56:10 +08:00
ra_parser Fix parsing of blocks without { 2020-05-02 14:35:17 +02:00
ra_proc_macro proc_macro: add ability to log to stderr and view output in vscode 2020-04-23 01:57:02 +03:00
ra_proc_macro_srv Remove dbg 2020-05-10 06:39:36 +08:00
ra_prof Simplify profiler impl (bubble up Option and shorten code 2020-04-26 00:55:49 +03:00
ra_project_model Merge #4406 #4410 #4411 #4417 2020-05-10 17:37:07 +00:00
ra_syntax Merge #4396 2020-05-10 18:01:20 +00:00
ra_text_edit Simplify proto conversion 2020-05-10 19:01:26 +02:00
ra_toolchain Simplify match 2020-05-09 22:20:11 +03:00
ra_tt Improve tt::Subtree debug print 2020-04-10 00:17:32 +08:00
rust-analyzer Merge #4397 2020-05-11 17:33:38 +00:00
stdx Move snake case method to heck 2020-05-03 21:35:21 +03:00
test_utils unindent -> dedent 2020-05-09 14:48:43 +02:00