aboutsummaryrefslogtreecommitdiff
path: root/editors
Commit message (Collapse)AuthorAgeFilesLines
* Merge #2061bors[bot]2019-12-296-12/+358
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2061: Theme loading and "editor.tokenColorCustomizations" support. r=matklad a=seivan Fixes: [Issue#1294](https://github.com/rust-analyzer/rust-analyzer/issues/1294#issuecomment-497450325) TODO: - [x] Load themes - [x] Load existing `ralsp`-prefixed overrides from `"workbench.colorCustomizations"`. - [x] Load overrides from `"editor.tokenColorCustomizations.textMateRules"`. - [x] Use RA tags to load `vscode.DecorationRenderOptions` (colors) from theme & overrides. - [x] Map RA tags to common TextMate scopes before loading colors. - [x] Add default scope mappings in extension. - [x] Cache mappings between settings updates. - [x] Add scope mapping configuration manifest in `package.json` - [x] Load configurable scope mappings from settings. - [x] Load JSON Scheme for text mate scope rules in settings. - [x] Update [Readme](https://github.com/seivan/rust-analyzer/blob/feature/themes/docs/user/README.md#settings). Borrowed the theme loading (`scopes.ts`) from `Tree Sitter` with some modifications to reading `"editor.tokenColorCustomizations"` for merging with loaded themes and had to remove the async portions to be able to load it from settings updates. ~Just a PoC and an idea I toyed around with a lot of room for improvement.~ For starters, certain keywords aren't part of the standard TextMate grammar, so it still reads colors from the `ralsp` prefixed values in `"workbench.colorCustomizations"`. But I think there's more value making the extension work with existing themes by maping some of the decoration tags to existing key or keys. <img width="453" alt="Screenshot 2019-11-09 at 17 43 18" src="https://user-images.githubusercontent.com/55424/68531968-71b4e380-0318-11ea-924e-cdbb8d5eae06.png"> <img width="780" alt="Screenshot 2019-11-09 at 17 41 45" src="https://user-images.githubusercontent.com/55424/68531950-4b8f4380-0318-11ea-8f85-24a84efaf23b.png"> <img width="468" alt="Screenshot 2019-11-09 at 17 40 29" src="https://user-images.githubusercontent.com/55424/68531952-51852480-0318-11ea-800a-6ae9215f5368.png"> These will merge with the default ones coming with the extension, so you don't have to implement all of them and works well with overrides defined in settings. ```jsonc "editor.tokenColorCustomizations": { "textMateRules": [ { "scope": "keyword", "settings": { "fontStyle": "bold", } }, ] }, ``` Edit: The idea is to work with 90% of the themes out there by working within existing scopes available that are generally styled. It's not to say I want to erase the custom Rust scopes - those should still remain and eventually worked into a custom grammar bundle for Rust specific themes that target those, I just want to make it work with generic themes offered on the market place for now. A custom grammar bundle and themes for Rust specific scopes is out of... scope for this PR. We'll make another round to tackle those issues. Current fallbacks implemented ```typescript [ 'comment', [ 'comment', 'comment.block', 'comment.line', 'comment.block.documentation' ] ], ['string', ['string']], ['keyword', ['keyword']], ['keyword.control', ['keyword.control', 'keyword', 'keyword.other']], [ 'keyword.unsafe', ['storage.modifier', 'keyword.other', 'keyword.control', 'keyword'] ], ['function', ['entity.name.function']], ['parameter', ['variable.parameter']], ['constant', ['constant', 'variable']], ['type', ['entity.name.type']], ['builtin', ['variable.language', 'support.type', 'support.type']], ['text', ['string', 'string.quoted', 'string.regexp']], ['attribute', ['keyword']], ['literal', ['string', 'string.quoted', 'string.regexp']], ['macro', ['support.other']], ['variable', ['variable']], ['variable.mut', ['variable', 'storage.modifier']], [ 'field', [ 'variable.object.property', 'meta.field.declaration', 'meta.definition.property', 'variable.other' ] ], ['module', ['entity.name.section', 'entity.other']] ``` Co-authored-by: Seivan Heidari <[email protected]>
| * Fix ↵Seivan Heidari2019-12-234-16/+20
| | | | | | | | | | | | https://github.com/rust-analyzer/rust-analyzer/pull/2061#discussion_r348716036 Fix https://github.com/rust-analyzer/rust-analyzer/pull/2061/files/68a5ff050faf514e9d122212a66703ca8ce66ab7#r361019340
| * Merge branch 'master' into feature/themesSeivan Heidari2019-12-2336-699/+1186
| |\
| * \ Merge branch 'master' of https://github.com/rust-analyzer/rust-analyzer into ↵Seivan Heidari2019-11-281-0/+0
| |\ \ | | | | | | | | | | | | feature/themes
| * \ \ Merge branch 'master' of https://github.com/rust-analyzer/rust-analyzer into ↵Seivan Heidari2019-11-213-13/+30
| |\ \ \ | | | | | | | | | | | | | | | feature/themes
| * \ \ \ Merge branch 'master' of https://github.com/rust-analyzer/rust-analyzer into ↵Seivan Heidari2019-11-204-0/+102
| |\ \ \ \ | | | | | | | | | | | | | | | | | | feature/themes
| * | | | | Readding jsonc parser because of ↵Seivan Heidari2019-11-183-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | https://github.com/rust-analyzer/rust-analyzer/pull/2061\#discussion_r344783715
| * | | | | Merge branch 'master' of https://github.com/rust-analyzer/rust-analyzer into ↵Seivan Heidari2019-11-181-1/+8
| |\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | feature/themes
| * | | | | | Probably a better approach to check for values before assigning lest we ↵Seivan Heidari2019-11-101-3/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | replace something.
| * | | | | | Vscode wasn't running the linter automatically so ran `npm run fix` - wonder ↵Seivan Heidari2019-11-096-106/+110
| | | | | | | | | | | | | | | | | | | | | | | | | | | | if it's related to `tslint` being deprecated.
| * | | | | | See if this satisfies the CI.Seivan Heidari2019-11-051-5/+5
| | | | | | |
| * | | | | | Fix typo.Seivan Heidari2019-11-041-1/+1
| | | | | | |
| * | | | | | Remove new line.Seivan Heidari2019-11-041-1/+0
| | | | | | |
| * | | | | | Logging fallback tag in case scopes are missing.Seivan Heidari2019-11-041-3/+5
| | | | | | |
| * | | | | | * Adding scope mapping configuration manifest in `package.json`Seivan Heidari2019-11-045-66/+140
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Loading configurable scope mappings from settings. * Updating Readme with `rust-analyzer.scopeMappings`. `rust-analyzer.scopeMappings` -- a scheme backed JSON object to tweak Rust Analyzer scopes to TextMate scopes. ```jsonc { //Will autocomplete keys to available RA scopes. "keyword.unsafe": ["keyword", "keyword.control"], //Values are string | TextMateScope | [string | TextMateScope] "comments": "comment.block" } ```
| * | | | | | Making loadColors more readable by monading all the things.Seivan Heidari2019-10-311-23/+16
| | | | | | |
| * | | | | | Adding better debugging for testing themes missing tags and which scopes ↵Seivan Heidari2019-10-313-45/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | didn't map. Since this file is no longer being pushed upstream, double down on monads.
| * | | | | | Merge branch 'master' into feature/themesSeivan Heidari2019-10-314-15/+1
| |\ \ \ \ \ \
| * | | | | | | Remove `jsonc-parser` since vscode can load the package. Might need it later ↵Seivan Heidari2019-10-272-6/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | for loading certain themes, but seems to work without for now.
| * | | | | | | Adding debugging to figure out missing scopes from theme.Seivan Heidari2019-10-272-11/+10
| | | | | | | |
| * | | | | | | Adding all the decorators from RA to map.Seivan Heidari2019-10-271-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Useful for more granular control.
| * | | | | | | Introducing a Scopes Mapper to map from RA scopes to TextMate scopes with ↵Seivan Heidari2019-10-274-13/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | fallbacks. Current scopes defined: ``` ['keyword.unsafe', ['storage.modifier', 'keyword.other', 'keyword.control']], ['function', ['entity.name.function']], ['parameter', ['variable.parameter']], ['type', ['entity.name.type']], ['builtin', ['variable.language', 'support.type', 'support.type']], ['text', ['string', 'string.quoted', 'string.regexp']], ['attribute', ['keyword']], ['literal', ['string', 'string.quoted', 'string.regexp']], ['macro', ['support.other']], ['variable.mut', ['variable']], ['field', ['variable.object.property']], ['module', ['entity.name.section']] ``` Need to complement with further fallbacks as some themes fail.
| * | | | | | | Refactor how themes are found in packages without relying on parsing JSONC.Seivan Heidari2019-10-262-24/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | However, there is still an issue where themes could have been defined in JSONC - but so far with testing very few of them actually do. The issue was in loading packages and now we're letting VSCode tackle that. Fix: https://github.com/rust-analyzer/rust-analyzer/pull/2061#discussion_r339015610
| * | | | | | | Making it clear we're using default settings.Seivan Heidari2019-10-241-11/+7
| | | | | | | |
| * | | | | | | Fixing linting issues, but also hides failures. Has to be a better approach ↵Seivan Heidari2019-10-241-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | to error handling.
| * | | | | | | Only loading `tokenColorCustomizations` once.Seivan Heidari2019-10-241-4/+4
| | | | | | | |
| * | | | | | | Proof of concept theming and 'tokenColorCustomizations' support.Seivan Heidari2019-10-246-35/+231
| | | | | | | |
* | | | | | | | Keep VSCode config mostly backwards compatibleEmil Lauridsen2019-12-254-35/+40
| | | | | | | |
* | | | | | | | Re-format VSCode extension changesEmil Lauridsen2019-12-252-19/+20
| | | | | | | |
* | | | | | | | Re-implement status display using LSP 3.15 progress eventEmil Lauridsen2019-12-252-0/+51
| | | | | | | |
* | | | | | | | Remove cargo watch supporting code and tests from vscode extensionEmil Lauridsen2019-12-2514-1684/+0
| | | | | | | |
* | | | | | | | Configuration plumbing for cargo watcherEmil Lauridsen2019-12-253-74/+28
| | | | | | | |
* | | | | | | | Remove cargo-watch from vscode extension.Emil Lauridsen2019-12-256-454/+1
| |_|_|_|_|_|/ |/| | | | | | | | | | | | | | | | | | | | Still keeps tests around for reference when porting them to rust
* | | | | | | Protect against null as revealed by `npm test`kjeremy2019-12-201-2/+7
| | | | | | |
* | | | | | | Update to latest packageskjeremy2019-12-202-33/+33
| | | | | | |
* | | | | | | Use substr instead of endswithEdwin Cheng2019-12-181-3/+3
| | | | | | |
* | | | | | | Add testsEdwin Cheng2019-12-182-0/+295
| | | | | | |
* | | | | | | Add macro span handlingEdwin Cheng2019-12-181-0/+38
| | | | | | |
* | | | | | | Merge #2583bors[bot]2019-12-173-3/+47
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2583: Use prettier settings in ts-lint r=matklad a=edwin0cheng This PR add `tslint-plugin-prettier` extension in ts-lint, which "runs prettier rules as tslint rules." and remove `quotemark` from ts-lint and let prettier to handle it. And also fix #2515 Co-authored-by: Edwin Cheng <[email protected]>
| * | | | | | | use pretter settings in ts-lintEdwin Cheng2019-12-173-3/+47
| | | | | | | |
* | | | | | | | Merge #2580bors[bot]2019-12-171-4/+4
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2580: Fix highlighting token names r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | | | | | Fix highlighting token namesAleksey Kladov2019-12-171-4/+4
| | | | | | | | |
* | | | | | | | | Merge #2568bors[bot]2019-12-173-2/+18
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2568: Add option to disable all-targets. r=matklad a=pftbest Can be useful in embedded. Co-authored-by: Vadzim Dambrouski <[email protected]>
| * | | | | | | | | Fix formattingVadzim Dambrouski2019-12-161-2/+1
| | | | | | | | | |
| * | | | | | | | | Add option to disable all-targets.Vadzim Dambrouski2019-12-153-1/+18
| | |/ / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | Can be useful in embedded.
* | | | | | | | | Merge #2571bors[bot]2019-12-171-1/+1
|\ \ \ \ \ \ \ \ \ | |_|/ / / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2571: Fixed a typo in settings r=matklad a=omerbenamram @lnicola found a typo in the description for one of the settings introduced in #2559. Co-authored-by: Omer Ben-Amram <[email protected]>
| * | | | | | | | Fixed a typoOmer Ben-Amram2019-12-161-1/+1
| |/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | thanks @lnicola
* / / / / / / / Default to client watching on VS CodeAleksey Kladov2019-12-172-3/+3
|/ / / / / / /
* | | | | | | Merge #2565bors[bot]2019-12-151-3/+8
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2565: Fixed syntax highlighting not refreshing on windows. r=matklad a=omerbenamram I was encoutering the same probelm described in #1690. It seems that events initiated by the frontend with `rust-analyzer/decorationsRequest` would go through. So whenever a user switches tabs, highlighting will update. However, when decorations are initiated by a notification with `rust-analyzer/publishDecorations`, it would fail on this check here https://github.com/rust-analyzer/rust-analyzer/blob/6cbd8a4a4bbca8a7656df9f3ef849acebbf9ef9b/editors/code/src/notifications/publish_decorations.ts#L15 (`targetEditor` will always be `undefined`). This is because it's trying to match the uri `rust-analyzer` sends (which uses an uppercase drive letter) to the uri provided at `editor.document.uri.toString()`, which is both escaped (uses `%3a` for `:`), and uses a lowercase letter drive. Aparrently this was an issue for some other extensions aswell - https://github.com/Microsoft/vscode/issues/68325. But this is the defined behavior - https://github.com/microsoft/vscode/blob/c110d84460b3e45842a8fe753562341003595e1d/src/vs/vscode.d.ts#L1304 This fix is only relevant for windows. I've opted for a server-side fix, since rust will always return uppercase letters for drives, there seems to be no other easy solution than manipulating the Url string before sending it to the frontend. Closes #1690. Co-authored-by: Omer Ben-Amram <[email protected]>
| * | | | | | | `npm run fix`Omer Ben-Amram2019-12-151-8/+6
| | | | | | | |