
MagicStack: Python syntax highlighter for Sublime Text and Atom - 1st1
https://github.com/MagicStack/MagicPython
======
peterhadlaw
Intermediate emacs user here. I really like the way Atom highlights Python
code. With this I see it being even better. A question for the author: does
this expand upon the capabilities of the editor or just provide a route for
quicker updates that eventually could be mainlined?

I've been thinking about scratching the itch to expand emacs Python
highlighting to match that of Atom. From the looks of it, the code
highlighting was primarily regex based, and the same from my cursory
observations looking at emacs Python-mode syntax highlighting mechanisms.
Could I incorporate this somehow into emacs from what I've said here so far?

Also, thanks for helping out the community!

~~~
1st1
> [...] A question for the author: does this expand upon the capabilities of
> the editor [...]

MagicPython is a completely new implementation, written from scratch. The
ultimate goal would be to integrate it into Atom and Sublime Text by default
(here's an issue I created for Atom for example [1])

> Could I incorporate this somehow into emacs from what I've said here so far?

I'm not an emacs user myself, so I'm not sure. You can probably re-use some of
the regexp tricks, and definitely our unit-tests.

[1] [https://github.com/atom/language-
python/issues/109](https://github.com/atom/language-python/issues/109)

------
1st1
I'm one of the authors, ama.

~~~
0942v8653
Does this allow highlighting function names in function calls?
PythonImproved[0] does this (see lines 9 and 23 of [1]).

[0]:
[https://github.com/MattDMo/PythonImproved](https://github.com/MattDMo/PythonImproved)

[1]:
[https://packagecontrol.io/readmes/img/048b2068c7a455f3796334...](https://packagecontrol.io/readmes/img/048b2068c7a455f3796334fb70127655a1f5f9cc.png)

~~~
1st1
Yeah, should be fairly easy to add. Please submit an issue!

~~~
knite
Could you compare/contrast MagicStack with PythonImproved generally? Would
love to know if MS is strictly better.

~~~
1st1
Try to add this snippet anywhere in your code:

    
    
        r'('
    

Besides broken regexps, PythonImproved still doesn't highlight async/await,
highlights raw docstrings as regexps, incorrectly handles implicit line
continuations in function parameter annotations, etc.

Edit: here's an issue that documents some differences [1]

[1]
[https://github.com/MagicStack/MagicPython/issues/3](https://github.com/MagicStack/MagicPython/issues/3)

~~~
knite
Why is the issue closed and locked?

------
n0us
I was actually searching for something like this just the other week and
couldn't find anything. This is great to see.

------
personjerry
How come it doesn't highlight "self"? I think that is an important enough
keyword to be highlighted differently.

~~~
llimllib
pedantry, but probably relevant to the decision: self is not a keyword at all,
it's a conventional choice.

(I'd probably elect to highlight it, just saying that it's not a reserved word
in any way.)

~~~
mikepurvis
Rather than highlight the specific string "self", instead highlight the first
parameter of any non-static class method?

~~~
1st1
Well, if it's a decorated function, then one of the decorators might consume
the first argument. IOW there is no reliable way to tell if the first argument
of the method is really "self" or something else. In this very case its better
to just stick to the conventional name.

------
cdnsteve
Are you looking for a hand on this project?

~~~
1st1
Sure, feel free to create PRs and submit issues :)

------
thomasahle
Love the highlighting inside regular expressions. Much more useful than
highlighting of the actual code.

------
BHSPitMonkey
It looks like the name of this software is actually MagicPython, and
MagicStack is the company who made it.

------
forgotpwtomain
Would love to see this ported for Geany.

