Commit Graph

1572 Commits

Author SHA1 Message Date
Andrew Dupont
78deb79146 [language-c] Fix issue where the wrong node gets injected into…
…in a macro definition.
2024-03-09 10:14:39 -08:00
Andrew Dupont
95ca84a58a [language-shellscript] Attempt to bump tree-sitter-bash once again 2024-03-06 23:04:06 -08:00
Dominik Schachten
59bdc8d354 Fix fs.lstatSync throws Exception if no file or dir
If it throws the Exception, other valid uris such as atom://teletype/...
will not be evaluated in the else branch
The old fs-plus did not throw.
Newer versions of fs.lstatSync allow for option parameter to control if it throws.
2024-03-05 20:43:49 +01:00
Andrew Dupont
579cc2605b [grammar-selector] Show a badge for all kinds of grammars…
…when `hideDuplicateTextMateGrammars` is `false`.
2024-03-03 21:42:18 -08:00
Andrew Dupont
e8d4e0b06d [grammar-selector] Simplify fallback options…
…when the user's preferred type of grammar isn't available for a particular language.
2024-03-03 00:11:25 -08:00
Andrew Dupont
b9258b5884 [grammar-selector] Overhaul grammar display:
* When set to `true`, `hideDuplicateTextMateGrammars` will hide all grammars except whichever one the user has indicated a preference for — via `useTreeSitterParsers` and `useLegacyTreeSitter` settings, whether global or scope-specific.

* When set to `false`, `hideDuplicateTextMateGrammars` will show all grammars, even Legacy Tree-sitter.
2024-03-02 20:55:02 -08:00
Andrew Dupont
2827e6a4c4 [language-typescript] Add cts(x)/mts(x) to the file extensions lists 2024-03-01 15:43:49 -08:00
Andrew Dupont
0cea2667a8 [language-typescript] Highlighting fixes…
* Add scopes for unary arithmetic operators (`+`, `-`)
* Ensure that function parameters set `capture.final`
2024-02-17 22:19:44 -08:00
Maurício Szabo
444e400e90 Fixes on Clojure extension types 2024-02-17 22:20:51 -03:00
confused_techie
e2a1209502
Merge pull request #927 from pulsar-edit/1.114.0-changelog
1.114.0 Changelog
2024-02-15 19:57:50 -08:00
confused-Techie
02f6a45944 Add github summary change 2024-02-15 19:56:48 -08:00
confused-Techie
8052078d60 Manually add summary items 2024-02-15 18:34:36 -08:00
confused-Techie
299cc9c5ea Removed Rolling Release notes
These don't make much sense for the summary section, as pointed out on Discord
2024-02-15 18:25:41 -08:00
confused-Techie
b1a2187fd3 Add Changelog entries for 1.114.0 2024-02-15 17:33:10 -08:00
Andrew Dupont
325b6b6b1e [symbols-view] Remap go-to-declaration commands on Windows/Linux 2024-02-15 14:23:41 -08:00
Andrew Dupont
ec12b2f0af
Merge pull request #906 from savetheclocktower/tree-sitter-february
Tree-sitter rolling fixes (February)
2024-02-14 21:30:09 -08:00
Andrew Dupont
114a7247de
Merge pull request #861 from savetheclocktower/symbols-view-fixes
`symbols-view` rolling fixes
2024-02-14 21:29:31 -08:00
Andrew Dupont
82eac2276d [language-typescript] Add syntax highlighting for enums 2024-02-09 22:33:48 -08:00
Andrew Dupont
89686ce03a [language-html] Allow for folding of attribute lists…
…such as in multi-line self-closing tags and multi-line opening tags.

Also fix an issue in fold handling that made it impossible to use `@_IGNORE_` captures in `folds.scm`.
2024-02-09 14:20:34 -08:00
Andrew Dupont
cc20d7055d [language-html] Fix indentation after self-closing tags 2024-02-09 09:51:41 -08:00
Andrew Dupont
7dbbd7afda
Update packages/command-palette/lib/command-palette-view.js
Co-authored-by: Maurício Szabo <mauricioszabo@users.noreply.github.com>
2024-02-09 09:17:25 -08:00
Andrew Dupont
2c5be1eda9 [command-palette] Guard against failure to highlight a match 2024-02-08 19:44:02 -08:00
Andrew Dupont
e332953260 [language-c] Add missing anchor to constant pattern 2024-02-04 13:36:17 -08:00
Andrew Dupont
cb7d4aad6c [language-c] C/C++ highlighting fixes…
Changes: 

