Simple EJS highlighter for Sublime Text 3
The standard EJS package for Sublime Text 3 is broken. This post shows a trivial
alternative. There is EJS 2 package but it is broken too because valid EJS is
<% }) %> in a
forEach call. In the same way, this fork is broken too.
I have added my own solution. It just highlights the EJS tag as a whole and does not dive into it. I did it the
same way in Kate. In order to "install" this solution, create a
EJS.sublime-syntax into the
Packages/EJS directory (create
EJS directory where
Preferences->Browse Packages opens). The any "official" EJS package must be uninstalled.
%YAML1.2 --- # See http://www.sublimetext.com/docs/3/syntax.html name: EJS file_extensions: - ejs scope: text.html.ejs contexts: main: - include: scope:text.html.basic - match: '(<%(-|=)?.+?%>)' scope: ejs
Then add the
ejs scope color into your theme (the tmTheme file of the active theme, possible hints on doing it are
<dict> <key>name</key> <string>EJS</string> <key>scope</key> <string>ejs</string> <key>settings</key> <dict> <key>foreground</key> <string>#0057AE</string> </dict> </dict>
With my theme and settings, the output looks like:
I have improved the highlighter to properly highlight multiple EJS fragments on the same line. This required change to make the match regex non-greedy. The full code snippet above has the fix.