atom / language-python

Python package for Atom
Other
190 stars 146 forks source link

Tokenize *args and **kwargs the same as other parameters (tree-sitter) #303

Closed caleb531 closed 5 years ago

caleb531 commented 5 years ago

Requirements

Description of the Change

Back in https://github.com/atom/language-python/pull/297, I added highlighting for formal function parameters to the Python tree-sitter grammar. This PR follows up on that work with two additional fixes for splat parameters such as *args and **kwargs.

Alternate Designs

I could've chosen more-generic or more-specific selectors to tokenize these nodes, depending on how broad these changes are desired to be. But to avoid any potential breakages, I aimed to keep these changes narrow in scope.

Before:

Before

After:

After

Benefits

More consistent syntax highlighting for tree-sitter-tokenized Python files, continuing in the spirit of https://github.com/atom/language-python/pull/297

Possible Drawbacks

I don't think there are any, as I tried to make my changes focused enough to avoid breaking anything. But if there's anything else I could consider in terms of the impact on Python syntax, please let me know!

Applicable Issues

https://github.com/atom/language-python/pull/297 (already merged by @nathansobo)

jasonrudolph commented 5 years ago

Cool! Thanks, @caleb531. I also compared the syntax highlighting in this pull request to the syntax highlighting that the old TextMate grammar provides, and confirmed that this pull request brings the Tree-sitter syntax highlighting up to par with the TextMate syntax highlighting for *args and **kwargs:

TextMate

1-textmate

Tree-sitter before this PR

2-tree-sitter-before

Tree-sitter after this PR

3-tree-sitter-after