packages feed

highlighting-kate 0.2.9 → 0.2.10

raw patch · 114 files changed

+728/−19 lines, 114 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Text.Highlighting.Kate.Syntax.Coffeescript: highlight :: String -> Either String [SourceLine]
+ Text.Highlighting.Kate.Syntax.Coffeescript: parseExpression :: GenParser Char SyntaxState LabeledSource
+ Text.Highlighting.Kate.Syntax.Coffeescript: syntaxExtensions :: String
+ Text.Highlighting.Kate.Syntax.Coffeescript: syntaxName :: String

Files

ParseSyntaxFiles.hs view
@@ -197,6 +197,7 @@       -- lineBeginContexts =        --   text $ "lineBeginContexts = " ++ (show $ map (\cont -> (contName cont, contLineBeginContext cont)) $ synContexts syntax)       startingContext = head (synContexts syntax)+      contextNull = text $ "parseRules \"\" = parseRules " ++ show (contName startingContext)       contextCatchAll = text $ "parseRules x = fail $ \"Unknown context\" ++ x"       contexts = map (mkRules syntax) $ synContexts syntax       initialContextStack = Map.fromList [(synLanguage syntax, [contName startingContext])]@@ -245,7 +246,7 @@                                                               parserType x == "RegExpr", parserDynamic x == False]   in  vcat $ intersperse (text "") $ [name, exts, mainFunction, parseExpression, mainParser, initState, sourceLineParser,                                        endLineParser, withAttr, styles, parseExpressionInternal, lists, regexes,-                                      defaultAttributes {- , lineBeginContexts -}] ++ contexts ++ [contextCatchAll]+                                      defaultAttributes {- , lineBeginContexts -}] ++ contexts ++ [contextNull, contextCatchAll]  mkAlternatives :: [Doc] -> Doc mkAlternatives docs = 
README view
@@ -75,17 +75,18 @@ update the Extra-Source-Files and Exposed-Modules sections of highlighting-kate.cabal before recompiling using 'cabal install'. -You can browse the available Kate syntax highlighting files at+To get the current Kate syntax highlighting files, clone the kate+repository: -    http://kate-editor.org/downloads/syntax_highlighting+    git clone git://anongit.kde.org/kate -or retrieve them all using Subversion:+The syntax definitions can then be found in -    svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdelibs/kate/syntax/data kate-data +    kate/part/syntax/data  There is information on the syntax highlighting definitions at -    http://kate-editor.org/article/writing_a_kate_highlighting_xml_file+    http://docs.kde.org/stable/en/kdesdk/kate/highlight.html  Thanks are due to all the authors of these syntax definitions. 
Text/Highlighting/Kate/Common.hs view
@@ -75,11 +75,9 @@                 let contexts = synStContexts st                 let lang = synStLanguage st                 case Map.lookup lang contexts of-                    Just conts -> case length conts of-                                        0 -> fail $ "Stack empty for language " ++ lang-                                        1 -> return ()  -- don't remove last member of stack-                                        _ -> do let newContexts = Map.adjust tail lang contexts-                                                updateState $ \st -> st { synStContexts = newContexts }+                    Just (_:_) -> updateState $ \st ->+                                    st{ synStContexts = Map.adjust tail lang contexts }+                    Just []    -> fail $ "Stack empty for language " ++ lang                     Nothing    -> fail $ "No context stack for language " ++ lang   currentContext :: GenParser tok SyntaxState String@@ -87,9 +85,8 @@                     let contexts = synStContexts st                     let lang = synStLanguage st                     case Map.lookup lang contexts of-                         Just conts -> if length conts < 1-                                          then fail $ "Stack empty for language " ++ lang-                                          else return (head conts)+                         Just []    -> return ""+                         Just (c:_) -> return c                          Nothing    -> fail $ "No context stack for language " ++ lang  withChildren :: GenParser tok SyntaxState LabeledSource
Text/Highlighting/Kate/Format.hs view
@@ -40,7 +40,7 @@          else if OptNumberLines `elem` opts                  then let lnTitle = title "Click to toggle line numbers"                           lnOnClick = strAttr "onclick" "with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"-                          nums = td ! [theclass "nums", lnTitle, lnOnClick] $ pre <<+                          nums = td ! [theclass "lineNumbers", lnTitle, lnOnClick] $ pre <<                                              (intersperse br $ map lineNum [startNum..(startNum + numberOfLines - 1)])                           lineNum n = if OptLineAnchors `elem` opts                                          then anchor ! [identifier $ show n] << show n
Text/Highlighting/Kate/Syntax.hs view
@@ -19,6 +19,7 @@ import qualified Text.Highlighting.Kate.Syntax.Changelog as Changelog import qualified Text.Highlighting.Kate.Syntax.Cisco as Cisco import qualified Text.Highlighting.Kate.Syntax.Cmake as Cmake+import qualified Text.Highlighting.Kate.Syntax.Coffeescript as Coffeescript import qualified Text.Highlighting.Kate.Syntax.Coldfusion as Coldfusion import qualified Text.Highlighting.Kate.Syntax.Commonlisp as Commonlisp import qualified Text.Highlighting.Kate.Syntax.Cpp as Cpp@@ -111,11 +112,11 @@  -- | List of supported languages. languages :: [String]-languages = ["Actionscript","Ada","Alert","Alert_indent","Ansys","Apache","Asn1","Asp","Awk","Bash","Bibtex","Boo","C","Changelog","Cisco","Cmake","Coldfusion","Commonlisp","Cpp","Cs","Css","Cue","D","Desktop","Diff","Djangotemplate","Doxygen","Doxygenlua","Dtd","Eiffel","Email","Erlang","Fortran","Fsharp","Fstab","Gap","Gdb","Gettext","Gnuassembler","Go","Haskell","Haxe","Html","Idl","Ilerpg","Ini","Java","Javadoc","Javascript","Json","Jsp","Latex","Lex","LiterateHaskell","Lua","M3u","Makefile","Mandoc","Matlab","Maxima","Mediawiki","Metafont","Mips","Modula2","Modula3","Monobasic","Nasm","Noweb","Objectivec","Objectivecpp","Ocaml","Octave","Pango","Pascal","Perl","Php","Pike","Postscript","Prolog","Python","R","Relaxngcompact","Rhtml","Ruby","Scala","Scheme","Sci","Sed","Sgml","Sql","SqlMysql","SqlPostgresql","Tcl","Texinfo","Verilog","Vhdl","Winehq","Wml","Xharbour","Xml","Xorg","Xslt","Xul","Yacc","Yaml"]+languages = ["Actionscript","Ada","Alert","Alert_indent","Ansys","Apache","Asn1","Asp","Awk","Bash","Bibtex","Boo","C","Changelog","Cisco","Cmake","Coffeescript","Coldfusion","Commonlisp","Cpp","Cs","Css","Cue","D","Desktop","Diff","Djangotemplate","Doxygen","Doxygenlua","Dtd","Eiffel","Email","Erlang","Fortran","Fsharp","Fstab","Gap","Gdb","Gettext","Gnuassembler","Go","Haskell","Haxe","Html","Idl","Ilerpg","Ini","Java","Javadoc","Javascript","Json","Jsp","Latex","Lex","LiterateHaskell","Lua","M3u","Makefile","Mandoc","Matlab","Maxima","Mediawiki","Metafont","Mips","Modula2","Modula3","Monobasic","Nasm","Noweb","Objectivec","Objectivecpp","Ocaml","Octave","Pango","Pascal","Perl","Php","Pike","Postscript","Prolog","Python","R","Relaxngcompact","Rhtml","Ruby","Scala","Scheme","Sci","Sed","Sgml","Sql","SqlMysql","SqlPostgresql","Tcl","Texinfo","Verilog","Vhdl","Winehq","Wml","Xharbour","Xml","Xorg","Xslt","Xul","Yacc","Yaml"]  -- | List of language extensions. languageExtensions :: [(String, String)]-languageExtensions = [("Actionscript", Actionscript.syntaxExtensions), ("Ada", Ada.syntaxExtensions), ("Alert", Alert.syntaxExtensions), ("Alert_indent", Alert_indent.syntaxExtensions), ("Ansys", Ansys.syntaxExtensions), ("Apache", Apache.syntaxExtensions), ("Asn1", Asn1.syntaxExtensions), ("Asp", Asp.syntaxExtensions), ("Awk", Awk.syntaxExtensions), ("Bash", Bash.syntaxExtensions), ("Bibtex", Bibtex.syntaxExtensions), ("Boo", Boo.syntaxExtensions), ("C", C.syntaxExtensions), ("Changelog", Changelog.syntaxExtensions), ("Cisco", Cisco.syntaxExtensions), ("Cmake", Cmake.syntaxExtensions), ("Coldfusion", Coldfusion.syntaxExtensions), ("Commonlisp", Commonlisp.syntaxExtensions), ("Cpp", Cpp.syntaxExtensions), ("Cs", Cs.syntaxExtensions), ("Css", Css.syntaxExtensions), ("Cue", Cue.syntaxExtensions), ("D", D.syntaxExtensions), ("Desktop", Desktop.syntaxExtensions), ("Diff", Diff.syntaxExtensions), ("Djangotemplate", Djangotemplate.syntaxExtensions), ("Doxygen", Doxygen.syntaxExtensions), ("Doxygenlua", Doxygenlua.syntaxExtensions), ("Dtd", Dtd.syntaxExtensions), ("Eiffel", Eiffel.syntaxExtensions), ("Email", Email.syntaxExtensions), ("Erlang", Erlang.syntaxExtensions), ("Fortran", Fortran.syntaxExtensions), ("Fsharp", Fsharp.syntaxExtensions), ("Fstab", Fstab.syntaxExtensions), ("Gap", Gap.syntaxExtensions), ("Gdb", Gdb.syntaxExtensions), ("Gettext", Gettext.syntaxExtensions), ("Gnuassembler", Gnuassembler.syntaxExtensions), ("Go", Go.syntaxExtensions), ("Haskell", Haskell.syntaxExtensions), ("Haxe", Haxe.syntaxExtensions), ("Html", Html.syntaxExtensions), ("Idl", Idl.syntaxExtensions), ("Ilerpg", Ilerpg.syntaxExtensions), ("Ini", Ini.syntaxExtensions), ("Java", Java.syntaxExtensions), ("Javadoc", Javadoc.syntaxExtensions), ("Javascript", Javascript.syntaxExtensions), ("Json", Json.syntaxExtensions), ("Jsp", Jsp.syntaxExtensions), ("Latex", Latex.syntaxExtensions), ("Lex", Lex.syntaxExtensions), ("LiterateHaskell", LiterateHaskell.syntaxExtensions), ("Lua", Lua.syntaxExtensions), ("M3u", M3u.syntaxExtensions), ("Makefile", Makefile.syntaxExtensions), ("Mandoc", Mandoc.syntaxExtensions), ("Matlab", Matlab.syntaxExtensions), ("Maxima", Maxima.syntaxExtensions), ("Mediawiki", Mediawiki.syntaxExtensions), ("Metafont", Metafont.syntaxExtensions), ("Mips", Mips.syntaxExtensions), ("Modula2", Modula2.syntaxExtensions), ("Modula3", Modula3.syntaxExtensions), ("Monobasic", Monobasic.syntaxExtensions), ("Nasm", Nasm.syntaxExtensions), ("Noweb", Noweb.syntaxExtensions), ("Objectivec", Objectivec.syntaxExtensions), ("Objectivecpp", Objectivecpp.syntaxExtensions), ("Ocaml", Ocaml.syntaxExtensions), ("Octave", Octave.syntaxExtensions), ("Pango", Pango.syntaxExtensions), ("Pascal", Pascal.syntaxExtensions), ("Perl", Perl.syntaxExtensions), ("Php", Php.syntaxExtensions), ("Pike", Pike.syntaxExtensions), ("Postscript", Postscript.syntaxExtensions), ("Prolog", Prolog.syntaxExtensions), ("Python", Python.syntaxExtensions), ("R", R.syntaxExtensions), ("Relaxngcompact", Relaxngcompact.syntaxExtensions), ("Rhtml", Rhtml.syntaxExtensions), ("Ruby", Ruby.syntaxExtensions), ("Scala", Scala.syntaxExtensions), ("Scheme", Scheme.syntaxExtensions), ("Sci", Sci.syntaxExtensions), ("Sed", Sed.syntaxExtensions), ("Sgml", Sgml.syntaxExtensions), ("Sql", Sql.syntaxExtensions), ("SqlMysql", SqlMysql.syntaxExtensions), ("SqlPostgresql", SqlPostgresql.syntaxExtensions), ("Tcl", Tcl.syntaxExtensions), ("Texinfo", Texinfo.syntaxExtensions), ("Verilog", Verilog.syntaxExtensions), ("Vhdl", Vhdl.syntaxExtensions), ("Winehq", Winehq.syntaxExtensions), ("Wml", Wml.syntaxExtensions), ("Xharbour", Xharbour.syntaxExtensions), ("Xml", Xml.syntaxExtensions), ("Xorg", Xorg.syntaxExtensions), ("Xslt", Xslt.syntaxExtensions), ("Xul", Xul.syntaxExtensions), ("Yacc", Yacc.syntaxExtensions), ("Yaml", Yaml.syntaxExtensions)]+languageExtensions = [("Actionscript", Actionscript.syntaxExtensions), ("Ada", Ada.syntaxExtensions), ("Alert", Alert.syntaxExtensions), ("Alert_indent", Alert_indent.syntaxExtensions), ("Ansys", Ansys.syntaxExtensions), ("Apache", Apache.syntaxExtensions), ("Asn1", Asn1.syntaxExtensions), ("Asp", Asp.syntaxExtensions), ("Awk", Awk.syntaxExtensions), ("Bash", Bash.syntaxExtensions), ("Bibtex", Bibtex.syntaxExtensions), ("Boo", Boo.syntaxExtensions), ("C", C.syntaxExtensions), ("Changelog", Changelog.syntaxExtensions), ("Cisco", Cisco.syntaxExtensions), ("Cmake", Cmake.syntaxExtensions), ("Coffeescript", Coffeescript.syntaxExtensions), ("Coldfusion", Coldfusion.syntaxExtensions), ("Commonlisp", Commonlisp.syntaxExtensions), ("Cpp", Cpp.syntaxExtensions), ("Cs", Cs.syntaxExtensions), ("Css", Css.syntaxExtensions), ("Cue", Cue.syntaxExtensions), ("D", D.syntaxExtensions), ("Desktop", Desktop.syntaxExtensions), ("Diff", Diff.syntaxExtensions), ("Djangotemplate", Djangotemplate.syntaxExtensions), ("Doxygen", Doxygen.syntaxExtensions), ("Doxygenlua", Doxygenlua.syntaxExtensions), ("Dtd", Dtd.syntaxExtensions), ("Eiffel", Eiffel.syntaxExtensions), ("Email", Email.syntaxExtensions), ("Erlang", Erlang.syntaxExtensions), ("Fortran", Fortran.syntaxExtensions), ("Fsharp", Fsharp.syntaxExtensions), ("Fstab", Fstab.syntaxExtensions), ("Gap", Gap.syntaxExtensions), ("Gdb", Gdb.syntaxExtensions), ("Gettext", Gettext.syntaxExtensions), ("Gnuassembler", Gnuassembler.syntaxExtensions), ("Go", Go.syntaxExtensions), ("Haskell", Haskell.syntaxExtensions), ("Haxe", Haxe.syntaxExtensions), ("Html", Html.syntaxExtensions), ("Idl", Idl.syntaxExtensions), ("Ilerpg", Ilerpg.syntaxExtensions), ("Ini", Ini.syntaxExtensions), ("Java", Java.syntaxExtensions), ("Javadoc", Javadoc.syntaxExtensions), ("Javascript", Javascript.syntaxExtensions), ("Json", Json.syntaxExtensions), ("Jsp", Jsp.syntaxExtensions), ("Latex", Latex.syntaxExtensions), ("Lex", Lex.syntaxExtensions), ("LiterateHaskell", LiterateHaskell.syntaxExtensions), ("Lua", Lua.syntaxExtensions), ("M3u", M3u.syntaxExtensions), ("Makefile", Makefile.syntaxExtensions), ("Mandoc", Mandoc.syntaxExtensions), ("Matlab", Matlab.syntaxExtensions), ("Maxima", Maxima.syntaxExtensions), ("Mediawiki", Mediawiki.syntaxExtensions), ("Metafont", Metafont.syntaxExtensions), ("Mips", Mips.syntaxExtensions), ("Modula2", Modula2.syntaxExtensions), ("Modula3", Modula3.syntaxExtensions), ("Monobasic", Monobasic.syntaxExtensions), ("Nasm", Nasm.syntaxExtensions), ("Noweb", Noweb.syntaxExtensions), ("Objectivec", Objectivec.syntaxExtensions), ("Objectivecpp", Objectivecpp.syntaxExtensions), ("Ocaml", Ocaml.syntaxExtensions), ("Octave", Octave.syntaxExtensions), ("Pango", Pango.syntaxExtensions), ("Pascal", Pascal.syntaxExtensions), ("Perl", Perl.syntaxExtensions), ("Php", Php.syntaxExtensions), ("Pike", Pike.syntaxExtensions), ("Postscript", Postscript.syntaxExtensions), ("Prolog", Prolog.syntaxExtensions), ("Python", Python.syntaxExtensions), ("R", R.syntaxExtensions), ("Relaxngcompact", Relaxngcompact.syntaxExtensions), ("Rhtml", Rhtml.syntaxExtensions), ("Ruby", Ruby.syntaxExtensions), ("Scala", Scala.syntaxExtensions), ("Scheme", Scheme.syntaxExtensions), ("Sci", Sci.syntaxExtensions), ("Sed", Sed.syntaxExtensions), ("Sgml", Sgml.syntaxExtensions), ("Sql", Sql.syntaxExtensions), ("SqlMysql", SqlMysql.syntaxExtensions), ("SqlPostgresql", SqlPostgresql.syntaxExtensions), ("Tcl", Tcl.syntaxExtensions), ("Texinfo", Texinfo.syntaxExtensions), ("Verilog", Verilog.syntaxExtensions), ("Vhdl", Vhdl.syntaxExtensions), ("Winehq", Winehq.syntaxExtensions), ("Wml", Wml.syntaxExtensions), ("Xharbour", Xharbour.syntaxExtensions), ("Xml", Xml.syntaxExtensions), ("Xorg", Xorg.syntaxExtensions), ("Xslt", Xslt.syntaxExtensions), ("Xul", Xul.syntaxExtensions), ("Yacc", Yacc.syntaxExtensions), ("Yaml", Yaml.syntaxExtensions)]  -- | Returns a list of languages appropriate for the given file extension. languagesByExtension :: String -> [String]@@ -154,6 +155,7 @@         "changelog" -> Changelog.highlight         "cisco" -> Cisco.highlight         "cmake" -> Cmake.highlight+        "coffeescript" -> Coffeescript.highlight         "coldfusion" -> Coldfusion.highlight         "commonlisp" -> Commonlisp.highlight         "cpp" -> Cpp.highlight
Text/Highlighting/Kate/Syntax/Actionscript.hs view
@@ -189,4 +189,6 @@   do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Ada.hs view
@@ -149,4 +149,6 @@ parseRules "Comment" =    pzero +parseRules "" = parseRules "Default"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Alert.hs view
@@ -77,4 +77,6 @@   do (attr, result) <- ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" list_alerts >>= withAttribute "Alert"))      return (attr, result) +parseRules "" = parseRules "Normal Text"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Alert_indent.hs view
@@ -77,4 +77,6 @@   do (attr, result) <- ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" list_alerts >>= withAttribute "Alert"))      return (attr, result) +parseRules "" = parseRules "Normal Text"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Ansys.hs view
@@ -194,4 +194,6 @@                         ((pDetectChar False ')' >>= withAttribute "Keyword") >>~ (popContext)))      return (attr, result) +parseRules "" = parseRules "Normal Text"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Apache.hs view
@@ -154,4 +154,6 @@ parseRules "Alert" =    pzero +parseRules "" = parseRules "apache"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Asn1.hs view
@@ -86,4 +86,6 @@ parseRules "Comment" =    pzero +parseRules "" = parseRules "Normal Text"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Asp.hs view
@@ -324,4 +324,6 @@   do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext))      return (attr, result) +parseRules "" = parseRules "nosource"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Awk.hs view
@@ -117,4 +117,6 @@   do (attr, result) <- ((Text.Highlighting.Kate.Syntax.Alert.parseExpression))      return (attr, result) +parseRules "" = parseRules "Base"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Bash.hs view
@@ -726,4 +726,6 @@                         ((parseRules "FindSubstitutions")))      return (attr, result) +parseRules "" = parseRules "Start"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Bibtex.hs view
@@ -164,4 +164,6 @@                         ((pRegExpr regex_'5c'5c'28'5ba'2dzA'2dZ'40'5d'2b'7c'5b'5e_'5d'29 >>= withAttribute "LatexCommand")))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Boo.hs view
@@ -296,4 +296,6 @@                         ((pDetectChar False '"' >>= withAttribute "Raw String") >>~ (popContext)))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/C.hs view
@@ -247,4 +247,6 @@                         ((pFirstNonSpace >> pRegExpr regex_'23'5cs'2aendif >>= withAttribute "Comment") >>~ (popContext)))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Changelog.hs view
@@ -93,4 +93,6 @@   do (attr, result) <- ((pRegExpr regex_'2e'2a'3a >>= withAttribute "Entry") >>~ (popContext))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Cisco.hs view
@@ -164,4 +164,6 @@   do (attr, result) <- ((pRegExpr regex_'5c'24'5bA'2dZa'2dz0'2d9'5f'3f'5d'2b >>= withAttribute "Parameter") >>~ (popContext))      return (attr, result) +parseRules "" = parseRules "Base"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Cmake.hs view
@@ -152,4 +152,6 @@                         ((parseRules "Detect Variables")))      return (attr, result) +parseRules "" = parseRules "Normal Text"+ parseRules x = fail $ "Unknown context" ++ x
+ Text/Highlighting/Kate/Syntax/Coffeescript.hs view
@@ -0,0 +1,217 @@+{- This module was generated from data in the Kate syntax highlighting file coffeescript.xml, version 1.1,+   by  Max Shawabkeh (max99x@gmail.com) -}++module Text.Highlighting.Kate.Syntax.Coffeescript ( highlight, parseExpression, syntaxName, syntaxExtensions ) where+import Text.Highlighting.Kate.Definitions+import Text.Highlighting.Kate.Common+import qualified Text.Highlighting.Kate.Syntax.Alert_indent+import qualified Text.Highlighting.Kate.Syntax.Javascript+import Text.ParserCombinators.Parsec+import Control.Monad (when)+import Data.Map (fromList)+import Data.Maybe (fromMaybe, maybeToList)++import qualified Data.Set as Set+-- | Full name of language.+syntaxName :: String+syntaxName = "CofeeScript"++-- | Filename extensions for this language.+syntaxExtensions :: String+syntaxExtensions = "Cakefile;*.coffee;*.coco"++-- | Highlight source code using this syntax definition.+highlight :: String -> Either String [SourceLine]+highlight input =+  case runParser parseSource startingState "source" input of+    Left err     -> Left $ show err+    Right result -> Right result++-- | Parse an expression using appropriate local context.+parseExpression :: GenParser Char SyntaxState LabeledSource+parseExpression = do+  st <- getState+  let oldLang = synStLanguage st+  setState $ st { synStLanguage = "CofeeScript" }+  context <- currentContext <|> (pushContext "Normal" >> currentContext)+  result <- parseRules context+  updateState $ \st -> st { synStLanguage = oldLang }+  return result++parseSource = do +  lineContents <- lookAhead wholeLine+  updateState $ \st -> st { synStCurrentLine = lineContents }+  result <- manyTill parseSourceLine eof+  return $ map normalizeHighlighting result++startingState = SyntaxState {synStContexts = fromList [("CofeeScript",["Normal"])], synStLanguage = "CofeeScript", synStCurrentLine = "", synStCharsParsedInLine = 0, synStPrevChar = '\n', synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}++parseSourceLine = manyTill parseExpressionInternal pEndLine++pEndLine = do+  lookAhead $ newline <|> (eof >> return '\n')+  context <- currentContext+  case context of+    "Normal" -> return () >> pHandleEndLine+    "Multiline Regex" -> return () >> pHandleEndLine+    "Class" -> return () >> pHandleEndLine+    "Comment" -> (popContext) >> pEndLine+    "Multiline Comment" -> return () >> pHandleEndLine+    "String" -> return () >> pHandleEndLine+    "Rich String" -> return () >> pHandleEndLine+    "Heredoc" -> return () >> pHandleEndLine+    "Rich Heredoc" -> return () >> pHandleEndLine+    "Embedding" -> return () >> pHandleEndLine+    "Javascript" -> return () >> pHandleEndLine+    _ -> pHandleEndLine++withAttribute attr txt = do+  when (null txt) $ fail "Parser matched no text"+  let labs = attr : maybeToList (lookup attr styles)+  st <- getState+  let oldCharsParsed = synStCharsParsedInLine st+  let prevchar = if null txt then '\n' else last txt+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt, synStPrevChar = prevchar } +  return (labs, txt)++styles = [("Keyword","kw"),("Function","fu"),("Decimal","dv"),("Float","fl"),("Oct","bn"),("Hex","bn"),("String","st"),("Comment","co"),("Symbol","kw"),("Embedding","ch"),("Accessor","dt"),("Class","dt"),("Javascript","al"),("Regex","st"),("Reserved","al"),("Value Keywords","ot"),("Globals","ot")]++parseExpressionInternal = do+  context <- currentContext+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))++list_value'5fkeywords = Set.fromList $ words $ "false true yes no on off undefined null NaN Infinity"+list_keywords = Set.fromList $ words $ "return break continue throw for while until loop if else unless switch when then and or in of by is isnt not typeof delete where super try catch finally try catch finally constructor"+list_class'5fkeywords = Set.fromList $ words $ "class extends new instanceof"+list_reserved = Set.fromList $ words $ "case default function var void with const let enum export import native __hasProp __extends __slice __bind __indexOf"+list_globals = Set.fromList $ words $ "Object Number Boolean Array String RegExp Function Date Math eval setInterval clearInterval setTimeout clearTimeout isFinite isNaN parseFloat parseInt escape unescape console encodeURI encodeURIComponent decodeURI decodeURIComponent"+list_browser'5fglobals = Set.fromList $ words $ "window document navigator location history screen alert prompt"+list_nodejs'5fglobals = Set.fromList $ words $ "process GLOBAL require exports"++regex_'28'40'5b'5f'24a'2dzA'2dZ'5d'5b'24'5cw'5d'2b'7c'5cbthis'29'5cb = compileRegex "(@[_$a-zA-Z][$\\w]+|\\bthis)\\b"+regex_'28'5c'28'28'5c'27'5b'5e'27'5d'2a'27'7c'22'5b'5e'22'5d'2a'22'7c'5b'5e'28'29'5d'29'2a'5c'29'29'3f'5cs'2a'28'2d'7c'3d'29'3e = compileRegex "(\\((\\'[^']*'|\"[^\"]*\"|[^()])*\\))?\\s*(-|=)>"+regex_'5b'5f'24a'2dz'5d'5b'24'5cw'5d'2b'5cb = compileRegex "[_$a-z][$\\w]+\\b"+regex_'2f'2f'2f = compileRegex "///"+regex_'2f'28'5b'5e'2f'5c'5c'5cr'5cn'5d'7c'5c'5c'2e'29'2a'2f'5bmig'5d'7b0'2c3'7d = compileRegex "/([^/\\\\\\r\\n]|\\\\.)*/[mig]{0,3}"+regex_'2f'2f'2f'5bmig'5d'7b0'2c3'7d = compileRegex "///[mig]{0,3}"+regex_'5b'40'24'3a'2e'5cw'5c'5b'5c'5d'5d'2b = compileRegex "[@$:.\\w\\[\\]]+"++defaultAttributes = [("Normal","Normal"),("Multiline Regex","Regex"),("Class","Normal"),("Comment","Comment"),("Multiline Comment","Comment"),("String","String"),("Rich String","String"),("Heredoc","String"),("Rich Heredoc","String"),("Embedding","Normal"),("Javascript","Javascript")]++parseRules "Normal" = +  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal"))+                        <|>+                        ((pFloat >>= withAttribute "Float"))+                        <|>+                        ((pInt >>= withAttribute "Decimal"))+                        <|>+                        ((pHlCOct >>= withAttribute "Oct"))+                        <|>+                        ((pHlCHex >>= withAttribute "Hex"))+                        <|>+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\#'" list_keywords >>= withAttribute "Keyword"))+                        <|>+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\#'" list_class'5fkeywords >>= withAttribute "Keyword") >>~ pushContext "Class")+                        <|>+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\#'" list_value'5fkeywords >>= withAttribute "Value Keywords"))+                        <|>+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\#'" list_reserved >>= withAttribute "Reserved"))+                        <|>+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\#'" list_globals >>= withAttribute "Globals"))+                        <|>+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\#'" list_browser'5fglobals >>= withAttribute "Browser Globals"))+                        <|>+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\#'" list_nodejs'5fglobals >>= withAttribute "Node.js Globals"))+                        <|>+                        ((pRegExpr regex_'28'40'5b'5f'24a'2dzA'2dZ'5d'5b'24'5cw'5d'2b'7c'5cbthis'29'5cb >>= withAttribute "Accessor"))+                        <|>+                        ((pRegExpr regex_'28'5c'28'28'5c'27'5b'5e'27'5d'2a'27'7c'22'5b'5e'22'5d'2a'22'7c'5b'5e'28'29'5d'29'2a'5c'29'29'3f'5cs'2a'28'2d'7c'3d'29'3e >>= withAttribute "Function"))+                        <|>+                        ((pRegExpr regex_'5b'5f'24a'2dz'5d'5b'24'5cw'5d'2b'5cb >>= withAttribute "Identifier"))+                        <|>+                        ((pString False "'''" >>= withAttribute "String") >>~ pushContext "Heredoc")+                        <|>+                        ((pString False "\"\"\"" >>= withAttribute "String") >>~ pushContext "Rich Heredoc")+                        <|>+                        ((pDetectChar False '\'' >>= withAttribute "String") >>~ pushContext "String")+                        <|>+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "Rich String")+                        <|>+                        ((pDetectChar False '`' >>= withAttribute "Javascript") >>~ pushContext "Javascript")+                        <|>+                        ((pString False "###" >>= withAttribute "Comment") >>~ pushContext "Multiline Comment")+                        <|>+                        ((pDetectChar False '#' >>= withAttribute "Comment") >>~ pushContext "Comment")+                        <|>+                        ((pRegExpr regex_'2f'2f'2f >>= withAttribute "Regex") >>~ pushContext "Multiline Regex")+                        <|>+                        ((pRegExpr regex_'2f'28'5b'5e'2f'5c'5c'5cr'5cn'5d'7c'5c'5c'2e'29'2a'2f'5bmig'5d'7b0'2c3'7d >>= withAttribute "Regex"))+                        <|>+                        ((pAnyChar "():!%&+,-/.*<=>?[]|~^;{}" >>= withAttribute "Symbol")))+     return (attr, result)++parseRules "Multiline Regex" = +  do (attr, result) <- (((pHlCStringChar >>= withAttribute "Regex"))+                        <|>+                        ((pDetectChar False '#' >>= withAttribute "Comment") >>~ pushContext "Comment")+                        <|>+                        ((pRegExpr regex_'2f'2f'2f'5bmig'5d'7b0'2c3'7d >>= withAttribute "Regex") >>~ (popContext)))+     return (attr, result)++parseRules "Class" = +  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal"))+                        <|>+                        ((pRegExpr regex_'5b'40'24'3a'2e'5cw'5c'5b'5c'5d'5d'2b >>= withAttribute "Class") >>~ (popContext)))+     return (attr, result)++parseRules "Comment" = +  do (attr, result) <- ((Text.Highlighting.Kate.Syntax.Alert_indent.parseExpression))+     return (attr, result)++parseRules "Multiline Comment" = +  do (attr, result) <- (((pString False "###" >>= withAttribute "Comment") >>~ (popContext))+                        <|>+                        ((Text.Highlighting.Kate.Syntax.Alert_indent.parseExpression)))+     return (attr, result)++parseRules "String" = +  do (attr, result) <- (((pHlCStringChar >>= withAttribute "String"))+                        <|>+                        ((pDetectChar False '\'' >>= withAttribute "String") >>~ (popContext)))+     return (attr, result)++parseRules "Rich String" = +  do (attr, result) <- (((pHlCStringChar >>= withAttribute "String"))+                        <|>+                        ((pDetect2Chars False '#' '{' >>= withAttribute "Embedding") >>~ pushContext "Embedding")+                        <|>+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext)))+     return (attr, result)++parseRules "Heredoc" = +  do (attr, result) <- (((pHlCStringChar >>= withAttribute "String"))+                        <|>+                        ((pString False "'''" >>= withAttribute "String") >>~ (popContext)))+     return (attr, result)++parseRules "Rich Heredoc" = +  do (attr, result) <- (((pHlCStringChar >>= withAttribute "String"))+                        <|>+                        ((pDetect2Chars False '#' '{' >>= withAttribute "Embedding") >>~ pushContext "Embedding")+                        <|>+                        ((pString False "\"\"\"" >>= withAttribute "String") >>~ (popContext)))+     return (attr, result)++parseRules "Embedding" = +  do (attr, result) <- ((pDetectChar False '}' >>= withAttribute "Embedding") >>~ (popContext))+     return (attr, result)++parseRules "Javascript" = +  do (attr, result) <- (((pDetectChar False '`' >>= withAttribute "Javascript") >>~ (popContext))+                        <|>+                        ((Text.Highlighting.Kate.Syntax.Javascript.parseExpression)))+     return (attr, result)++parseRules "" = parseRules "Normal"++parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Coldfusion.hs view
@@ -344,4 +344,6 @@                         ((pRegExpr regex_'27'5b'5e'27'5d'2a'27 >>= withAttribute "Attribute Values")))      return (attr, result) +parseRules "" = parseRules "Normal Text"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Commonlisp.hs view
@@ -150,4 +150,6 @@                         ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext)))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Cpp.hs view
@@ -262,4 +262,6 @@                         ((pFirstNonSpace >> pRegExpr regex_'23'5cs'2aendif >>= withAttribute "Comment") >>~ (popContext)))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Cs.hs view
@@ -172,4 +172,6 @@   do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Css.hs view
@@ -296,4 +296,6 @@                         ((pDetectIdentifier >>= withAttribute "String")))      return (attr, result) +parseRules "" = parseRules "Base"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Cue.hs view
@@ -103,4 +103,6 @@ parseRules "Comment" =    pzero +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/D.hs view
@@ -641,4 +641,6 @@                         ((Text.Highlighting.Kate.Syntax.D.parseExpression)))      return (attr, result) +parseRules "" = parseRules "normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Desktop.hs view
@@ -91,4 +91,6 @@ parseRules "Comment" =    pzero +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Diff.hs view
@@ -217,4 +217,6 @@ parseRules "ChangedNew" =    pzero +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Djangotemplate.hs view
@@ -497,4 +497,6 @@                         ((parseRules "FindEntityRefs")))      return (attr, result) +parseRules "" = parseRules "Start"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Doxygen.hs view
@@ -451,4 +451,6 @@                         ((pRegExpr regex_'5b'40'5c'5c'5denddot >>= withAttribute "Tags") >>~ (popContext)))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Doxygenlua.hs view
@@ -364,4 +364,6 @@   do (attr, result) <- ((pDetectChar False '"' >>= withAttribute "Types") >>~ (popContext >> popContext))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Dtd.hs view
@@ -161,4 +161,6 @@                         ((pDetectIdentifier >>= withAttribute "Comment")))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Eiffel.hs view
@@ -102,4 +102,6 @@ parseRules "Documentation" =    pzero +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Email.hs view
@@ -245,4 +245,6 @@                         ((pColumn 0 >> pRegExpr regex_'28'2d_'29'3f'2d'2d'28'2d'2d'2e'2a'29'3f >>= withAttribute "marker")))      return (attr, result) +parseRules "" = parseRules "headder"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Erlang.hs view
@@ -151,4 +151,6 @@                         ((pDetectIdentifier >>= withAttribute "Comment")))      return (attr, result) +parseRules "" = parseRules "Normal Text"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Fortran.hs view
@@ -387,4 +387,6 @@                         ((popContext >> popContext) >> return ([], "")))      return (attr, result) +parseRules "" = parseRules "default"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Fsharp.hs view
@@ -252,4 +252,6 @@                         ((pRegExpr regex_'5c'5c'3c'3a'5bA'2dZa'2dz'5c0300'2d'5c0326'5c0330'2d'5c0366'5c0370'2d'5c0377'5f'5d'5bA'2dZa'2dz'5c0300'2d'5c0326'5c0330'2d'5c0366'5c0370'2d'5c03770'2d9'5f'27'5d'2a'3c >>= withAttribute "Escaped characters")))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Fstab.hs view
@@ -140,4 +140,6 @@ parseRules "comment" =    pzero +parseRules "" = parseRules "device"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Gap.hs view
@@ -173,4 +173,6 @@                         ((pRegExpr regex_'22'28'5b'5e'22'5d'7c'22'22'7c'5c'5c'22'29'2a >>= withAttribute "Incomplete String")))      return (attr, result) +parseRules "" = parseRules "Top_Level"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Gdb.hs view
@@ -119,4 +119,6 @@ parseRules "thread" =    pzero +parseRules "" = parseRules "apache"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Gettext.hs view
@@ -274,4 +274,6 @@                         ((lookAhead (pRegExpr regex_'2e) >> return ([],"") ) >>~ (popContext >> popContext >> popContext)))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Gnuassembler.hs view
@@ -151,4 +151,6 @@ parseRules "Some Context" =    pzero +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Go.hs view
@@ -136,4 +136,6 @@                         ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext)))      return (attr, result) +parseRules "" = parseRules "normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Haskell.hs view
@@ -162,4 +162,6 @@   do (attr, result) <- ((pDetectChar False '`' >>= withAttribute "Function Infix") >>~ (popContext))      return (attr, result) +parseRules "" = parseRules "code"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Haxe.hs view
@@ -157,4 +157,6 @@   do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext))      return (attr, result) +parseRules "" = parseRules "normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Html.hs view
@@ -374,4 +374,6 @@                         ((parseRules "FindEntityRefs")))      return (attr, result) +parseRules "" = parseRules "Start"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Idl.hs view
@@ -156,4 +156,6 @@                         ((pColumn 0 >> pString False "#endif" >>= withAttribute "Comment") >>~ (popContext)))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Ilerpg.hs view
@@ -560,4 +560,6 @@                         ((parseRules "CommonCode")))      return (attr, result) +parseRules "" = parseRules "Default"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Ini.hs view
@@ -108,4 +108,6 @@                         ((pDetectIdentifier >>= withAttribute "Comment")))      return (attr, result) +parseRules "" = parseRules "ini"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Java.hs view
@@ -232,4 +232,6 @@   do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Javadoc.hs view
@@ -246,4 +246,6 @@                         ((Text.Highlighting.Kate.Syntax.Html.parseExpression)))      return (attr, result) +parseRules "" = parseRules "Start"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Javascript.hs view
@@ -251,4 +251,6 @@                         ((lookAhead (pAnyChar "(){}:!%&+,-/.*<=>?[]|~^;") >> return ([],"") ) >>~ (popContext)))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Json.hs view
@@ -153,4 +153,6 @@                         ((pRegExpr regex_'2d'3f'28'3f'3a'5b0'2d9'5d'7c'5b1'2d9'5d'5b0'2d9'5d'2b'29'28'3f'3a'5beE'5d'5b'2b'2d'5d'3f'5b0'2d9'5d'2b'29'3f >>= withAttribute "Style_Decimal")))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Jsp.hs view
@@ -450,4 +450,6 @@                         ((pRegExpr regex_'5c'2f'2a'2d'2d'3e >>= withAttribute "Html Comment") >>~ (popContext)))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Latex.hs view
@@ -114,7 +114,7 @@   updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt, synStPrevChar = prevchar }    return (labs, txt) -styles = [("Keyword","kw"),("Comment","co"),("Error","al"),("Math","dv"),("Keyword Mathmode","kw"),("Environment","fu"),("Verbatim","st"),("Region Marker","re"),("Alert","al"),("Structure Text","kw"),("Structure Keyword","kw"),("Structure Math","kw"),("Structure Keyword Mathmode","kw")]+styles = [("Comment","co"),("Error","al"),("Region Marker","re"),("Alert","al")]  parseExpressionInternal = do   context <- currentContext@@ -766,5 +766,7 @@                         <|>                         ((pString False "\\KateResetHL" >>= withAttribute "Comment") >>~ pushContext "Normal Text"))      return (attr, result)++parseRules "" = parseRules "Normal Text"  parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Lex.hs view
@@ -254,4 +254,6 @@                         ((Text.Highlighting.Kate.Syntax.Cpp.parseExpression)))      return (attr, result) +parseRules "" = parseRules "Pre Start"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/LiterateHaskell.hs view
@@ -116,4 +116,6 @@   do (attr, result) <- ((pDetect2Chars False '-' '}' >>= withAttribute "Comment") >>~ (popContext >> popContext >> popContext))      return (attr, result) +parseRules "" = parseRules "text"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Lua.hs view
@@ -197,4 +197,6 @@ parseRules "Error" =    pzero +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/M3u.hs view
@@ -89,4 +89,6 @@                         ((pRegExpr regex_'2c'2e'2a'24 >>= withAttribute "Descr") >>~ (popContext)))      return (attr, result) +parseRules "" = parseRules "M3U"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Makefile.hs view
@@ -160,4 +160,6 @@                         ((pRegExpr regex_'5b'5f'5cw'2d'5d'2a'5cb >>= withAttribute "Commands") >>~ (popContext)))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Mandoc.hs view
@@ -102,4 +102,6 @@   do (attr, result) <- ((parseRules "Directive##Roff"))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Matlab.hs view
@@ -139,4 +139,6 @@   do (attr, result) <- ((pRegExpr regex_'27'2b >>= withAttribute "Operator") >>~ (popContext))      return (attr, result) +parseRules "" = parseRules "_normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Maxima.hs view
@@ -119,4 +119,6 @@                         ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext)))      return (attr, result) +parseRules "" = parseRules "Normal Text"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Mediawiki.hs view
@@ -216,4 +216,6 @@   do (attr, result) <- ((pString False "</pre>" >>= withAttribute "Wiki-Tag") >>~ (popContext))      return (attr, result) +parseRules "" = parseRules "normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Metafont.hs view
@@ -287,4 +287,6 @@                         ((pDetectChar False '\215' >>= withAttribute "Bullet")))      return (attr, result) +parseRules "" = parseRules "Normal Text"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Mips.hs view
@@ -125,4 +125,6 @@                         ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext)))      return (attr, result) +parseRules "" = parseRules "normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Modula2.hs view
@@ -119,4 +119,6 @@   do (attr, result) <- ((pString False "$*)" >>= withAttribute "Directive") >>~ pushContext "Prep1")      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Modula3.hs view
@@ -136,4 +136,6 @@   do (attr, result) <- ((pDetect2Chars False '*' '>' >>= withAttribute "Pragma") >>~ (popContext))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Monobasic.hs view
@@ -220,4 +220,6 @@ parseRules "Comment" =    pzero +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Nasm.hs view
@@ -132,4 +132,6 @@   do (attr, result) <- ((pAnyChar "\"'" >>= withAttribute "String") >>~ (popContext))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Noweb.hs view
@@ -120,4 +120,6 @@                         ((pRegExpr regex_'3c'3c'2e'2a'5b'5e'40'5d'3e'3e'28'3f'21'3d'29 >>= withAttribute "SectionName")))      return (attr, result) +parseRules "" = parseRules "RawDocumentation"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Objectivec.hs view
@@ -160,4 +160,6 @@   do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> popContext))      return (attr, result) +parseRules "" = parseRules "Default"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Objectivecpp.hs view
@@ -286,4 +286,6 @@                         ((pFirstNonSpace >> pRegExpr regex_'23'5cs'2aendif >>= withAttribute "Comment") >>~ (popContext)))      return (attr, result) +parseRules "" = parseRules "Default"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Ocaml.hs view
@@ -245,4 +245,6 @@                         ((pRegExpr regex_'5c'5c'3c'3a'5bA'2dZa'2dz'5c0300'2d'5c0326'5c0330'2d'5c0366'5c0370'2d'5c0377'5f'5d'5bA'2dZa'2dz'5c0300'2d'5c0326'5c0330'2d'5c0366'5c0370'2d'5c03770'2d9'5f'27'5d'2a'3c >>= withAttribute "Escaped characters")))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Octave.hs view
@@ -211,4 +211,6 @@   do (attr, result) <- ((pRegExpr regex_'27'2b >>= withAttribute "Operator") >>~ (popContext))      return (attr, result) +parseRules "" = parseRules "_normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Pango.hs view
@@ -228,4 +228,6 @@                         ((pRegExpr regex_'5cS >>= withAttribute "Error") >>~ (popContext >> popContext)))      return (attr, result) +parseRules "" = parseRules "Start"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Pascal.hs view
@@ -166,4 +166,6 @@   do (attr, result) <- ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" list_attention >>= withAttribute "Alert"))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Perl.hs view
@@ -918,4 +918,6 @@                         ((pDetectIdentifier >>= withAttribute "Comment")))      return (attr, result) +parseRules "" = parseRules "normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Php.hs view
@@ -327,4 +327,6 @@                         ((pRegExpr regex_'5c'7b'5c'24'5ba'2dzA'2dZ'5f'5cx7f'2d'5cxff'5d'5ba'2dzA'2dZ0'2d9'5f'5cx7f'2d'5cxff'5d'2a'28'5c'5b'28'5b0'2d9'5d'2a'7c'22'5ba'2dzA'2dZ'5f'5d'2a'22'29'7c'27'5ba'2dzA'2dZ'5f'5d'2a'27'7c'5c'5d'29'2a'28'2d'3e'5ba'2dzA'2dZ'5f'5cx7f'2d'5cxff'5d'5ba'2dzA'2dZ0'2d9'5f'5cx7f'2d'5cxff'5d'2a'28'5c'5b'5ba'2dzA'2dZ0'2d9'5f'5d'2a'5c'5d'29'2a'28'5c'5b'28'5b0'2d9'5d'2a'7c'22'5ba'2dzA'2dZ'5f'5d'2a'22'29'7c'27'5ba'2dzA'2dZ'5f'5d'2a'27'7c'5c'5d'29'2a'29'2a'5c'7d >>= withAttribute "Variable")))      return (attr, result) +parseRules "" = parseRules "start"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Pike.hs view
@@ -177,4 +177,6 @@                         ((pFirstNonSpace >> pRegExpr regex_'23'5cs'2aendif >>= withAttribute "Comment") >>~ (popContext)))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Postscript.hs view
@@ -103,4 +103,6 @@   do (attr, result) <- ((pDetectChar False ')' >>= withAttribute "String") >>~ (popContext))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Prolog.hs view
@@ -130,4 +130,6 @@   do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext))      return (attr, result) +parseRules "" = parseRules "normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Python.hs view
@@ -282,4 +282,6 @@                         ((pDetectChar False '"' >>= withAttribute "Raw String") >>~ (popContext)))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/R.hs view
@@ -203,4 +203,6 @@                         ((pDetectChar False ']' >>= withAttribute "Symbol")))      return (attr, result) +parseRules "" = parseRules "level0"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Relaxngcompact.hs view
@@ -109,4 +109,6 @@   do (attr, result) <- ((lookAhead (pDetectChar False '=') >> return ([],"") ) >>~ (popContext >> popContext))      return (attr, result) +parseRules "" = parseRules "Normal Text"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Rhtml.hs view
@@ -1342,4 +1342,6 @@ parseRules "DATA" =    pzero +parseRules "" = parseRules "Start"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Ruby.hs view
@@ -1079,4 +1079,6 @@ parseRules "DATA" =    pzero +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Scala.hs view
@@ -191,4 +191,6 @@   do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Scheme.hs view
@@ -208,4 +208,6 @@                         ((parseRules "Default")))      return (attr, result) +parseRules "" = parseRules "Level0"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Sci.hs view
@@ -101,4 +101,6 @@                         ((pRangeDetect '"' '"' >>= withAttribute "String")))      return (attr, result) +parseRules "" = parseRules "main"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Sed.hs view
@@ -441,4 +441,6 @@ parseRules "Error" =    pzero +parseRules "" = parseRules "BeginningOfLine"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Sgml.hs view
@@ -107,4 +107,6 @@   do (attr, result) <- ((pString False "-->" >>= withAttribute "Comment") >>~ (popContext))      return (attr, result) +parseRules "" = parseRules "Normal Text"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Sql.hs view
@@ -155,4 +155,6 @@ parseRules "SQL*Plus directive to include file" =    pzero +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/SqlMysql.hs view
@@ -176,4 +176,6 @@ parseRules "Preprocessor" =    pzero +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/SqlPostgresql.hs view
@@ -189,4 +189,6 @@ parseRules "Preprocessor" =    pzero +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Tcl.hs view
@@ -142,4 +142,6 @@                         ((lookAhead (pRegExpr regex_'2e) >> return ([],"") ) >>~ (popContext)))      return (attr, result) +parseRules "" = parseRules "Base"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Texinfo.hs view
@@ -116,4 +116,6 @@                         ((parseRules "Normal Text")))      return (attr, result) +parseRules "" = parseRules "Normal Text"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Verilog.hs view
@@ -204,4 +204,6 @@   do (attr, result) <- ((pRegExpr regex_'5b'5e_'5d'2b >>= withAttribute "Data Type") >>~ (popContext))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Vhdl.hs view
@@ -386,4 +386,6 @@                         ((parseRules "generalDetection")))      return (attr, result) +parseRules "" = parseRules "start"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Winehq.hs view
@@ -101,4 +101,6 @@                         ((pRegExpr regex_'3b'2e'2a'24 >>= withAttribute "Comment")))      return (attr, result) +parseRules "" = parseRules "Normal"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Wml.hs view
@@ -216,4 +216,6 @@   do (attr, result) <- ((pDetectChar False '$' >>= withAttribute "Variable Substitution") >>~ pushContext "variableSubstitution")      return (attr, result) +parseRules "" = parseRules "text"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Xharbour.hs view
@@ -169,4 +169,6 @@                         ((pFirstNonSpace >> pRegExpr regex_END'28CLASS'29'3f_'2a'24 >>= withAttribute "Keyword") >>~ (popContext)))      return (attr, result) +parseRules "" = parseRules "TopLevel"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Xml.hs view
@@ -251,4 +251,6 @@                         ((parseRules "FindEntityRefs")))      return (attr, result) +parseRules "" = parseRules "Start"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Xorg.hs view
@@ -128,4 +128,6 @@                         ((pDetectIdentifier >>= withAttribute "Comment")))      return (attr, result) +parseRules "" = parseRules "xorg"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Xslt.hs view
@@ -327,4 +327,6 @@                         ((parseRules "detectEntRef")))      return (attr, result) +parseRules "" = parseRules "normalText"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Xul.hs view
@@ -403,4 +403,6 @@                         ((pDetectSpaces >>= withAttribute "Region Marker")))      return (attr, result) +parseRules "" = parseRules "Start"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Yacc.hs view
@@ -248,4 +248,6 @@                         ((pDetectChar False '$' >>= withAttribute "Directive") >>~ (popContext >> popContext)))      return (attr, result) +parseRules "" = parseRules "Pre Start"+ parseRules x = fail $ "Unknown context" ++ x
Text/Highlighting/Kate/Syntax/Yaml.hs view
@@ -323,4 +323,6 @@ parseRules "comment" =    pzero +parseRules "" = parseRules "normal"+ parseRules x = fail $ "Unknown context" ++ x
changelog view
@@ -1,3 +1,15 @@+highlighting-kate 0.2.10 (16 Jul 2011)++  * Fixed class on line numbers td.  (Thanks to tantignac)+  * Allow empty context stack.+    `currentContext` returns "" if stack is empty, and this is+    treated as the first context in the list by `parseRules`.+    This fixes a problem with syntax definitions like erlang.xml,+    which has `#pop` as `lineEndContext` in the first context,+    leading to an infinite loop with the old code.+  * Syntax highlighting for CoffeeScript (thanks to igstan).+  * Fixed links in README (thanks to John Gabriele).+ highlighting-kate 0.2.9 (29 Jan 2011)    * Added OptInline to FormatOptions.  Inline code is formatted
highlighting-kate.cabal view
@@ -1,5 +1,5 @@ Name:                highlighting-kate-Version:             0.2.9+Version:             0.2.10 Cabal-Version:       >= 1.2 Build-Type:          Simple Category:            Text@@ -44,6 +44,7 @@                      xml/changelog.xml                      xml/cisco.xml                      xml/cmake.xml+                     xml/coffeescript.xml                      xml/coldfusion.xml                      xml/commonlisp.xml                      xml/cpp.xml@@ -177,6 +178,7 @@                      Text.Highlighting.Kate.Syntax.Changelog                      Text.Highlighting.Kate.Syntax.Cisco                      Text.Highlighting.Kate.Syntax.Cmake+                     Text.Highlighting.Kate.Syntax.Coffeescript                      Text.Highlighting.Kate.Syntax.Coldfusion                      Text.Highlighting.Kate.Syntax.Commonlisp                      Text.Highlighting.Kate.Syntax.Cpp
+ xml/coffeescript.xml view
@@ -0,0 +1,267 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language SYSTEM "language.dtd">++<language name="CofeeScript"+          version="1.1"+          kateversion="2.4"+          section="Scripts"+          extensions="Cakefile;*.coffee;*.coco"+          mimetype="text/x-cofeescript;application/x-cofeescript"+          indenter="python"+          casesensitive="1"+          author="Max Shawabkeh (max99x@gmail.com)"+          license="MIT">+  <highlighting>+    <!-- Built-in constants. -->+    <list name="value_keywords">+      <item>false</item>+      <item>true</item>+      <item>yes</item>+      <item>no</item>+      <item>on</item>+      <item>off</item>+      <item>undefined</item>+      <item>null</item>+      <item>NaN</item>+      <item>Infinity</item>+    </list>+    <!-- Generic keywords. -->+    <list name="keywords">+      <item>return</item>+      <item>break</item>+      <item>continue</item>+      <item>throw</item>+      <item>for</item>+      <item>while</item>+      <item>until</item>+      <item>loop</item>+      <item>if</item>+      <item>else</item>+      <item>unless</item>+      <item>switch</item>+      <item>when</item>+      <item>then</item>+      <item>and</item>+      <item>or</item>+      <item>in</item>+      <item>of</item>+      <item>by</item>+      <item>is</item>+      <item>isnt</item>+      <item>not</item>+      <item>typeof</item>+      <item>delete</item>+      <item>where</item>+      <item>super</item>+      <item>try</item>+      <item>catch</item>+      <item>finally</item>+      <item>try</item>+      <item>catch</item>+      <item>finally</item>+      <item>constructor</item>+    </list>+    <!-- Keywords which are always followed by a class name. -->+    <list name="class_keywords">+      <item>class</item>+      <item>extends</item>+      <item>new</item>+      <item>instanceof</item>+    </list>+    <!-- Reserved words. -->+    <list name="reserved">+      <item>case</item>+      <item>default</item>+      <item>function</item>+      <item>var</item>+      <item>void</item>+      <item>with</item>+      <item>const</item>+      <item>let</item>+      <item>enum</item>+      <item>export</item>+      <item>import</item>+      <item>native</item>+      <item>__hasProp</item>+      <item>__extends</item>+      <item>__slice</item>+      <item>__bind</item>+      <item>__indexOf</item>+    </list>+    <!-- Built-in globals provided in most contexts. -->+    <list name="globals">+      <item>Object</item>+      <item>Number</item>+      <item>Boolean</item>+      <item>Array</item>+      <item>String</item>+      <item>RegExp</item>+      <item>Function</item>+      <item>Date</item>+      <item>Math</item>+      <item>eval</item>+      <item>setInterval</item>+      <item>clearInterval</item>+      <item>setTimeout</item>+      <item>clearTimeout</item>+      <item>isFinite</item>+      <item>isNaN</item>+      <item>parseFloat</item>+      <item>parseInt</item>+      <item>escape</item>+      <item>unescape</item>+      <item>console</item>+      <item>encodeURI</item>+      <item>encodeURIComponent</item>+      <item>decodeURI</item>+      <item>decodeURIComponent</item>+    </list>+    <!-- Built-in globals provided in browser context. -->+    <list name="browser_globals">+      <item>window</item>+      <item>document</item>+      <item>navigator</item>+      <item>location</item>+      <item>history</item>+      <item>screen</item>+      <item>alert</item>+      <item>prompt</item>+    </list>+    <!-- Built-in globals provided in Node.js context. -->+    <list name="nodejs_globals">+      <item>process</item>+      <item>GLOBAL</item>+      <item>require</item>+      <item>exports</item>+    </list>+    <!-- Context-sensitive highlighting rules. -->+    <contexts>+      <!-- Generic code. -->+      <context name="Normal" attribute="Normal" lineEndContext="#stay">+        <DetectSpaces/>+        <!-- Numbers. -->+        <Float attribute="Float" context="#stay"/>+        <Int attribute="Decimal" context="#stay"/>+        <HlCOct attribute="Oct" context="#stay"/>+        <HlCHex attribute="Hex" context="#stay"/>+        <!-- Keywords. -->+        <keyword attribute="Keyword" context="#stay" String="keywords"/>+        <keyword attribute="Keyword" context="Class" String="class_keywords"/>+        <keyword attribute="Value Keywords" context="#stay" String="value_keywords"/>+        <keyword attribute="Reserved" context="#stay" String="reserved"/>+        <!-- Globals. -->+        <keyword attribute="Globals" context="#stay" String="globals"/>+        <keyword attribute="Browser Globals" context="#stay" String="browser_globals"/>+        <keyword attribute="Node.js Globals" context="#stay" String="nodejs_globals"/>+        <!-- Member accessors. -->+        <RegExpr attribute="Accessor" context="#stay" String="(@[_$a-zA-Z][$\w]+|\bthis)\b" insensitive="false"/>+        <!-- Function definitions. Matches an optional argument list followed by a function arrow (normal or fat). -->+        <RegExpr attribute="Function" context="#stay" String="(\((\'[^']*'|&quot;[^&quot;]*&quot;|[^()])*\))?\s*(-|=)&gt;" insensitive="true"/>+        <!-- Generic identifiers. -->+        <RegExpr attribute="Identifier" context="#stay" String="[_$a-z][$\w]+\b" insensitive="true"/>+        <!-- Strings. -->+        <StringDetect attribute="String" context="Heredoc" String="'''" beginRegion="Heredoc"/>+        <StringDetect attribute="String" context="Rich Heredoc" String="&quot;&quot;&quot;" beginRegion="Rich Heredoc"/>+        <DetectChar attribute="String" context="String" char="'"/>+        <DetectChar attribute="String" context="Rich String" char="&quot;"/>+        <!-- Embedded JavaScript. -->+        <DetectChar attribute="Javascript" context="Javascript" char="`" beginRegion="Javascript"/>+        <!-- Comments. -->+        <StringDetect attribute="Comment" context="Multiline Comment" String="###" beginRegion="Comment"/>+        <DetectChar attribute="Comment" context="Comment" char="#"/>+        <!-- Regular expressions. -->+        <RegExpr attribute="Regex" context="Multiline Regex" String="///" beginRegion="Multiline Regex"/>+        <RegExpr attribute="Regex" context="#stay" String="/([^/\\\r\n]|\\.)*/[mig]{0,3}"/>+        <!-- Operators and other non-alphanumeric symbols. -->+        <AnyChar attribute="Symbol" context="#stay" String="():!%&amp;+,-/.*&lt;=&gt;?[]|~^&#59;{}"/>+      </context>+      <!-- Multiline regular expressions. -->+      <context name="Multiline Regex" attribute="Regex" lineEndContext="#stay" noIndentationBasedFolding="1">+        <HlCStringChar attribute="Regex" context="#stay"/>+        <DetectChar attribute="Comment" context="Comment" char="#"/>+        <RegExpr attribute="Regex" context="#pop" String="///[mig]{0,3}" endRegion="Multiline Regex"/>+      </context>+      <!-- Class names. -->+      <context name="Class" attribute="Normal" lineEndContext="#stay">+        <DetectSpaces/>+        <RegExpr attribute="Class" context="#pop" String="[@$:.\w\[\]]+"/>+      </context>+      <!-- Comments. -->+      <context name="Comment" attribute="Comment" lineEndContext="#pop">+        <IncludeRules context="##Alerts_indent"/>+      </context>+      <context name="Multiline Comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="1">+        <StringDetect attribute="Comment" context="#pop" String="###" endRegion="Comment"/>+        <IncludeRules context="##Alerts_indent"/>+      </context>+      <!-- Single-line strings. -->+      <context name="String" attribute="String" lineEndContext="#stay">+        <HlCStringChar attribute="String" context="#stay"/>+        <DetectChar attribute="String" context="#pop" char="'"/>+      </context>+      <context name="Rich String" attribute="String" lineEndContext="#stay">+        <HlCStringChar attribute="String" context="#stay"/>+        <Detect2Chars attribute="Embedding" context="Embedding" char="#" char1="{"/>+        <DetectChar attribute="String" context="#pop" char="&quot;"/>+      </context>+      <!-- Multi-line strings. -->+      <context name="Heredoc" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="1">+        <HlCStringChar attribute="String" context="#stay"/>+        <StringDetect attribute="String" context="#pop" String="'''" endRegion="Heredoc"/>+      </context>+      <context name="Rich Heredoc" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="1">+        <HlCStringChar attribute="String" context="#stay"/>+        <Detect2Chars attribute="Embedding" context="Embedding" char="#" char1="{"/>+        <StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;" endRegion="Rich Heredoc"/>+      </context>+      <!-- Expressions embedded in strings. -->+      <context name="Embedding" attribute="Normal" lineEndContext="#stay">+        <DetectChar attribute="Embedding" context="#pop" char="}"/>+      </context>+      <!-- Embedded Javascript. -->+      <context name="Javascript" attribute="Javascript" lineEndContext="#stay" noIndentationBasedFolding="1">+        <DetectChar attribute="Javascript" context="#pop" char="`" endRegion="Javascript"/>+        <!-- NOTE: This hides errors where a backtick is embedded in a JS string. -->+        <IncludeRules context="##JavaScript" includeAttrib="true"/>+      </context>+    </contexts>+    <!-- Style mappings. -->+    <itemDatas>+      <itemData name="Normal" defStyleNum="dsNormal" spellChecking="false"/>+      <itemData name="Identifier" defStyleNum="dsNormal" spellChecking="false"/>+      <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>+      <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>+      <itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false"/>+      <itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>+      <itemData name="Oct" defStyleNum="dsBaseN" spellChecking="false"/>+      <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>+      <itemData name="String" defStyleNum="dsString" spellChecking="false"/>+      <itemData name="Comment" defStyleNum="dsComment" spellChecking="true"/>+      <itemData name="Symbol" defStyleNum="dsKeyword" spellChecking="false"/>+      <itemData name="Embedding" defStyleNum="dsChar" spellChecking="false"/>+      <itemData name="Accessor" defStyleNum="dsDataType" spellChecking="false"/>+      <itemData name="Class" defStyleNum="dsDataType" spellChecking="false" bold="1"/>+      <itemData name="Javascript" defStyleNum="dsAlert" spellChecking="false" italic="1"/>+      <itemData name="Regex" defStyleNum="dsString" spellChecking="false"/>+      <itemData name="Reserved" defStyleNum="dsAlert" spellChecking="false"/>+      <itemData name="Value Keywords" defStyleNum="dsOthers" spellChecking="false"/>+      <itemData name="Globals" defStyleNum="dsOthers" spellChecking="false"/>+      <!-- Context-sensitive globals - not styled by default. -->+      <itemData name="Browser Globals" defStyleNum="dsNormal" spellChecking="false"/>+      <itemData name="Node.js Globals" defStyleNum="dsNormal" spellChecking="false"/>+    </itemDatas>+  </highlighting>+  <!-- Global settings. -->+  <general>+    <indentation mode="python"/>+    <folding indentationsensitive="1"/>+    <comments>+      <comment name="singleLine" start="#"/>+      <comment name="multiLine" start="###" end="###" region="Comment"/>+    </comments>+    <keywords casesensitive="1" additionalDeliminator="#'"/>+    <emptyLines>+      <emptyLine regexpr="(?:\s+|\s*#.*)"/>+    </emptyLines>+  </general>+</language>