* `#define FOO 1` and `#define FOO` will _always_ scope `FOO` as `constant.other.c`, even when `FOO` is mixed-case or lower-case.
* `#define FOO()` will _always_ scope `FOO` as `entity.name.function.preprocessor.c`, even when `FOO` is mixed-case or lower-case.
* Usages of bare identifiers in other contexts in preprocessor directives should always scope them as `constant.other.c` — unless I’m made aware of any counterexamples where that shouldn’t happen. For example: in `#if TABLE_SIZE > 200`, `TABLE_SIZE` should always be `constant.other.c`, no matter its casing.
* All-caps variable declarations and assignments (`int FOO = 0`, etc.) should scope `FOO` as `variable` rather than `constant`. We should only scope an arbitrary identifier as `constant` if we think it’s been used in the context of a macro definition.

However:

* When deciding whether something outside of a directive refers to a macro constant, we have no choice but to use the `ALL_CAPS` heuristic. Ideally we’d be able to determine that from some sort of analysis of the source code files — but even if we could keep track of that sort of thing in a single buffer, it’d fall down when macro constants _defined in other files_ are used. All we can do here is make a best guess.
2024-02-03 23:39:12 -08:00
Andrew Dupont
10ce3b11a1 Forgot to bump parserSource (the system works!) 2024-02-02 23:57:21 -08:00
Andrew Dupont
3131464ddb [language-php] Update tree-sitter-phpdoc
…and add some `punctuation` scopes for the generic type delimiters.
2024-02-02 23:07:34 -08:00
Andrew Dupont
32c464b3cb [language-typescript] Highlight escape characters 2024-02-01 21:35:07 -08:00
Andrew Dupont
982917803e [language-php] Fix block comments failing to re-highlight 2024-02-01 21:35:07 -08:00
Andrew Dupont
b3b16010fa [settings-view] Don’t display heading anchor icons within a README 2024-01-31 23:05:18 -08:00
Andrew Dupont
2e36a24fc6 [language-php] Remove firstLineRegex and contentRegex
They don’t gain us anything, and in fact actually cause this grammar to be ranked _below_ the TextMate PHP grammar when they fail.
2024-01-29 18:51:35 -08:00
Andrew Dupont
05de7dba2c [symbols-view] Forgot this part. 2024-01-29 00:56:32 -08:00
Andrew Dupont
51f06683f6 [symbols-view] Implement “prefill with selected text”
When enabled, will use the selected text in your editor as the search query in the symbols list.

Prefers an empty string if the setting is disabled, or if the editor selection spans more than one buffer line.
2024-01-29 00:53:42 -08:00
Andrew Dupont
67e41a1f11 [symbols-view] Infer icons from tag if icon is not present
This should result in _lots_ more icons in the symbols list.
2024-01-28 23:43:21 -08:00
Andrew Dupont
8be56e2559 [symbols-view] Guard against error during teardown…
…that can happen if the broker is destroyed before the providers.
2024-01-28 23:43:21 -08:00
Andrew Dupont
db1a4c50a4 [language-php] Update tags.scm 2024-01-28 23:43:21 -08:00
Andrew Dupont
3565ea822e [symbol-provider-tree-sitter] Add specs for context, tag, icon 2024-01-28 23:43:21 -08:00
Andrew Dupont
58d9a0393e [symbol-provider-tree-sitter] Fix icon display via symbol.icon
Specifying the icon via the `(#set! symbol.icon "foo")` predicate was having no effect.
2024-01-28 23:43:21 -08:00
Andrew Dupont
33b4eea80d Align icons better alongside symbol names 2024-01-28 23:43:21 -08:00
Andrew Dupont
8799fb053b Flesh out service documentation 2024-01-28 23:43:21 -08:00
Andrew Dupont
94d41ce82b [language-(java|type)script] Highlight array-destructured variables…
…no matter how deeply they’re nested.

Also highlight `?` in an incomplete ternary.

