Shared publicly  - 
 
It looks like back in time nice collaboration has happened between Ace, CodeMirror resulting in common JS Syntax Highlighting Specification:
https://github.com/mozilla/skywriter/wiki/Common-JavaScript-Syntax-Highlighting-Specification

Followed by a blog post:
http://pcwalton.blogspot.com/2010/11/syntax-highlighting-specification.html
Implementation from CodeMirror:
https://github.com/marijnh/CodeMirror/tree/portable
And (almost compliant?) implementation on Ace:
https://github.com/ajaxorg/ace/blob/master/lib/ace/mode/java_highlight_rules.js

Unfortunately since than each editor did it's own thing and modes written for
one still can be consumed by other. Also new and interesting syntax highlighters have appeared http://craig.is/making/rainbows that could have taken advantage of that specification and existing modes but they did not.

Any chances we you could see a renascence ? What about setting up a repository with language modes that both editors could take advantage of ?
Maybe we also could standardizing CSS classnames used so that color schemes can be portable across these projects ?

Also projects like +Eclipse Orion http://www.eclipse.org/orion/ could join this effort.
In light of the Skywriter-Cloud9 collaboration, I've been working on a specification for cross-browser syntax highlighting engines. I now have something to announce, and I'm thrilled to have b...
5
1
Irakli Gozalishvili's profile photoHarutyun Amirjanyan's profile photoFabian Jakobs's profile photoLyre Calliope's profile photo
9 comments
 
I thin current spec may be a good strat point as long as it would allow defining a language mode in a declarative manner which can be used with different projects. +Marijn Haverbeke if you think current proposal can be improved to cover pieces you've outlined that maybe worth tackling as version 2 of proposed API.

+Fabian Jakobs Will correct me if I'm wrong, but I believe ACE defines indentation hints and alike separately that works with on top of this
 
I'd suggest to setup github organization code-js with same named repo where modes following that spec can be placed. I can also port some modes from ACE to follow that spec and place them there.
 
I'd be also very interested in standardizing and documenting css classNames used by editors so that reusable syntax highlighter themes can be created. I've ported theme I wrote for VIM to ACE, CodeMirror, Rainbow, Pygments. And I'll be porting it to Orion to be usable with Firefox scratchpad. I really wish there was standard.
 
Ace maintainers position: Ace modes are also much more than just syntax highlighters. Ace modes also support features like auto indent, code folding or syntax validation using workers. We want to be able to continue innovating in that area. Modes we care a lot about like the JavaScript mode will probably never be pulled in from a shared repo which implements the least common denominator. However there are lots of language modes (esp. the esoteric ones), which hardly specify more than the tokenizer (highlighter) and whether it is a C-Style or XML-style language. For those I'd love to have a shared repo and then CM, Bespin, Ace etc. can pull them in or build on top of them.

The hard part will be for figure out what makes sense to standardize and what to keep in the editors. We can take Patrick's proposal as a starting point but I'd also be fine with starting something new. The old proposal basically codified the way modes were done in Ace at the time.

I think it makes sense to share modes, which define:

- class of the language (C, XML, Python style used for auto indent and code folding)
- applicable mime types
- tokenizer/highlighter

We also have to agree on token names so themes make sense. If we have this we can start talking about sharing themes as well.

We also have to solve some organizational issues:

- will we put all modes in one repo? (would be my preference)
- who owns that repo? (Could be Mozilla as a neutral entity)
- who maintains the repo?
- which license do we use?
- do we require CLAs?
- what format will the modes have?
- JSON
- plain JavaScript
- use a JS module system (AMD/requireJS)

I'd be fine moving some of the "simple" modes from Ace to a shared repo once we agree on a format (and the mode authors agree).
 
i think common standard for modes should be based on textmate bundles, or come with a converter from them
pros:
- declarative easy to parse syntax (easily converted to json)
- textmate and sublime use them
- all the new languages (julia,jade,stylus) have a textmate bundle out of the box
cons:
- scope selector names are too long

As for colliding with other classes isn't editor theme class enough for namespacing?
 
For that reason we prefix every single CSS classname with "ace-" and I see that you do the same in CM with the "cm-" prefix. If we want to standardize themes as well we'd just have to agree on a common prefix.
Add a comment...