(Also fix a lot of final segments in the TypeScript highlights file; I’ve been lazily copying-and-pasting and forgetting to change them.)
2024-01-28 11:45:36 -08:00
Andrew Dupont
e49b919703 [language-(java|type)script] Add exhaustive indentation configuration
We are crossing the Rubicon.

https://github.com/orgs/pulsar-edit/discussions/249 is a discussion of specific ways that indentation is different in JavaScript because of the new grammar. We intentionally didn’t try to preserve the indentation decisions in the old TextMate grammar, but this is (predictably) disruptive to some people. We don’t want to punt like legacy Tree-sitter did and rely on the TextMate grammar’s coarse regexes to decide what gets indented, but we can at least make the new indentation system granularly configurable.

This commit makes practically every indentation decision configurable in JavaScript and TypeScript. It groups these settings under a new “Indentation” section in each package’s settings.

I might decide that this goes too far and roll back the granular settings for `{`, `[`, and `(`, but the other indentation hints are absolutely matters of taste, so it’s only proper that users can choose to disable them.

In the long run, we could _consider_ allowing users to swap in another indentation engine altogther, much like #895 proposes for folds. That would let us legitimately offer users a way to opt into “the way the TextMate grammar does it” without affecting other users.

Another stopgap option would be to add a way for a user to disable indentation hinting altogether for a given grammar.
2024-01-28 11:21:59 -08:00
Andrew Dupont
e547ace81c [language-css] Highlighting fixes:
* Style `*` (universal selector)
* Add support for namespaced tags and attributes (now that `tree-sitter-css` supports them)
2024-01-27 20:23:42 -08:00
Andrew Dupont
a8215f107c [language-java] Add highlights for variables…
…when assigning, reassigning, or incrementing.

Also add `++` and `--` as operators.
2024-01-27 18:13:42 -08:00
Andrew Dupont
1f9ab2008b [language-javascript] Highlight public fields in class bodies 2024-01-27 11:31:25 -08:00
Andrew Dupont
adfdd05472 Allow “half-covering” of scopes at the edges of injections
There's a hard-to-grok setting for language injections that allows a deeper layer to monopolize the scope application for a range. In most cases, an injection is placed into a node that the parser doesn't know much about (like a `script` block in HTML); but Rust and C parsers needed a way to inject themselves _into themselves_ so that they could add syntax highlighting to macros. Because they were applying highlighting to a range that the base layer _already_ had plans to highlight, they needed a way to block the shallower layer from acting.

This mode has never worked briliantly, but it's been made smarter in several ways since the invention of modern Tree-sitter. And here's another one: if the highlight iterator is at a position where an injection range is _about_ to begin, it shouldn't be able to stop any other layer from _closing_ a scope; and if the highlight iterator is at a position where an injection range has just _finished_, it shouldn't be able to stop any other layer from _opening_ a scope.

Because of this, we can now fix a bug that I think might've been present for a while in the application of scopes to rust macros like `println!` — the position after the exclamation point is one of those injection-layer boundaries, to the effect that a scope name was opened that would persist until at least the end of the screen line.
2024-01-27 00:41:41 -08:00
Andrew Dupont
5728b7fe5e [language-javascript] Update to latest tree-sitter-jsdoc 2024-01-26 23:12:02 -08:00
Andrew Dupont
483870d701 [language-rust] Scope &s in references as operators 2024-01-26 23:11:11 -08:00
Andrew Dupont
312f627cc1 [language-yaml] Scope unquoted strings as, well, string.unquoted 2024-01-26 23:10:37 -08:00
Andrew Dupont
ff030d896c [language-javascript] Missed these renames 2024-01-26 18:19:48 -08:00
Andrew Dupont
476e784005 [language-javascript] Two highlighting fixes…
* Revert JSDoc tags to use the `keyword` namespace
* Ensure we always apply `meta.tag.jsx.js` to the area surrounding a JSX opening/closing/self-closing tag element and its punctuation.
2024-01-26 17:26:37 -08:00
Andrew Dupont
11910a11aa [language-gfm] Change markup.code to markup.raw
…and apply it only to the content _inside_ the fence when handling fenced code blocks.
2024-01-26 17:22:04 -08:00
Andrew Dupont
edf19b2af2 [language-php] Stop scoping all tokens LIKE_THIS as constant 2024-01-24 17:11:47 -08:00
Andrew Dupont
9265e5eb3e [language-css] Fix failure to scope the foo in .div foo
…and other descendant combinators.
2024-01-24 17:10:38 -08:00
Andrew Dupont
f1ce722f33 [language-typescript] Various highlighting fixes…
* Declared namespaces should be `entity` only, not `support`
* `<` and `>` in type parameters should always have the proper `punctuation` scopes applied
* All TSX tags should have the surrounding `meta.tag.ts.tsx` scope applied
* TSX fragments (`<>`) should be highlighted
2024-01-24 17:09:42 -08:00
Andrew Dupont
a0595b275d [language-typescript] Use proper comment delimiters in TypeScript…
…when inside of a TS block within a TSX interpolation.

Some mixing of TS and TSX is too ambiguous for the “Toggle Line Comments” command, but in this case we've got a brace-delimited block inside of a TSX interpolation. That's practically guaranteed to mean we've got a line with _only_ TypeScript on it, so we should use an ordinary TS line comment.
2024-01-23 16:17:06 -08:00
Andrew Dupont
995196a138 [language-c] Support declarations of pointers-of-pointers 2024-01-22 17:43:25 -08:00
Andrew Dupont
5fdcf62ea1 Revert inadvertent change 2024-01-21 20:47:00 -08:00
Andrew Dupont
6b89902761 [language-php] Update parserSource field for internal PHP grammar 2024-01-21 13:32:01 -08:00
Andrew Dupont
2aa0cea8a4 [language-gfm] Actually change the scope name for a horizontal rule…
…instead of forgetting to add the file.
2024-01-21 13:22:36 -08:00
Andrew Dupont
ee220dd6ef [language-gfm] Change scope for a horizontal rule…
to `markup.horizontal-rule.gfm` and add styles to all eight built-in syntax themes to account for it.

All the old GFM scopes are just named however they needed to be named in order to produce syntax highlighting to the grammar author, semantics be damned. Instead, we're making sure the semantics are correct, then adapting the syntax themes accordingly.
2024-01-21 13:20:56 -08:00
Andrew Dupont
4c0e7dda9f Highlight JSON keys in the other six builtin syntax themes…
…always using the color that was already used to highlight YAML keys.
2024-01-21 13:07:16 -08:00
Andrew Dupont
e0009ce188 Highlight JSON keys in one-(dark|light)-ui
Upon suggestion, `@hue-5` was chosen for consistency because the same color is used for keys in YAML.
2024-01-21 12:56:34 -08:00
Andrew Dupont
1e7e1351d8 [language-javascript] Ensure object properties are scoped as entity
…instead of `variable` when a function is on the right-hand side of an assignment.
2024-01-21 12:53:44 -08:00
Andrew Dupont
8525a3f622 [language-php] Move value type usages into support.storage.type 2024-01-21 12:51:47 -08:00
Andrew Dupont
33f193cd60 [language-php] Update tree-sitter-php to latest 2024-01-21 11:16:51 -08:00
Andrew Dupont
aeeb03a824 Adopt the support.storage compromise found in legacy Tree-sitter…
…in which all _value types_ are scoped under `support.storage`. The goal is to avoid drawing an arbitrary distinction between, say, `int` and `SomeCustomCType` — those things are different, but not _so_ different that they belong in separate root scope namespaces.

`storage.type` can be used for core language constructs — `var`, `class`, `function`, `struct`, `enum`, `namespace`, and so on. `support.storage.type` should be used for any _recognized_ value type — certainly core language types like `int`, but also other things if they make sense. `support.other.storage.type` can be used for user-defined types, or any other types that we don't recognize. (Using the `support.other` ordering here adheres to our new convention of reserving all of `support.other` for user-defined things.)

The point of this compromise is that both the `syntax--storage` and `syntax--support` class names are present so that many themes will still highlight these tokens as though they were in the root `storage` namespace.

This commit changes the C/C++ and TypeScript `highlights.scm` files. The results appear to be satisfactory to my eye after testing on two of the builtin themes.

I’ve updated the taxonomy document to reflect this new proposal:
https://gist.github.com/savetheclocktower/c9607b97477d4817911e4f2f8db89679#file-scope-taxonomy-md
2024-01-21 10:33:01 -08:00
Andrew Dupont
46877b05ff [language-php] Add meta.embedded.block/meta.embedded.line
…to each PHP section in order to match the functionality of the TextMate grammar.

This was a gigantic endeavor and involved doing several things that were on my “ugh, I’ll get around to it” list:

* To make some of this stuff work, we were using two different PHP parser layers. The root one did the syntax highlighting and separated the HTML from the rest, and the deeper injection was there just so we could scope some ranges as `source.php`.

  That doesn’t work because of rules we have about shallower layers acting before deeper layers when iterating through syntax highlighting boundaries. I was trying to be too clever. Now the _root_ layer is the one that does no highlighting, and the _deeper_ layer is the one that exists to apply `source.php` _and then_ perform highlighting and indentation hinting and folding and whatnot.

  If we need to, we can move some of the queries to the root layer for whatever reason; maybe we come across a bug six months from now that could be fixed if we made the root layer in charge of folding. We have options.

* All boundaries for `HighlightIterator`s now _either_ open one or more scopes _or_ close one or more scopes. If one boundary can close some scopes and open others, then boundaries on different layers that share a buffer position cannot possibly close/open in the correct order because they can't intermingle. This needed to happen and this was as good of an excuse as any to do it.
* We needed to present sane PHP opening/closing ranges to the injection. Ironically, `tree-sitter-php` itself makes this nearly impossible because of how the tree is structured; it tries to hide the `<?php` and `?>` tags from the PHP layer and treat them as text, despite the fact that PHP is the thing that knows how to parse that.

  The best way to do this — at least until I encounter a reason why it can’t work — is to find all the `<?php`s and `?>`s, sort them, group them, and build fake node ranges. This is fine! I mean, it’s ridiculous, but it’s fine! The ranges that we hand off to another parser are allowed to be completely arbitrary!

  This lets us do what we were only approximating before: have _one_ PHP injection layer with _any number of_ content ranges, each of which begins with `<?php` and ends with `?>` without trying to claim any surrounding whitespace. This would be worth it even if we didn’t have to do any of this other stuff.

* Each content range of the injection needs _either_ `meta.embedded.line.php` _or_ `meta.embedded.block.php` depending on whether the range begins and ends on the same line. This is not something I was willing to regress on because it's _hard_ to distinguish between PHP and non-PHP unless your editor helps you out, and because I wasn't going to go into a bunch of themes and tell them to treat `source.php` like `meta.embedded`.

  This also meant that we needed to be able to add _multiple_ “root” scope names per content range. But we already had a mode in which the `languageScope` injection option could be a callback, so it wasn't hard to make it a callback that could take extra parameters for the buffer and range.

  This isn't a feature that I'm eager for other grammars to use, or even necessarily know about, but it was what we needed to deliver feature parity here. And none of it would have been necessary if `tree-sitter-php` made more sensible choices. (Whatever. Maybe what I want isn't possible for some strange reason.)

All existing tests pass. Tests have been written for the new `languageScope` features. Tests need to be written for PHP just like for all other language grammars, but that was on the to-do list anyway. If any of this turns out to be catastrophic, it’s easy to roll back, but tests are passing on my machine and I expect them to pass in CI.
2024-01-20 20:49:17 -08:00
Andrew Dupont
4d8a7219c3 [language-c] Highlight struct designated initializers 2024-01-20 12:07:22 -08:00
Andrew Dupont
c2fb3075df [language-php] Small fixes…
* Properly highlight comments like `/***/`
* Add `intdiv` as a builtin function
* Change PHPDoc tags back to a `keyword` scope rather than an `entity.name.tag` scope
* Highlight more PHPDoc types
2024-01-20 10:34:48 -08:00
Andrew Dupont
7130f77f27 [language-typescript] Highlight the wildcard import symbol 2024-01-19 23:25:23 -08:00
Andrew Dupont
65de46faa1 [language-html] Update tree-sitter-embedded-template to latest…
…which will make EJS and ERB much more pleasant to use, and which I should've done ages ago.

Most notably: empty tags like `<% %>` are now valid, so the highlighting won't go nuts before you've typed anything.
2024-01-19 23:16:15 -08:00
Andrew Dupont
e1e12ff5ba [language-gfm] Test for undetected URLs in paragraphs…
…and inject `hyperlink` into them for auto-linking.
2024-01-19 21:25:00 -08:00
Andrew Dupont
054b067ff2 Update highlights for all regex injections…
…and add a distinct copy for TypeScript so that it works even if `language-javascript` is disabled or replaced.

(We might want to just make `language-regex` and have it export a service.)
2024-01-19 21:01:07 -08:00
Andrew Dupont
81ca97e0c7 [language-ruby] Tweak scope name for regex injections 2024-01-19 20:47:00 -08:00
Andrew Dupont
cf884f5f86 Update tree-sitter-regex for both JavaScript and Ruby 2024-01-19 20:45:33 -08:00
Andrew Dupont
fd0b9a2dd7 [language-ruby] Move files around to conform better to convention 2024-01-19 20:39:07 -08:00
Andrew Dupont
38534bbd84 [language-ruby] Update tree-sitter-ruby to latest 2024-01-19 20:33:07 -08:00
Andrew Dupont
aff27bb5bf [language-html] Update tree-sitter-html to latest 2024-01-19 20:26:27 -08:00
Andrew Dupont
e874d51362 [language-c] Update the tree-sitter-c and tree-sitter-cpp parsers 2024-01-19 20:02:22 -08:00
Andrew Dupont
5aef671f5c [language-php] Fix incorrect indentation after ternary expressions 2024-01-19 18:42:25 -08:00
Andrew Dupont
5e84a7cda4 [language-shellscript] Highlighting fixes…
* add `declare` and `readonly` modifiers
* distinguish $()-style command substitution from backtick substitution
* prevent double-scoping of punctuation
2024-01-19 17:27:44 -08:00
Andrew Dupont
dcf451cf1b [language-python] Update to latest tree-sitter-python
…and add some items to `highlights.scm` that fell through the cracks.
2024-01-19 16:43:32 -08:00
Andrew Dupont
a13ffcd694 [language-typescript] Move the “Objects” section in highlights.scm
…so that the builtins section gets prioritized higher.
2024-01-19 16:42:01 -08:00
Andrew Dupont
3cd7557504 [language-shellscript] Highlight while and add other fixes…
* `<` as a file redirect operator
* `((` and `))` as punctuation
2024-01-18 20:28:27 -08:00
Andrew Dupont
57e812b5bc [language-typescript] Harmonize syntax decisions between JS and TS…
…and add a new style to `one-dark-syntax` and `one-light-syntax` to ensure continuity of appearance now that object properties are not all treated as `variable`s.

Also, scope private field method definitions in both JS and TS.
2024-01-18 19:05:17 -08:00
Andrew Dupont
937cb15953 [language-c] Apply some fixes to C/C++ highlighting
Choosing the other side of some dilemmas I had to resolve six months ago. Highlighting between modern and legacy Tree-sitters now appears to be identical to me (with rare exception) on the One Dark theme.
2024-01-18 18:33:00 -08:00
Andrew Dupont
f171f33844 [language-go] Highlight method names like function names 2024-01-18 17:31:46 -08:00
Andrew Dupont
3864c0d0f7 [language-go] Update tree-sitter-go parser to latest…
…and include some highlighting fixes from #869.
2024-01-18 13:53:23 -08:00
Andrew Dupont
1ed84b8180 Adjust fold in response to tree-sitter-javascript change 2024-01-18 13:53:23 -08:00
Andrew Dupont
cac042b3c0 [language-php] Support some things that were accidentally omitted…
…like

* Constructors (the "Foo" in `new Foo()`)
* Certain function-like builtins like `list`, `unset`, and `print`
2024-01-18 13:53:23 -08:00
Andrew Dupont
a53a9f6c15 [language-javascript] Fix indents.scm after the parser upgrade 2024-01-18 13:53:23 -08:00
Andrew Dupont
3d526d7959 Add a setting to control switch/case indentation for JS/TS
This is our first venture into _configurable_ indentation. Exciting times.
2024-01-18 13:53:23 -08:00
Andrew Dupont
55a8762478 [language-css] Update tree-sitter-css parser to latest 2024-01-18 13:53:23 -08:00
Andrew Dupont
1ddcff43bd [language-javascript] Rename grammar files for consistency 2024-01-18 13:53:23 -08:00
Andrew Dupont
79d1cff437 [language-javascript] Upgrade tree-sitter-javascript parser to latest…
…and move some files around for consistency.
2024-01-18 13:53:23 -08:00
Andrew Dupont
99388fabb8 [language-typescript] Correctly highlight the angle brackets of TSX tags 2024-01-18 13:53:23 -08:00
Andrew Dupont
bbf5242d96 [language-typescript] Highlighting fixes for TS and TSX:
* Highlight namespaced JSX tags (e.g., `<React.Fragment>`) like other JSX tags
* Don't scope `/` punctuation in JSX tags like a division operator
* Scope ordinary functions as `support.other.function` just as in JavaScript
* Scope the last segment of `namespace` declarations as an `entity`, other segments as `support.class`
2024-01-18 13:53:23 -08:00
Andrew Dupont
95de9bc89f [language-typescript] Distinguish different usages of < and >
Angle brackets in type parameter lists (e.g., `Array<string>`) should not be scoped like comparison operators.
2024-01-18 13:53:23 -08:00
Andrew Dupont
dfb2493e43 Add some more stray .eslintrc files 2024-01-18 13:53:23 -08:00
Andrew Dupont
09184d959f Add documentation for the new TODO/hyperlink services 2024-01-18 13:53:23 -08:00
Andrew Dupont
6069a59804 Remove the requirement for a grammar to have a highlightsQuery 2024-01-18 13:53:23 -08:00
Andrew Dupont
fbc2c822ad Prevent certain Python strings from being double-scoped 2024-01-18 13:53:23 -08:00
Andrew Dupont
93ab0f7bf0 Convert all modern Tree-sitter TODO/hyperlink injections into services 2024-01-18 13:53:22 -08:00
confused_techie
691dd539be
Merge pull request #862 from pulsar-edit/changelog-1.113.0
1.113.0 Changelog
2024-01-15 17:09:39 -08:00
confused-Techie
35a826b851 Add last minute PR update 2024-01-15 17:05:58 -08:00
confused-Techie
d9179f583d Add Modern Tree-sitter notice 2024-01-15 16:11:53 -08:00
confused-Techie
490e826307 Add Changelog 2024-01-15 16:03:59 -08:00
Andrew Dupont
039ea260b2 [symbols-view] Add specs for return-from-declaration fix 2024-01-15 16:01:47 -08:00
Andrew Dupont
a720d967d7 [symbols-view] Fix issue with returning from a declaration…
…when the tab being returned to is closed and must be recreated.
2024-01-15 15:43:06 -08:00
Andrew Dupont
0111e13f0e PHP feedback 2024-01-12 19:38:28 -08:00
Andrew Dupont
6ebdfa0cab Remove unneeded file 2024-01-12 19:33:38 -08:00
Andrew Dupont
bae3689f88 Add folds for PHP 2024-01-12 19:33:20 -08:00
Andrew Dupont
f3be33bbc9 Add <> and <=> operators in PHP 2024-01-12 19:21:00 -08:00
Andrew Dupont
62bd6cc8ba Even more PHP grammar feedback 2024-01-12 17:11:49 -08:00
Andrew Dupont
e78feea098 Address more PHP grammar feedback 2024-01-12 14:25:42 -08:00
Andrew Dupont
a34b01bfb2 In JS/TS, correctly highlight a variable with a default value…
…when destructuring an array.
2024-01-12 13:28:22 -08:00
Andrew Dupont
99722454b8 [symbols-view] Allow for scope-specific overrides of preferred providers 2024-01-12 13:10:51 -08:00
Andrew Dupont
ddfa645122 Fix issue where symbol-provider-ctags used the wrong package root 2024-01-12 12:42:01 -08:00
Andrew Dupont
865153b471 Address newly failing tests 2024-01-11 16:08:37 -08:00
Andrew Dupont
50bfa5141e Update tree-sitter-json WASM build to latest
Spotted it falling down on a very large JSON file I had. Seems to be fixed on `master`. Not sure which verison I originally built it from.
2024-01-11 15:07:11 -08:00
Andrew Dupont
c50b0e629f More PHP grammar feedback 2024-01-11 15:07:10 -08:00
Andrew Dupont
336f609f60 More PHP grammar feedback 2024-01-11 15:07:10 -08:00
Andrew Dupont
0b08306498 Don't add root scopes to CSS for TODO/hyperlink injections 2024-01-11 15:07:10 -08:00
Andrew Dupont
8836be7e16 Only inject TODO and hyperlink into CSS when needed 2024-01-11 15:07:10 -08:00
Andrew Dupont
2580642c0f Address feedback on PHP syntax highlighting 2024-01-11 15:07:10 -08:00
Andrew Dupont
f2dabe5167 Update tree-sitter-php WASM file to latest master 2024-01-11 15:07:10 -08:00
Andrew Dupont
8c946a004e [tree-sitter] TS: Treat parameters with defaults like parameters…
…plus a few other TypeScript fixes.
2024-01-11 15:07:10 -08:00
Andrew Dupont
58b9cc1865 Handle nowdocs in PHP 2024-01-11 15:07:10 -08:00
Andrew Dupont
ad8a215c77 Remove logging from injection callback 2024-01-11 15:07:09 -08:00
Andrew Dupont
c93bdeb21a Add parserSource fields where appropriate 2024-01-11 15:07:09 -08:00
Andrew Dupont
d148a73631 Add a modern Tree-sitter PHP grammar
This one’s got all the frills, including injections into HTML documents and a PHPDoc grammar.

As part of this change, we're also migrating to `web-tree-sitter` version 0.20.8 with some customizations. The PR I submitted at https://github.com/tree-sitter/tree-sitter/pull/2795 is landed on this fork, though if the same issues get fixed in a different way on the source, I'll adopt that approach as well. The PHPDoc parser needed another external added.
2024-01-11 15:07:09 -08:00
Andrew Dupont
b7dc65466f [tree-sitter] Fixes for shell script highlighting 2024-01-11 15:07:09 -08:00
Andrew Dupont
aef7c845b5 (oops) 2024-01-11 15:07:09 -08:00
Andrew Dupont
0b51a77cd6 [tree-sitter] Further JSX indent fixes for JS and TS alike 2024-01-11 15:07:09 -08:00
Andrew Dupont
d9f6946653 [tree-sitter] Fix JSX dedent logic 2024-01-11 15:07:09 -08:00
Andrew Dupont
d32bdf648d [tree-sitter] Highlight assertion function clauses in TypeScript 2024-01-11 15:07:09 -08:00
Andrew Dupont
9db2ace139 [tree-sitter] Add the pipe character (|) as an operator 2024-01-11 15:07:09 -08:00
Andrew Dupont
30f696f567 Address more PHP grammar feedback 2024-01-11 15:07:08 -08:00
Andrew Dupont
70b34cd67a Add TODO and hyperlink injections to YAML comments 2024-01-11 15:07:08 -08:00
Andrew Dupont
e2da555079 Add hyperlink injection to JSON 2024-01-11 15:07:08 -08:00
Andrew Dupont
ebd0ae0383 Add TODO and hyperlink injections to Go 2024-01-11 15:07:08 -08:00
Andrew Dupont
bf039ccf45 Don't add root scopes to CSS for TODO/hyperlink injections 2024-01-11 15:07:08 -08:00
Andrew Dupont
351493fc35 Only inject TODO and hyperlink into CSS when needed 2024-01-11 15:07:08 -08:00
Andrew Dupont
bbf4cb4417 Add TODO and hyperlink injections to C/C++ 2024-01-11 15:07:08 -08:00
Andrew Dupont
0807dcfce5 Add TODO and hyperlink injections to Rust 2024-01-11 15:07:08 -08:00
Andrew Dupont
5e62e205b5 [tree-sitter] Add TODO and hyperlink injections to Java 2024-01-11 15:07:08 -08:00
Andrew Dupont
f6e1a22cf7 Apply PHPDoc learnings to JSDoc
The conventions I had in place for various JSDoc constructs didn't make any sense. They're fixed now.
2024-01-11 15:07:08 -08:00
Andrew Dupont
18788c095e Address feedback on PHP syntax highlighting 2024-01-11 15:07:08 -08:00
Andrew Dupont
b6d88a5693 Update tree-sitter-php WASM file to latest master 2024-01-11 15:07:08 -08:00
Andrew Dupont
8ae599f811 [tree-sitter] TS: Treat parameters with defaults like parameters…
…plus a few other TypeScript fixes.
2024-01-11 15:07:08 -08:00