diff --git a/BUGS b/BUGS
new file mode 100644
--- /dev/null
+++ b/BUGS
@@ -0,0 +1,3 @@
+Known bugs:
+
+
diff --git a/Highlight.hs b/Highlight.hs
new file mode 100644
--- /dev/null
+++ b/Highlight.hs
@@ -0,0 +1,107 @@
+module Main where
+import Text.Highlighting.Kate
+import System.IO
+import System.Environment
+import Text.XHtml.Transitional
+import System.Console.GetOpt
+import System.Exit
+import System.FilePath (takeFileName, takeExtension)
+import Data.Maybe (listToMaybe)
+import Data.Char (toLower)
+
+data Flag = CssPath String
+          | Help
+          | Fragment
+          | List
+          | NumberLines
+          | Syntax String
+          | TitleAttributes
+          | Version
+          deriving (Eq, Show)
+
+options :: [OptDescr Flag]
+options =
+  [ Option ['c'] ["css"] (ReqArg CssPath "PATH") "link CSS file"
+  , Option ['f'] ["fragment"] (NoArg Fragment)  "fragment, without document header"
+  , Option ['h'] ["help"] (NoArg Help)   "show usage message"
+  , Option ['l'] ["list"] (NoArg List)   "list available language syntaxes"
+  , Option ['n'] ["number-lines"] (NoArg NumberLines)  "number lines"
+  , Option ['s'] ["syntax"] (ReqArg Syntax "SYNTAX")  "specify language syntax to use"
+  , Option ['t'] ["title-attributes"] (NoArg TitleAttributes)  "include structure in title attributes"
+  , Option ['v'] ["version"] (NoArg Version)   "print version"
+  ]
+
+cssPathOf :: [Flag] -> Maybe String
+cssPathOf [] = Nothing
+cssPathOf (CssPath s : _) = Just s
+cssPathOf (_:xs) = cssPathOf xs
+
+syntaxOf :: [Flag] -> Maybe String
+syntaxOf [] = Nothing
+syntaxOf (Syntax s : _) = Just s
+syntaxOf (_:xs) = syntaxOf xs
+
+filterNewlines :: String -> String
+filterNewlines ('\r':'\n':xs) = '\n' : filterNewlines xs
+filterNewlines ('\r':xs) = '\n' : filterNewlines xs
+filterNewlines (x:xs) = x : filterNewlines xs
+filterNewlines [] = []
+
+-- | Highlight source code in XHTML using specified syntax.
+xhtmlHighlight :: [FormatOption] -- ^ Options
+               -> String         -- ^ Name of syntax to use
+               -> String         -- ^ Source code to highlight
+               -> Html
+xhtmlHighlight opts lang code =
+  case highlightAs lang code of
+       Right result -> formatAsXHtml opts lang result
+       Left  _      -> pre $ thecode << code
+
+main = do
+  (opts, fnames, errs) <- getArgs >>= return . getOpt Permute options
+  prg <- getProgName
+  let usageHeader = prg ++ " [options] [files...]"
+  if not (null errs)
+     then ioError (userError $ concat errs ++ usageInfo usageHeader options)
+     else return ()
+  if List `elem` opts
+     then putStrLn (unwords languages) >> exitWith ExitSuccess
+     else return ()
+  if Help `elem` opts
+     then hPutStrLn stderr (usageInfo usageHeader options) >> 
+          exitWith (ExitFailure 1)
+     else return ()
+  if Version `elem` opts
+     then putStrLn (prg ++ " " ++ highlightingKateVersion ++ " - (c) 2008 John MacFarlane") >> 
+          exitWith ExitSuccess
+     else return ()
+  code <- if null fnames
+             then getContents >>= return . filterNewlines
+             else mapM readFile fnames >>= return . filterNewlines . concat
+  let lang' = case syntaxOf opts of
+                    Just e   -> Just e
+                    Nothing  -> if null fnames
+                                   then Nothing
+                                   else let firstExt = drop 1 $ takeExtension $ head fnames
+                                        in  listToMaybe $ languagesByExtension firstExt
+  lang <- if lang' == Nothing
+             then hPutStrLn stderr "No syntax specified." >>
+                  hPutStrLn stderr (usageInfo usageHeader options) >>
+                  exitWith (ExitFailure 5)
+             else do let (Just l) = lang'
+                     return (map toLower l)
+  if not (lang `elem` (map (map toLower) languages))
+     then hPutStrLn stderr ("Unknown syntax: " ++ lang) >> exitWith (ExitFailure 4)
+     else return ()
+  let highlightOpts = (if TitleAttributes `elem` opts then [OptTitleAttributes] else []) ++
+                      (if NumberLines `elem` opts then [OptNumberLines] else [])
+  let css = case cssPathOf opts of
+                   Nothing      -> style ! [thetype "text/css"] $ primHtml defaultHighlightingCss 
+                   Just cssPath -> thelink ! [thetype "text/css", href cssPath, rel "stylesheet"] << noHtml
+  let hcode = xhtmlHighlight highlightOpts lang code
+  let pageTitle = if null fnames then noHtml else thetitle << (takeFileName $ head fnames)
+  let metadata = meta ! [httpequiv "Content-Type", content "text/html; charset=UTF-8"] +++
+                 meta ! [name "generator", content "highlight-kate"]
+  if Fragment `elem` opts
+     then putStrLn $ renderHtmlFragment hcode
+     else putStrLn $ renderHtml $ header << [pageTitle, metadata, css] +++ body << hcode
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,340 @@
+            GNU GENERAL PUBLIC LICENSE
+               Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+    51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+            GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+             END OF TERMS AND CONDITIONS
+
+        How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/ParseSyntaxFiles.hs b/ParseSyntaxFiles.hs
new file mode 100644
--- /dev/null
+++ b/ParseSyntaxFiles.hs
@@ -0,0 +1,483 @@
+{-# OPTIONS -farrows #-}
+
+{- 
+ParseSyntaxFiles.hs processes a directory containing Kate
+XML syntax highlighting definitions.  For each xml file in
+the directory, it creates a syntax highlighting parser
+
+Text/Highlighting/Kate/Syntax/(name).hs.
+
+Finally, it creates a module
+
+Text/Highlighting/Kate/Syntax.hs with a wrapper around
+
+all these modules.
+
+Usage:  runghc ParseSyntaxFiles.hs xml
+
+Requires HXT.
+-}
+
+module Main where
+
+import Text.XML.HXT.Arrow
+import Text.XML.HXT.Arrow.Edit
+import Text.XML.HXT.Arrow.XmlNodeSet
+import Control.Arrow
+import Control.Arrow.ArrowList
+import Data.List
+import Data.Maybe
+import Data.Char (toUpper, toLower, isAlphaNum)
+import qualified Data.Map as Map
+import System.IO
+import System.Directory
+import System.Environment
+import System.Exit
+import System.FilePath
+import Text.PrettyPrint
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common (capitalize)
+
+data SyntaxDefinition =
+  SyntaxDefinition { synLanguage      :: String
+                   , synAuthor        :: String
+                   , synVersion       :: String
+                   , synLicense       :: String
+                   , synExtensions    :: String
+                   , synCaseSensitive :: Bool
+                   , synLists         :: [(String, [String])]
+                   , synContexts      :: [SyntaxContext]
+                   , synItemDatas     :: [(String, String)]
+                   , synKeywordAttr   :: SyntaxKeywordAttr
+                   } deriving (Read, Show)
+
+data SyntaxKeywordAttr =
+  SyntaxKeywordAttr  { keywordCaseSensitive   :: Bool
+                     , keywordDelims          :: [Char]
+                     } deriving (Read, Show)
+
+data SyntaxContext = 
+  SyntaxContext { contName               :: String
+                , contAttribute          :: String
+                , contLineEndContext     :: String
+                , contLineBeginContext   :: String
+                , contFallthrough        :: Bool
+                , contFallthroughContext :: String
+                , contDynamic            :: Bool
+                , contParsers            :: [SyntaxParser] 
+                } deriving (Read, Show)
+
+data SyntaxParser =
+  SyntaxParser { parserType              :: String
+               , parserAttribute         :: String
+               , parserContext           :: String
+               , parserLookAhead         :: Bool
+               , parserIncludeAttrib     :: Bool
+               , parserFirstNonSpace     :: Bool
+               , parserColumn            :: Maybe Int
+               , parserDynamic           :: Bool
+               , parserString            :: String -- could be a regex
+               , parserChar              :: Char
+               , parserChar1             :: Char
+               , parserChildren          :: [SyntaxParser]
+               } deriving (Read, Show)
+
+
+libraryPath = joinPath ["Text", "Highlighting", "Kate"]
+destDir = joinPath [libraryPath, "Syntax"]
+
+main :: IO ()
+main = do
+  argv <- getArgs
+  srcDir <- if null argv 
+               then error "Specify path of directory containing xml syntax files."
+               else return $ argv !! 0
+  let isXmlFile x = isSuffixOf ".xml" x
+  files <- getDirectoryContents srcDir >>= (return . map (combine srcDir) . filter isXmlFile)
+  destDirExists <- doesDirectoryExist destDir
+  if destDirExists
+     then return ()
+     else createDirectory destDir 
+  mapM processOneFile files >> return ()
+  let syntaxFile = combine libraryPath (addExtension "Syntax" "hs")
+  putStrLn $ "Writing " ++ syntaxFile
+  let names = sort $ map nameFromPath files 
+  let imports = unlines $ map (\name -> "import qualified Text.Highlighting.Kate.Syntax." ++ name ++ " as " ++ name) names 
+  let cases = unlines $ map (\name -> "        " ++ show (map toLower name) ++ " -> " ++ name ++ ".highlight") names
+  let languageExtensions = concat $ intersperse ", " $ map (\name -> "(" ++ show name ++ ", " ++ name ++ ".syntaxExtensions)") names
+  writeFile syntaxFile $
+           "module Text.Highlighting.Kate.Syntax ( highlightAs, languages, languagesByExtension ) where\n\
+           \import Data.Char (toLower)\n\
+           \import Data.Maybe (fromMaybe)\n\
+           \import Text.Highlighting.Kate.Definitions\n" ++
+           imports ++ "\n" ++
+           "-- | List of supported languages.\n\
+           \languages :: [String]\n\
+           \languages = " ++ show names ++ "\n\n\
+           \-- | List of language extensions.\n\
+           \languageExtensions :: [(String, String)]\n\
+           \languageExtensions = [" ++ languageExtensions ++ "]\n\n" ++
+           "-- | Returns a list of languages appropriate for the given file extension.\n\
+           \languagesByExtension :: String -> [String]\n\
+           \languagesByExtension ext = filter (hasExtension ext) languages\n\n\
+           \-- | True if extension belongs to language.\n\
+           \hasExtension ext lang =\n\
+           \  let exts = fromMaybe \"\" (lookup lang languageExtensions)\n\
+           \      matchExtension _ [] = False\n\
+           \      matchExtension ext ('.':xs) =\n\
+           \        let (next, rest) = span (/=';') xs\n\
+           \        in  if next == ext then True else matchExtension ext rest\n\
+           \      matchExtension ext (_:xs) = matchExtension ext xs\n\
+           \  in  matchExtension (dropWhile (=='.') ext) exts\n\n\
+           \-- | Highlight source code using a specified syntax definition.\n\
+           \highlightAs :: String                        -- ^ Language syntax\n\
+           \            -> String                        -- ^ Source code to highlight\n\
+           \            -> Either String [SourceLine]    -- ^ Either error message or result\n\
+           \highlightAs lang =\n\
+           \  case (map toLower lang) of\n" ++
+           cases ++
+           "        _ -> (\\_ -> Left (\"Unknown language ++ \" ++ lang))\n"
+
+processOneFile :: FilePath -> IO ()
+processOneFile src = do
+  [syntax] <- runX $ application src
+  let name = nameFromPath src
+  let outFile = joinPath [libraryPath, "Syntax", addExtension name "hs"]
+  let includeLangs = nub $ map (drop 2 . parserContext) $
+        filter (\p -> (parserType p) == "IncludeRules" && "##" `isPrefixOf` (parserContext p)) $ 
+        concatMap contParsers $ synContexts syntax
+  let includeImports = map (("import qualified " ++) . langNameToModule) includeLangs
+  putStrLn $ "Writing " ++ outFile
+  writeFile outFile $ 
+           "{- This module was generated from data in the Kate syntax highlighting file " ++ (takeFileName src) ++ ", version " ++ 
+           synVersion syntax ++ ",\n" ++
+           "   by  " ++ synAuthor syntax ++ " -}\n\n" ++ 
+           "module Text.Highlighting.Kate.Syntax." ++ name ++ " ( highlight, parseExpression, syntaxName, syntaxExtensions ) where\n\
+           \import Text.Highlighting.Kate.Definitions\n\
+           \import Text.Highlighting.Kate.Common\n" ++
+           unlines includeImports ++ 
+           "import Text.ParserCombinators.Parsec\n\
+           \import Data.List (nub)\n\
+           \import Data.Map (fromList)\n\
+           \import Data.Maybe (fromMaybe)\n\n" ++
+           render (mkParser syntax) ++ "\n"
+
+mkParser :: SyntaxDefinition -> Doc
+mkParser syntax = 
+  let name = text "-- | Full name of language." $$
+             text "syntaxName :: String" $$
+             text ("syntaxName = " ++ show (synLanguage syntax))
+      exts = text "-- | Filename extensions for this language." $$
+             text "syntaxExtensions :: String" $$
+             text ("syntaxExtensions = " ++ show (synExtensions syntax))
+      styles = text ("styles = " ++ (show $ map (\(typ, sty) -> (typ, drop 2 sty)) $ synItemDatas syntax))
+      withAttr = text "withAttribute attr txt = do" $$ (nest 2 $
+                   text "if null txt" $$
+                   text "   then fail \"Parser matched no text\"" $$
+                   text "   else return ()" $$
+                   text "let style = fromMaybe \"\" $ lookup attr styles" $$
+                   text "st <- getState" $$
+                   text "let oldCharsParsed = synStCharsParsedInLine st" $$
+                   text "updateState $ \\st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } " $$
+                   text "return (nub [style, attr], txt)")
+      parseExpressionInternal = text "parseExpressionInternal = do" $$ (nest 2 $ 
+                                  text "context <- currentContext" $$
+                                  text "parseRules context <|> (pDefault >>= withAttribute (fromMaybe \"\" $ lookup context defaultAttributes))")
+      parseExpression = text "-- | Parse an expression using appropriate local context." $$
+                        text "parseExpression :: GenParser Char SyntaxState LabeledSource" $$
+                        text "parseExpression = do" $$ (nest 2 $ 
+                          text "st <- getState" $$
+                          text "let oldLang = synStLanguage st" $$
+                          text ("setState $ st { synStLanguage = " ++ show (synLanguage syntax) ++ " }") $$
+                          text ("context <- currentContext <|> (pushContext " ++ show (contName $ head $ synContexts syntax) ++
+                                " >> currentContext)") $$
+                          text "result <- parseRules context" $$
+                          text "updateState $ \\st -> st { synStLanguage = oldLang }" $$
+                          text "return result")
+      defaultAttributes = text $ "defaultAttributes = " ++ (show $ map (\cont -> (contName cont, contAttribute cont)) $ synContexts syntax)
+      -- Note: lineBeginContexts seems not to be used in any of the xml files
+      -- lineBeginContexts = 
+      --   text $ "lineBeginContexts = " ++ (show $ map (\cont -> (contName cont, contLineBeginContext cont)) $ synContexts syntax)
+      startingContext = head (synContexts syntax)
+      contextCatchAll = text $ "parseRules x = fail $ \"Unknown context\" ++ x"
+      contexts = map (mkRules syntax) $ synContexts syntax
+      initialContextStack = Map.fromList [(synLanguage syntax, [contName startingContext])]
+      startingState = SyntaxState { synStContexts = initialContextStack
+                                  , synStLanguage = synLanguage syntax
+                                  , synStCurrentLine = ""
+                                  , synStCharsParsedInLine = 0
+                                  , synStCaseSensitive = synCaseSensitive syntax
+                                  , synStKeywordCaseSensitive = keywordCaseSensitive $ synKeywordAttr syntax
+                                  , synStCaptures = [] }
+      initState = text $ "startingState = " ++ show startingState
+      sourceLineParser = text "parseSourceLine = manyTill parseExpressionInternal pEndLine"
+      mainParser = text "parseSource = do " $$  
+                   (nest 2 $ text "lineContents <- lookAhead wholeLine" $$
+                             text "updateState $ \\st -> st { synStCurrentLine = lineContents }" $$
+                             -- text "context <- currentContext" $$
+                             -- text "pushContext (fromMaybe \"#stay\" $ lookup context lineBeginContexts)" $$
+                             text "result <- manyTill parseSourceLine eof" $$
+                             text "return $ map normalizeHighlighting result")
+      mainFunction = text $ "-- | Highlight source code using this syntax definition.\n\
+                            \highlight :: String -> Either String [SourceLine]\n\
+                            \highlight input =\n\
+                            \  case runParser parseSource startingState \"source\" input of\n\
+                            \    Left err     -> Left $ show err\n\
+                            \    Right result -> Right result"
+      endLineParser = text "pEndLine = do" $$
+                      (nest 2 $ text "newline <|> (eof >> return '\\n')" $$
+                                text "context <- currentContext" $$
+                                text "case context of" $$
+                                (nest 2 $ (vcat $ map (\cont -> text (show $ contName cont) <> text " -> " <> 
+                                            switchContext (contLineEndContext cont)) $ synContexts syntax) $$
+                                          (text $ "_ -> return ()")) $$
+                                {- text "pushContext (fromMaybe \"#stay\" $ lookup context lineBeginContexts)" $$ -}
+                                text "lineContents <- lookAhead wholeLine" $$
+                                text "updateState $ \\st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }")
+  in  vcat $ intersperse (text "") $ [name, exts, mainFunction, parseExpression, mainParser, initState, sourceLineParser, 
+                                      endLineParser, withAttr, styles, parseExpressionInternal, 
+                                      defaultAttributes {- , lineBeginContexts -}] ++ contexts ++ [contextCatchAll]
+
+mkIdentifier :: String -> String
+mkIdentifier "" = ""
+mkIdentifier ('-':x:xs) = toUpper x : mkIdentifier xs
+mkIdentifier ('-':xs) = mkIdentifier xs
+mkIdentifier (x:xs) = x : mkIdentifier xs
+
+mkAlternatives :: [Doc] -> Doc
+mkAlternatives docs = 
+  let contents = vcat $ intersperse (text "<|>") docs
+  in  if length docs > 1
+         then char '(' <> contents <> char ')'
+         else contents
+
+mkRules :: SyntaxDefinition -> SyntaxContext -> Doc
+mkRules syntax context =
+  let fallthroughParser = if contFallthrough context
+                             then [parens (switchContext (contFallthroughContext context) <> 
+                                   text " >> return ([], \"\")")]
+                             else []
+  in  text ("parseRules " ++ show (contName context) ++ " = ") $$ 
+      if null (contParsers context) && null fallthroughParser
+         then nest 2 (text "pzero")
+         else nest 2 $ (text "do (attr, result) <- " <> 
+                       (mkAlternatives $ (map (mkSyntaxParser syntax context) $ contParsers context) ++ fallthroughParser)) $$
+                       text ("   return (attr, result)")
+
+mkSyntaxParser :: SyntaxDefinition -> SyntaxContext -> SyntaxParser -> Doc
+mkSyntaxParser syntax context parser = 
+  let mainParser = text $ case parserType parser of
+            "DetectChar"       -> "pDetectChar " ++ show (parserDynamic parser) ++ " " ++ show (parserChar parser)
+            "Detect2Chars"     -> "pDetect2Chars " ++ show (parserDynamic parser) ++ " " ++ 
+                                    show (parserChar parser) ++ " " ++ show (parserChar1 parser)
+            "AnyChar"          -> "pAnyChar " ++ show (parserString parser)
+            "StringDetect"     -> "pString " ++ show (parserDynamic parser) ++ " " ++ show (parserString parser) 
+            "RegExpr"          -> if parserDynamic parser
+                                     then "pRegExprDynamic " ++ show (parserString parser)
+                                     else "pRegExpr (compileRegex " ++ show (parserString parser) ++ ")"
+            "keyword"          -> "pKeyword " ++ show (keywordDelims $ synKeywordAttr syntax) ++ " " ++ 
+                                                 show (fromMaybe [] $ lookup (parserString parser) (synLists syntax))
+            "Int"              -> "pInt"
+            "Float"            -> "pFloat"
+            "HlCOct"           -> "pHlCOct"
+            "HlCHex"           -> "pHlCHex"
+            "HlCStringChar"    -> "pHlCStringChar"
+            "HlCChar"          -> "pHlCChar"
+            "RangeDetect"      -> "pRangeDetect " ++ show (parserChar parser) ++ " " ++ show (parserChar1 parser)
+            "LineContinue"     -> "pLineContinue"
+            "IncludeRules"     -> case parserContext parser of
+                                      ('#':'#':xs) -> langNameToModule xs ++ ".parseExpression" ++
+                                                      if parserIncludeAttrib parser
+                                                         then ""
+                                                         else " >>= ((withAttribute " ++ show (parserAttribute parser) ++ ") . snd)" 
+                                      xs           -> "parseRules " ++ show xs
+            "DetectSpaces"     -> "pDetectSpaces"
+            "DetectIdentifier" -> "pDetectIdentifier"
+            _                  -> "pUnimplemented"
+      parserDoc = char '(' <>
+                  (case (parserColumn parser) of
+                       Just c  -> text $ "pColumn " ++ show c ++ " >> "
+                       _       -> empty) <>
+                  (if parserFirstNonSpace parser
+                     then text "pFirstNonSpace >> "
+                     else empty) <>
+                  if parserType parser == "IncludeRules"
+                     then mainParser <> char ')'
+                     else mainParser <> text " >>= withAttribute " <> 
+                          text (if null (parserAttribute parser)
+                                   then show (contAttribute context)
+                                   else show (parserAttribute parser)) <> char ')' <>
+                          (if parserContext parser `elem` ["", "#stay"]
+                              then empty 
+                              else text " >>~ " <> switchContext (parserContext parser))
+      childParsers = parserChildren parser
+  in  char '(' <>
+      (if null childParsers
+          then parserDoc
+          else text "withChildren " <> parserDoc <> char ' ' <> (mkAlternatives $ map (mkSyntaxParser syntax context) childParsers)) <>
+      char ')'
+
+switchContext next =
+  case next of
+     x | "#pop" `isPrefixOf` x -> char '(' <> text (concat $ intersperse " >> " $ replicate (length (filter (=='#') x)) "popContext") <> 
+                                  text " >> return ())"
+     "#stay" -> text "return ()"
+     x -> text ("pushContext " ++ show x) 
+
+langNameToModule str =  "Text.Highlighting.Kate.Syntax." ++
+  case str of
+    "Alerts" -> "Alert"
+    "C++" -> "Cpp"
+    "CSS" -> "Css"
+    "Doxygen" -> "Doxygen"
+    "HTML" -> "Html"
+    "Javadoc" -> "Javadoc"
+    "JavaScript" -> "Javascript"
+    x -> x
+
+nameFromPath :: FilePath -> String
+nameFromPath = concat . map capitalize . words . 
+               (map (\c -> if c == '-' then ' ' else c)) . takeFileName . 
+               dropExtension
+
+application :: String -> IOSArrow b SyntaxDefinition
+application src
+    = readDocument [(a_validate, v_0)] src
+      >>>
+      multi (hasName "language")
+      >>>
+      extractSyntaxDefinition
+
+extractSyntaxDefinition :: IOSArrow XmlTree SyntaxDefinition
+extractSyntaxDefinition =  proc x -> do
+                             lang <- getAttrValue "name" -< x
+                             author <- getAttrValue "author" -< x
+                             version <- getAttrValue "version" -< x
+                             license <- getAttrValue "license" -< x
+                             sources <- getAttrValue "extensions" -< x
+                             caseSensitive <- getAttrValue "casesensitive" -< x
+                             itemdatas <- getItemDatas -< x
+                             lists <- getLists -< x
+                             contexts <- getContexts -< x
+                             keywordAttr <- getKeywordAttrs -< x
+                             returnA -< SyntaxDefinition { synLanguage      = lang 
+                                                         , synAuthor        = author
+                                                         , synVersion       = version
+                                                         , synLicense       = license 
+                                                         , synExtensions    = sources
+                                                         , synCaseSensitive = vBool True caseSensitive
+                                                         , synLists         = lists
+                                                         , synContexts      = contexts 
+                                                         , synItemDatas     = itemdatas
+                                                         , synKeywordAttr   = if null keywordAttr
+                                                                                 then defaultKeywordAttr
+                                                                                 else head keywordAttr }
+
+getItemDatas :: IOSArrow XmlTree [(String,String)]
+getItemDatas = multi (hasName "itemDatas")
+               >>>
+               (listA $ getChildren
+                       >>>
+                       hasName "itemData"
+                       >>>
+                       getAttrValue "name" &&& getAttrValue "defStyleNum")
+
+getLists :: IOSArrow XmlTree [(String, [String])]
+getLists = listA $ multi (hasName "list")
+                   >>> 
+                   getAttrValue "name" &&& getListContents
+
+getListContents :: IOSArrow XmlTree [String]
+getListContents = listA $ getChildren
+                          >>> 
+                          hasName "item"
+                          >>>
+                          getChildren
+                          >>>
+                          getText
+                          >>>
+                          arr stripWhitespace
+
+getContexts :: IOSArrow XmlTree [SyntaxContext]
+getContexts = listA $   multi (hasName "context")
+                        >>>
+                        proc x -> do
+                          name <- getAttrValue "name" -< x
+                          attribute <- getAttrValue "attribute" -< x
+                          lineEndContext <- getAttrValue "lineEndContext" -< x
+                          lineBeginContext <- getAttrValue "lineBeginContext" -< x
+                          fallthrough <- getAttrValue "fallthrough" -< x
+                          fallthroughContext <- getAttrValue "fallthroughContext" -< x
+                          dynamic <- getAttrValue "dynamic" -< x
+                          parsers <- getParsers -< x
+                          returnA -< SyntaxContext 
+                                           { contName = name
+                                           , contAttribute = attribute
+                                           , contLineEndContext = if null lineEndContext then "#stay" else lineEndContext
+                                           , contLineBeginContext = if null lineBeginContext then "#stay" else lineBeginContext
+                                           , contFallthrough = vBool False fallthrough
+                                           , contFallthroughContext = if null fallthroughContext then "#stay" else fallthroughContext
+                                           , contDynamic = vBool False dynamic
+                                           , contParsers = parsers }
+
+getParsers :: IOSArrow XmlTree [SyntaxParser]
+getParsers = listA $ getChildren 
+                     >>>
+                     proc x -> do
+                       name <- getName -< x
+                       attribute <- getAttrValue "attribute" -< x
+                       context <- getAttrValue "context" -< x
+                       char0 <- getAttrValue "char" -< x
+                       char1 <- getAttrValue "char1" -< x
+                       str <- getAttrValue "String" -< x
+                       includeAttrib <- getAttrValue "includeAttrib" -< x
+                       lookahead <- getAttrValue "lookAhead" -< x
+                       firstNonSpace <- getAttrValue "firstNonSpace" -< x
+                       column <- getAttrValue "column" -< x
+                       dynamic <- getAttrValue "dynamic" -< x
+                       children <- getParsers -< x
+                       let tildeRegex = name == "RegExpr" && length str > 0 && head str == '^'
+                       returnA -< SyntaxParser 
+                                    { parserType = name
+                                    , parserAttribute = attribute
+                                    , parserContext = context
+                                    , parserLookAhead = vBool False lookahead
+                                    , parserIncludeAttrib = vBool False includeAttrib
+                                    , parserFirstNonSpace = vBool False firstNonSpace
+                                    , parserColumn = if tildeRegex
+                                                        then Just 0
+                                                        else if null column 
+                                                                then Nothing 
+                                                                else Just (read column)
+                                    , parserDynamic = vBool False dynamic
+                                    , parserString = if tildeRegex then drop 1 str else str
+                                    , parserChar = if length char0 == 1 then head char0 else '*'
+                                    , parserChar1 = if length char1 == 1 then head char1 else '*'
+                                    , parserChildren = children }
+
+getKeywordAttrs :: IOSArrow XmlTree [SyntaxKeywordAttr]
+getKeywordAttrs = listA $ multi $ hasName "keywords"
+                                  >>>
+                                  proc x -> do
+                                    caseSensitive <- getAttrValue "casesensitive" -< x
+                                    weakDelim <- getAttrValue "weakDeliminator" -< x
+                                    additionalDelim <- getAttrValue "additionalDeliminator" -< x
+                                    returnA -< SyntaxKeywordAttr 
+                                                      { keywordCaseSensitive = vBool True caseSensitive
+                                                      , keywordDelims = (standardDelims ++ additionalDelim) \\ weakDelim }
+
+standardDelims = " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" 
+
+defaultKeywordAttr = SyntaxKeywordAttr { keywordCaseSensitive = True
+                                       , keywordDelims = standardDelims }
+
+stripWhitespaceLeft = dropWhile isWhitespace 
+isWhitespace x = elem x [' ', '\t', '\n']
+stripWhitespace = reverse . stripWhitespaceLeft . reverse . stripWhitespaceLeft
+
+vBool :: Bool -> String -> Bool
+vBool defaultVal value = case value of
+                           z | z `elem` ["true","yes","1"] -> True
+                           z | z `elem` ["false","no","0"] -> False
+                           _ -> defaultVal
+
diff --git a/README b/README
new file mode 100644
--- /dev/null
+++ b/README
@@ -0,0 +1,78 @@
+highlighting-kate is a Haskell source code highlighting library, based
+on Kate's syntax description files (http://kate-editor.org/).
+
+Currently, the following languages are supported:
+
+Ada, Asp, Awk, Bash, Bibtex, C, Cmake, Coldfusion, Commonlisp, Cpp, Css,
+D, Djangotemplate, Doxygen, Dtd, Eiffel, Erlang, Fortran, Haskell,
+Html, Java, Javadoc, Javascript, Json, Latex, Lex, LiterateHaskell, Lua,
+Makefile, Matlab, Mediawiki, Modula3, Nasm, Objectivec, Ocaml, Pascal,
+Perl, Php, Postscript, Prolog, Python, Rhtml, Ruby, Scala, Scheme, Sgml,
+Sql, SqlMysql, SqlPostgresql, Tcl, Texinfo, Xml, Xslt, Yacc
+
+To install:
+
+    runghc Setup.lhs configure
+    runghc Setup.lhs build 
+    runghc Setup.lhs haddock    # optional, if you want library documentation
+    runghc Setup.lhs install    # as root, or specify --user 
+
+For an example of the use of the library, see Highlight.hs.
+To compile this program along with the library, specify the 'executable'
+flag in the configure step above:
+
+    runghc Setup.lhs configure -fexecutable
+
+To run Highlight, specify the language name using -s:
+
+    Highlight -s haskell Highlight.hs > example.html
+
+If you don't specify a language name, Highlight will try to guess it
+from the file extension.  Highlight can also be used as a pipe, reading
+input from STDIN.  For other options,
+
+    Highlight --help
+
+Styling is done using span tags.  The Highlight program will include
+default styles in the generated HTML, unless a link to a CSS file is
+provided using the '--css' option. Some sample CSS files can be found
+in the css directory. These use generic class names (Normal, Keyword,
+DataType, DecVal, BaseN, Float, Char, String, Comment, Function, Others,
+Alert, Error). For more fine-grained highlighting, users may wish to
+create their own CSS files that use language-specific classes.
+
+The parsers in Text/Highlighting/Kate/Syntax were automatically generated
+from the Kate syntax definitions in the xml directory. You may modify
+the xml files in this directory, or add new ones, and then regenerate
+the parsers by doing:
+
+    runghc ParseSyntaxFiles.hs xml
+
+Note that ParseSyntaxFiles.hs requires the HXT package.
+
+You can browse the available Kate syntax highlighting files at
+
+    http://kate-editor.org/downloads/syntax_highlighting
+
+or retrieve them all using Subversion:
+
+    svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdelibs/kate/syntax/data kate-data 
+
+There is information on the syntax highlighting definitions at
+
+    http://kate-editor.org/article/writing_a_kate_highlighting_xml_file
+
+Thanks are due to all the authors of these syntax definitions.
+
+Changes have been made to the following xml files (the originals have
+been left in the directory, with .bkp extensions):
+
+- javascript.xml:  Fixed regex \s* (which matches empty string) by changes to DetectSpaces
+- perl.xml:  Fixed regexes - needed backslash-escapes before ] and ^
+- haskell.xml:  Added support for module names
+- bash.xml: Changed "\\" to "\" in two Detect2Char rules in FindString
+
+NOTE:  This software is largely untested.  Known bugs are recorded in the file
+BUGS. Please send bug reports (or better, patches) to the author (jgm at
+berkeley dot edu).
+
diff --git a/Setup.lhs b/Setup.lhs
new file mode 100644
--- /dev/null
+++ b/Setup.lhs
@@ -0,0 +1,4 @@
+#!/usr/bin/env runhaskell
+
+> import Distribution.Simple
+> main = defaultMain
diff --git a/Text/Highlighting/Kate.hs b/Text/Highlighting/Kate.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate.hs
@@ -0,0 +1,38 @@
+{- |
+   Module      : Text.Highlighting.Kate
+   Copyright   : Copyright (C) 2008 John MacFarlane
+   License     : GNU GPL, version 2 or above 
+
+   Maintainer  : John MacFarlane <jgm@berkeley.edu>
+   Stability   : alpha 
+   Portability : portable
+
+This helper module exports the main highlighting and formatting
+functions.
+  
+A typical application will combine a highlighter and a formatter:
+
+> main = do
+>   code <- getContents
+>   case highlightAs "ruby" code of
+>         Right result -> putStrLn $ renderHtmlFragment $ 
+>                         formatAsXHtml [OptNumberLines] "ruby" result
+>         Left  err    -> error $ "Could not parse input: " ++ err
+
+-}
+
+module Text.Highlighting.Kate ( highlightAs
+                              , languages
+                              , languagesByExtension
+                              , formatAsXHtml
+                              , FormatOption (..)
+                              , defaultHighlightingCss
+                              , SourceLine
+                              , LabeledSource
+                              , highlightingKateVersion
+                              ) where
+import Text.Highlighting.Kate.Format ( formatAsXHtml, FormatOption (..), defaultHighlightingCss )
+import Text.Highlighting.Kate.Syntax ( highlightAs, languages, languagesByExtension )
+import Text.Highlighting.Kate.Definitions ( SourceLine, LabeledSource )
+
+highlightingKateVersion = "0.2"
diff --git a/Text/Highlighting/Kate/Common.hs b/Text/Highlighting/Kate/Common.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Common.hs
@@ -0,0 +1,266 @@
+{- |
+   Module      : Text.Highlighting.Kate.Common
+   Copyright   : Copyright (C) 2008 John MacFarlane
+   License     : GNU GPL, version 2 or above 
+
+   Maintainer  : John MacFarlane <jgm@berkeley.edu>
+   Stability   : alpha 
+   Portability : portable
+
+Parsers used in all the individual syntax parsers.
+-}
+
+module Text.Highlighting.Kate.Common where
+import Text.Regex.PCRE.Light.Char8
+import Text.Highlighting.Kate.Definitions
+import Text.ParserCombinators.Parsec
+import Data.Char (toUpper, isDigit, chr)
+import qualified Data.Map as Map
+
+-- | Like >>, but returns the operation on the left.
+-- (Suggested by Tillmann Rendel on Haskell-cafe list.)
+(>>~) :: (Monad m) => m a -> m b -> m a
+a >>~ b = a >>= \x -> b >> return x
+
+capitalize :: [Char] -> [Char]
+capitalize [] = []
+capitalize (a:as) = toUpper a : as
+
+normalizeHighlighting :: [LabeledSource] -> [LabeledSource]
+normalizeHighlighting [] = []
+normalizeHighlighting ((a,x):(b,y):xs) | a == b = normalizeHighlighting ((a, x++y):xs)
+normalizeHighlighting (x:xs) = x : normalizeHighlighting xs
+
+pushContext :: [Char] -> GenParser tok SyntaxState ()
+pushContext context = if context == "#stay"
+                         then return ()
+                         else do st <- getState
+                                 let contexts = synStContexts st
+                                 let lang = synStLanguage st
+                                 let addContext c x = case x of
+                                                       Nothing -> Just [c]
+                                                       Just cs -> Just (c:cs)
+                                 let newContexts = Map.alter (addContext context) lang contexts 
+                                 updateState $ \st -> st { synStContexts = newContexts }
+
+popContext :: GenParser tok SyntaxState String
+popContext = do st <- getState
+                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 (head conts) -- don't remove last member of stack
+                                        _ -> do let newContexts = Map.adjust tail lang contexts
+                                                updateState $ \st -> st { synStContexts = newContexts }
+                                                return (head conts)
+                    Nothing    -> fail $ "No context stack for language " ++ lang 
+
+currentContext :: GenParser tok SyntaxState String
+currentContext = do st <- getState
+                    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)
+                         Nothing    -> fail $ "No context stack for language " ++ lang
+
+withChildren :: GenParser tok SyntaxState LabeledSource
+             -> GenParser tok SyntaxState LabeledSource
+             -> GenParser tok SyntaxState LabeledSource
+withChildren parent child = do
+  (pAttr, pResult) <- parent
+  (_, cResult) <- option ([],"") child
+  return (pAttr, pResult ++ cResult)
+
+wholeLine :: GenParser Char st [Char]
+wholeLine = manyTill anyChar (newline <|> (eof >> return '\n'))
+
+pFirstNonSpace :: GenParser tok SyntaxState ()
+pFirstNonSpace = do
+  curLine <- currentLine
+  charsParsedInLine <- getState >>= return . synStCharsParsedInLine
+  let (sps, nonSps) = span (`elem` " \t") curLine
+  if length sps == charsParsedInLine && length nonSps > 0 
+     then return ()
+     else fail "Not first nonspace"
+
+currentColumn :: GenParser tok st Column
+currentColumn = getPosition >>= return . sourceColumn
+
+currentLine :: GenParser tok SyntaxState String
+currentLine = getState >>= return . synStCurrentLine
+
+pColumn :: Column -> GenParser tok st ()
+pColumn col = do
+  curCol <- currentColumn
+  if col == (curCol - 1) -- parsec's columns start with 1
+     then return ()
+     else fail $ "Not column " ++ show col
+
+pGetCapture :: Int -> GenParser tok SyntaxState String
+pGetCapture capNum = do
+  captures <- getState >>= return . synStCaptures
+  if length captures < capNum
+     then fail "Not enough captures"
+     else return $ captures !! (capNum - 1)
+
+pDetectChar :: Bool -> Char -> GenParser Char SyntaxState String
+pDetectChar dynamic ch = do 
+  if dynamic && isDigit ch
+     then pGetCapture (read [ch]) >>= try . string
+     else char ch >>= return . (:[])
+
+pDetect2Chars :: Bool -> Char -> Char -> GenParser Char SyntaxState [Char]
+pDetect2Chars dynamic ch1 ch2 = try $ do
+  [c1] <- pDetectChar dynamic ch1
+  [c2] <- pDetectChar dynamic ch2
+  return [c1, c2]
+
+pKeyword :: [Char] -> [[Char]] -> GenParser Char SyntaxState [Char]
+pKeyword delims list = try $ do
+  st <- getState
+  let caseSensitive = synStKeywordCaseSensitive st
+  let curLine = synStCurrentLine st
+  let charsParsed = synStCharsParsedInLine st
+  let prevChar = if charsParsed == 0
+                    then Nothing
+                    else if length curLine < charsParsed
+                            then Nothing
+                            else Just $ curLine !! (charsParsed - 1)
+  case prevChar of
+         Just x | not (x `elem` delims) -> fail "Not preceded by a delimiter"
+         _ -> return ()
+  word <- many1 (noneOf delims)
+  if word `elem` list
+     then return word
+     else if not caseSensitive && (map toUpper word) `elem` (map (map toUpper) list)
+             then return word
+             else fail "Keyword not in list"
+
+pString :: Bool -> [Char] -> GenParser Char SyntaxState String
+pString dynamic str =
+  if dynamic
+     then subDynamic str >>= try . string
+     else try $ string str
+
+pAnyChar :: [Char] -> GenParser Char st [Char]
+pAnyChar chars = oneOf chars >>= return . (:[])
+
+pDefault :: GenParser Char st [Char]
+pDefault = noneOf "\n" >>= return . (:[])
+
+-- The following alternative gives a 25% speed improvement, but it's possible
+-- that it won't work for all syntaxes:
+-- pDefault = (many1 alphaNum) <|> (noneOf "\n" >>= return . (:[]))
+
+subDynamic :: [Char] -> GenParser tok SyntaxState [Char]
+subDynamic ('%':x:xs) | isDigit x = do
+  captures <- getState >>= return . synStCaptures
+  let capNum = read [x]
+  let replacement = if length captures < capNum
+                       then ['%',x]
+                       else captures !! (capNum - 1)
+  subDynamic xs >>= return . (replacement ++)
+subDynamic (x:xs) = subDynamic xs >>= return . (x:)
+subDynamic "" = return ""
+
+pRegExpr :: Regex -> GenParser Char SyntaxState String
+pRegExpr compiledRegex = do
+  st <- getState
+  let curLine = synStCurrentLine st
+  let charsParsedInLine = synStCharsParsedInLine st
+  -- Note: we keep one preceding character, so initial \b can match or not...
+  let remaining = if charsParsedInLine == 0
+                     then ' ':curLine
+                     else drop (charsParsedInLine - 1) curLine 
+  case match compiledRegex remaining [exec_notempty] of
+        Just (x:xs) -> do if null xs
+                             then return ()
+                             else updateState (\st -> st {synStCaptures = xs})
+                          string (drop 1 x) 
+        _           -> fail $ "Regex " ++ (show compiledRegex) ++ " failed to match"
+
+pRegExprDynamic :: [Char] -> GenParser Char SyntaxState String
+pRegExprDynamic regexpStr = do
+  regexpStr' <- subDynamic regexpStr
+  let compiledRegex = compileRegex regexpStr'
+  pRegExpr compiledRegex 
+
+escapeRegex :: String -> String
+escapeRegex [] = ""
+escapeRegex ('\\':'0':x:y:z:rest) | isDigit x && isDigit y && isDigit z =
+  chr (read ['0','o',x,y,z]) : escapeRegex rest
+escapeRegex ('\\':x:y:z:rest) | isDigit x && isDigit y && isDigit z =
+  chr (read ['0','o',x,y,z]) : escapeRegex rest
+escapeRegex (x:xs) = x : escapeRegex xs 
+
+compileRegex :: String -> Regex
+compileRegex regexpStr = compile ('.' : escapeRegex regexpStr) [anchored]
+
+integerRegex :: Regex
+integerRegex = compileRegex "\\b[-+]?(0[Xx][0-9A-Fa-f]+|0[Oo][0-7]+|[0-9]+)\\b"
+
+pInt :: GenParser Char SyntaxState String
+pInt = pRegExpr integerRegex 
+
+pUnimplemented :: GenParser Char st [Char]
+pUnimplemented = do
+  fail "Not implemented"
+  return ""
+
+floatRegex :: Regex
+floatRegex = compileRegex "\\b[-+]?(([0-9]+\\.[0-9]*|[0-9]*\\.[0-9]+)([Ee][-+]?[0-9]+)?|[0-9]+[Ee][-+]?[0-9]+)\\b"
+
+pFloat :: GenParser Char SyntaxState String
+pFloat = pRegExpr floatRegex
+
+octRegex :: Regex
+octRegex = compileRegex "\\b[-+]?0[Oo][0-7]+\\b"
+
+pHlCOct :: GenParser Char SyntaxState String
+pHlCOct = pRegExpr octRegex
+
+hexRegex :: Regex
+hexRegex = compileRegex "\\b[-+]?0[Xx][0-9A-Fa-f]+\\b"
+
+pHlCHex :: GenParser Char SyntaxState String
+pHlCHex = pRegExpr hexRegex
+
+pHlCStringChar :: GenParser Char st [Char]
+pHlCStringChar = try $ do 
+  char '\\'
+  (oneOf "abefnrtv\"'?\\" >>= return  . (\x -> ['\\',x]))
+    <|> (do a <- oneOf "xX"
+            b <- many1 hexDigit
+            return ('\\':a:b))
+    <|> (do a <- char '0'
+            b <- many1 octDigit
+            return ('\\':a:b))
+
+pHlCChar :: GenParser Char st [Char]
+pHlCChar = try $ do
+  char '\''
+  c <- pHlCStringChar
+  char '\''
+  return ('\'' : c ++ "'")
+
+pRangeDetect :: Char -> Char -> GenParser Char st [Char]
+pRangeDetect startChar endChar = try $ do
+  char startChar
+  body <- manyTill (noneOf ['\n', endChar]) (char endChar)
+  return $ startChar : (body ++ [endChar])
+
+pLineContinue :: GenParser Char st String
+pLineContinue = try $ string "\\\n"
+
+pDetectSpaces :: GenParser Char st [Char]
+pDetectSpaces = many1 (oneOf "\t ")
+
+pDetectIdentifier :: GenParser Char st [Char]
+pDetectIdentifier = do
+  first <- letter
+  rest <- many alphaNum
+  return (first:rest)
+
diff --git a/Text/Highlighting/Kate/Definitions.hs b/Text/Highlighting/Kate/Definitions.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Definitions.hs
@@ -0,0 +1,36 @@
+{- |
+   Module      : Text.Highlighting.Kate.Definitions
+   Copyright   : Copyright (C) 2008 John MacFarlane
+   License     : GNU GPL, version 2 or above 
+
+   Maintainer  : John MacFarlane <jgm@berkeley.edu>
+   Stability   : alpha 
+   Portability : portable
+
+Definitions for data structures needed by highlighting-kate.
+-}
+
+module Text.Highlighting.Kate.Definitions where
+import qualified Data.Map as Map
+
+-- | A stack of context names for each language.  (Language-specific context
+-- stacks must be maintained because of IncludeRules.)
+type ContextStack = Map.Map String [String]
+
+-- | State for syntax parser.
+data SyntaxState = SyntaxState
+  { synStContexts             :: ContextStack -- ^ Stack of contexts
+  , synStLanguage             :: String       -- ^ Language being parsed 
+  , synStCurrentLine          :: String       -- ^ Contents of current line
+  , synStCharsParsedInLine    :: Int          -- ^ Num characters parsed in line
+  , synStCaseSensitive        :: Bool         -- ^ Language is case-sensitive
+  , synStKeywordCaseSensitive :: Bool         -- ^ Keywords are case-sensitive
+  , synStCaptures             :: [String]     -- ^ List of regex captures from
+                                              --   last capturing match
+  } deriving (Read, Show)
+
+-- | A pair consisting of a list of attributes and some text.
+type LabeledSource = ([String], String)
+
+-- | A line of source, list of labeled source items.
+type SourceLine = [LabeledSource]
diff --git a/Text/Highlighting/Kate/Format.hs b/Text/Highlighting/Kate/Format.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Format.hs
@@ -0,0 +1,85 @@
+{- |
+   Module      : Text.Highlighting.Kate.Format
+   Copyright   : Copyright (C) 2008 John MacFarlane
+   License     : GNU GPL, version 2 or above 
+
+   Maintainer  : John MacFarlane <jgm@berkeley.edu>
+   Stability   : alpha 
+   Portability : portable
+
+Formatters that convert a list of annotated source lines to various output formats.
+-}
+
+module Text.Highlighting.Kate.Format ( formatAsXHtml, FormatOption (..), defaultHighlightingCss ) where
+import Text.Highlighting.Kate.Definitions
+import Text.XHtml.Transitional
+
+-- | Options for formatters.
+data FormatOption = OptNumberLines     -- ^ Number lines
+                  | OptNumberFrom Int  -- ^ Number of first line
+                  | OptTitleAttributes -- ^ Include title attributes
+                  deriving (Eq, Show, Read)
+
+-- | Format a list of highlighted @SourceLine@s as XHtml.
+formatAsXHtml :: [FormatOption]  -- ^ Options
+              -> String          -- ^ Language
+              -> [SourceLine]    -- ^ Source lines to format
+              -> Html
+formatAsXHtml opts lang lines =
+  let startNum = getStartNum opts
+      numberOfLines = length lines
+      code = thecode << map (sourceLineToHtml opts) lines
+  in  if OptNumberLines `elem` opts
+         then let lnTitle = title "Click to toggle line numbers"
+                  lnOnClick = strAttr "onclick" "with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"
+                  lineNumbers = td ! [theclass "lineNumbers", lnTitle, lnOnClick] $ pre <<
+                                     (unlines $ map show [startNum..(startNum + numberOfLines - 1)])
+                  sourceCode = td ! [theclass "sourceCode"] $ 
+                                    pre ! [theclass $ unwords ["sourceCode", lang]] $ code
+              in  table ! [theclass "sourceCode"] $ tr << [lineNumbers, sourceCode]
+         else pre ! [theclass $ unwords ["sourceCode", lang]] $ code
+
+labeledSourceToHtml :: [FormatOption] -> LabeledSource -> Html
+labeledSourceToHtml opts (syntaxType, txt) =
+  let classes = unwords $ filter (/= "") $ map removeSpaces syntaxType
+  in if null classes 
+        then toHtml txt
+        else let attribs = [theclass classes] ++ 
+                           if OptTitleAttributes `elem` opts
+                              then [title classes] 
+                              else []
+             in  thespan ! attribs << txt 
+
+sourceLineToHtml :: [FormatOption] -> SourceLine -> Html
+sourceLineToHtml opts contents =
+  concatHtml $ (map (labeledSourceToHtml opts) contents) ++ [br]
+
+removeSpaces :: String -> String
+removeSpaces = filter (/= ' ')
+
+getStartNum :: [FormatOption] -> Int
+getStartNum [] = 1
+getStartNum (OptNumberFrom n : _) = n
+getStartNum (_:xs) = getStartNum xs
+
+defaultHighlightingCss :: String
+defaultHighlightingCss = 
+  "table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode, table.sourceCode pre \n\ 
+  \   { margin: 0; padding: 0; border: 0; vertical-align: baseline; border: none; }\n\ 
+  \td.lineNumbers { border-right: 1px solid #AAAAAA; text-align: right; color: #AAAAAA; padding-right: 5px; padding-left: 5px; }\n\  
+  \td.sourceCode { padding-left: 5px; }\n\ 
+  \pre.sourceCode { }\n\ 
+  \pre.sourceCode span.Normal { }\n\ 
+  \pre.sourceCode span.Keyword { color: #007020; font-weight: bold; } \n\ 
+  \pre.sourceCode span.DataType { color: #902000; }\n\ 
+  \pre.sourceCode span.DecVal { color: #40a070; }\n\ 
+  \pre.sourceCode span.BaseN { color: #40a070; }\n\ 
+  \pre.sourceCode span.Float { color: #40a070; }\n\ 
+  \pre.sourceCode span.Char { color: #4070a0; }\n\ 
+  \pre.sourceCode span.String { color: #4070a0; }\n\ 
+  \pre.sourceCode span.Comment { color: #60a0b0; font-style: italic; }\n\ 
+  \pre.sourceCode span.Others { color: #007020; }\n\ 
+  \pre.sourceCode span.Alert { color: red; font-weight: bold; }\n\ 
+  \pre.sourceCode span.Function { color: #06287e; }\n\ 
+  \pre.sourceCode span.RegionMarker { }\n\ 
+  \pre.sourceCode span.Error { color: red; font-weight: bold; }"
diff --git a/Text/Highlighting/Kate/Syntax.hs b/Text/Highlighting/Kate/Syntax.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax.hs
@@ -0,0 +1,144 @@
+module Text.Highlighting.Kate.Syntax ( highlightAs, languages, languagesByExtension ) where
+import Data.Char (toLower)
+import Data.Maybe (fromMaybe)
+import Text.Highlighting.Kate.Definitions
+import qualified Text.Highlighting.Kate.Syntax.Ada as Ada
+import qualified Text.Highlighting.Kate.Syntax.Alert as Alert
+import qualified Text.Highlighting.Kate.Syntax.Asp as Asp
+import qualified Text.Highlighting.Kate.Syntax.Awk as Awk
+import qualified Text.Highlighting.Kate.Syntax.Bash as Bash
+import qualified Text.Highlighting.Kate.Syntax.Bibtex as Bibtex
+import qualified Text.Highlighting.Kate.Syntax.C as C
+import qualified Text.Highlighting.Kate.Syntax.Cmake as Cmake
+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
+import qualified Text.Highlighting.Kate.Syntax.Css as Css
+import qualified Text.Highlighting.Kate.Syntax.D as D
+import qualified Text.Highlighting.Kate.Syntax.Djangotemplate as Djangotemplate
+import qualified Text.Highlighting.Kate.Syntax.Doxygen as Doxygen
+import qualified Text.Highlighting.Kate.Syntax.Dtd as Dtd
+import qualified Text.Highlighting.Kate.Syntax.Eiffel as Eiffel
+import qualified Text.Highlighting.Kate.Syntax.Erlang as Erlang
+import qualified Text.Highlighting.Kate.Syntax.Fortran as Fortran
+import qualified Text.Highlighting.Kate.Syntax.Haskell as Haskell
+import qualified Text.Highlighting.Kate.Syntax.Html as Html
+import qualified Text.Highlighting.Kate.Syntax.Java as Java
+import qualified Text.Highlighting.Kate.Syntax.Javadoc as Javadoc
+import qualified Text.Highlighting.Kate.Syntax.Javascript as Javascript
+import qualified Text.Highlighting.Kate.Syntax.Json as Json
+import qualified Text.Highlighting.Kate.Syntax.Latex as Latex
+import qualified Text.Highlighting.Kate.Syntax.Lex as Lex
+import qualified Text.Highlighting.Kate.Syntax.LiterateHaskell as LiterateHaskell
+import qualified Text.Highlighting.Kate.Syntax.Lua as Lua
+import qualified Text.Highlighting.Kate.Syntax.Makefile as Makefile
+import qualified Text.Highlighting.Kate.Syntax.Matlab as Matlab
+import qualified Text.Highlighting.Kate.Syntax.Mediawiki as Mediawiki
+import qualified Text.Highlighting.Kate.Syntax.Modula3 as Modula3
+import qualified Text.Highlighting.Kate.Syntax.Nasm as Nasm
+import qualified Text.Highlighting.Kate.Syntax.Objectivec as Objectivec
+import qualified Text.Highlighting.Kate.Syntax.Ocaml as Ocaml
+import qualified Text.Highlighting.Kate.Syntax.Pascal as Pascal
+import qualified Text.Highlighting.Kate.Syntax.Perl as Perl
+import qualified Text.Highlighting.Kate.Syntax.Php as Php
+import qualified Text.Highlighting.Kate.Syntax.Postscript as Postscript
+import qualified Text.Highlighting.Kate.Syntax.Prolog as Prolog
+import qualified Text.Highlighting.Kate.Syntax.Python as Python
+import qualified Text.Highlighting.Kate.Syntax.Rhtml as Rhtml
+import qualified Text.Highlighting.Kate.Syntax.Ruby as Ruby
+import qualified Text.Highlighting.Kate.Syntax.Scala as Scala
+import qualified Text.Highlighting.Kate.Syntax.Scheme as Scheme
+import qualified Text.Highlighting.Kate.Syntax.Sgml as Sgml
+import qualified Text.Highlighting.Kate.Syntax.Sql as Sql
+import qualified Text.Highlighting.Kate.Syntax.SqlMysql as SqlMysql
+import qualified Text.Highlighting.Kate.Syntax.SqlPostgresql as SqlPostgresql
+import qualified Text.Highlighting.Kate.Syntax.Tcl as Tcl
+import qualified Text.Highlighting.Kate.Syntax.Texinfo as Texinfo
+import qualified Text.Highlighting.Kate.Syntax.Xml as Xml
+import qualified Text.Highlighting.Kate.Syntax.Xslt as Xslt
+import qualified Text.Highlighting.Kate.Syntax.Yacc as Yacc
+
+-- | List of supported languages.
+languages :: [String]
+languages = ["Ada","Alert","Asp","Awk","Bash","Bibtex","C","Cmake","Coldfusion","Commonlisp","Cpp","Css","D","Djangotemplate","Doxygen","Dtd","Eiffel","Erlang","Fortran","Haskell","Html","Java","Javadoc","Javascript","Json","Latex","Lex","LiterateHaskell","Lua","Makefile","Matlab","Mediawiki","Modula3","Nasm","Objectivec","Ocaml","Pascal","Perl","Php","Postscript","Prolog","Python","Rhtml","Ruby","Scala","Scheme","Sgml","Sql","SqlMysql","SqlPostgresql","Tcl","Texinfo","Xml","Xslt","Yacc"]
+
+-- | List of language extensions.
+languageExtensions :: [(String, String)]
+languageExtensions = [("Ada", Ada.syntaxExtensions), ("Alert", Alert.syntaxExtensions), ("Asp", Asp.syntaxExtensions), ("Awk", Awk.syntaxExtensions), ("Bash", Bash.syntaxExtensions), ("Bibtex", Bibtex.syntaxExtensions), ("C", C.syntaxExtensions), ("Cmake", Cmake.syntaxExtensions), ("Coldfusion", Coldfusion.syntaxExtensions), ("Commonlisp", Commonlisp.syntaxExtensions), ("Cpp", Cpp.syntaxExtensions), ("Css", Css.syntaxExtensions), ("D", D.syntaxExtensions), ("Djangotemplate", Djangotemplate.syntaxExtensions), ("Doxygen", Doxygen.syntaxExtensions), ("Dtd", Dtd.syntaxExtensions), ("Eiffel", Eiffel.syntaxExtensions), ("Erlang", Erlang.syntaxExtensions), ("Fortran", Fortran.syntaxExtensions), ("Haskell", Haskell.syntaxExtensions), ("Html", Html.syntaxExtensions), ("Java", Java.syntaxExtensions), ("Javadoc", Javadoc.syntaxExtensions), ("Javascript", Javascript.syntaxExtensions), ("Json", Json.syntaxExtensions), ("Latex", Latex.syntaxExtensions), ("Lex", Lex.syntaxExtensions), ("LiterateHaskell", LiterateHaskell.syntaxExtensions), ("Lua", Lua.syntaxExtensions), ("Makefile", Makefile.syntaxExtensions), ("Matlab", Matlab.syntaxExtensions), ("Mediawiki", Mediawiki.syntaxExtensions), ("Modula3", Modula3.syntaxExtensions), ("Nasm", Nasm.syntaxExtensions), ("Objectivec", Objectivec.syntaxExtensions), ("Ocaml", Ocaml.syntaxExtensions), ("Pascal", Pascal.syntaxExtensions), ("Perl", Perl.syntaxExtensions), ("Php", Php.syntaxExtensions), ("Postscript", Postscript.syntaxExtensions), ("Prolog", Prolog.syntaxExtensions), ("Python", Python.syntaxExtensions), ("Rhtml", Rhtml.syntaxExtensions), ("Ruby", Ruby.syntaxExtensions), ("Scala", Scala.syntaxExtensions), ("Scheme", Scheme.syntaxExtensions), ("Sgml", Sgml.syntaxExtensions), ("Sql", Sql.syntaxExtensions), ("SqlMysql", SqlMysql.syntaxExtensions), ("SqlPostgresql", SqlPostgresql.syntaxExtensions), ("Tcl", Tcl.syntaxExtensions), ("Texinfo", Texinfo.syntaxExtensions), ("Xml", Xml.syntaxExtensions), ("Xslt", Xslt.syntaxExtensions), ("Yacc", Yacc.syntaxExtensions)]
+
+-- | Returns a list of languages appropriate for the given file extension.
+languagesByExtension :: String -> [String]
+languagesByExtension ext = filter (hasExtension ext) languages
+
+-- | True if extension belongs to language.
+hasExtension ext lang =
+  let exts = fromMaybe "" (lookup lang languageExtensions)
+      matchExtension _ [] = False
+      matchExtension ext ('.':xs) =
+        let (next, rest) = span (/=';') xs
+        in  if next == ext then True else matchExtension ext rest
+      matchExtension ext (_:xs) = matchExtension ext xs
+  in  matchExtension (dropWhile (=='.') ext) exts
+
+-- | Highlight source code using a specified syntax definition.
+highlightAs :: String                        -- ^ Language syntax
+            -> String                        -- ^ Source code to highlight
+            -> Either String [SourceLine]    -- ^ Either error message or result
+highlightAs lang =
+  case (map toLower lang) of
+        "ada" -> Ada.highlight
+        "alert" -> Alert.highlight
+        "asp" -> Asp.highlight
+        "awk" -> Awk.highlight
+        "bash" -> Bash.highlight
+        "bibtex" -> Bibtex.highlight
+        "c" -> C.highlight
+        "cmake" -> Cmake.highlight
+        "coldfusion" -> Coldfusion.highlight
+        "commonlisp" -> Commonlisp.highlight
+        "cpp" -> Cpp.highlight
+        "css" -> Css.highlight
+        "d" -> D.highlight
+        "djangotemplate" -> Djangotemplate.highlight
+        "doxygen" -> Doxygen.highlight
+        "dtd" -> Dtd.highlight
+        "eiffel" -> Eiffel.highlight
+        "erlang" -> Erlang.highlight
+        "fortran" -> Fortran.highlight
+        "haskell" -> Haskell.highlight
+        "html" -> Html.highlight
+        "java" -> Java.highlight
+        "javadoc" -> Javadoc.highlight
+        "javascript" -> Javascript.highlight
+        "json" -> Json.highlight
+        "latex" -> Latex.highlight
+        "lex" -> Lex.highlight
+        "literatehaskell" -> LiterateHaskell.highlight
+        "lua" -> Lua.highlight
+        "makefile" -> Makefile.highlight
+        "matlab" -> Matlab.highlight
+        "mediawiki" -> Mediawiki.highlight
+        "modula3" -> Modula3.highlight
+        "nasm" -> Nasm.highlight
+        "objectivec" -> Objectivec.highlight
+        "ocaml" -> Ocaml.highlight
+        "pascal" -> Pascal.highlight
+        "perl" -> Perl.highlight
+        "php" -> Php.highlight
+        "postscript" -> Postscript.highlight
+        "prolog" -> Prolog.highlight
+        "python" -> Python.highlight
+        "rhtml" -> Rhtml.highlight
+        "ruby" -> Ruby.highlight
+        "scala" -> Scala.highlight
+        "scheme" -> Scheme.highlight
+        "sgml" -> Sgml.highlight
+        "sql" -> Sql.highlight
+        "sqlmysql" -> SqlMysql.highlight
+        "sqlpostgresql" -> SqlPostgresql.highlight
+        "tcl" -> Tcl.highlight
+        "texinfo" -> Texinfo.highlight
+        "xml" -> Xml.highlight
+        "xslt" -> Xslt.highlight
+        "yacc" -> Yacc.highlight
+        _ -> (\_ -> Left ("Unknown language ++ " ++ lang))
diff --git a/Text/Highlighting/Kate/Syntax/Ada.hs b/Text/Highlighting/Kate/Syntax/Ada.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Ada.hs
@@ -0,0 +1,136 @@
+{- This module was generated from data in the Kate syntax highlighting file ada.xml, version 1.07,
+   by   -}
+
+module Text.Highlighting.Kate.Syntax.Ada ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Ada"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.adb;*.ads;*.ada;*.a"
+
+-- | 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 = "Ada" }
+  context <- currentContext <|> (pushContext "Default" >> 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 [("Ada",["Default"])], synStLanguage = "Ada", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = False, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Default" -> return ()
+    "Region Marker" -> (popContext >> return ())
+    "String" -> (popContext >> return ())
+    "Comment" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Pragmas","Keyword"),("Data Type","DataType"),("Decimal","DecVal"),("Base-N","BaseN"),("Float","Float"),("Char","Char"),("String","String"),("Comment","Comment"),("Symbol","Normal"),("Region Marker","RegionMarker")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Default","Normal Text"),("Region Marker","Region Marker"),("String","String"),("Comment","Comment")]
+
+parseRules "Default" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\brecord\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bend\\s+record\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bcase\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bend\\s+case\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bif\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bend\\s+if\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bloop\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bend\\s+loop\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bselect\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bend\\s+select\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bbegin\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bend\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pFirstNonSpace >> pString False "--  BEGIN" >>= withAttribute "Region Marker") >>~ pushContext "Region Marker")
+                        <|>
+                        ((pFirstNonSpace >> pString False "--  END" >>= withAttribute "Region Marker") >>~ pushContext "Region Marker")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["abort","abs","abstract","accept","access","aliased","all","and","array","at","begin","body","constant","declare","delay","delta","digits","do","else","elsif","end","entry","exception","exit","for","function","generic","goto","in","interface","is","limited","mod","new","not","null","of","or","others","out","overriding","package","pragma","private","procedure","protected","raise","range","rem","record","renames","requeue","return","reverse","separate","subtype","tagged","task","terminate","then","type","until","use","when","while","with","xor"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["all_calls_remote","assert","assertion_policy","asynchronous","atomic","atomic_components","attach_handler","controlled","convention","detect_blocking","discard_names","elaborate","elaborate_all","elaborate_body","export","import","inline","inspection_point","interrupt_handler","interrupt_priority","linker_options","list","locking_policy","no_return","normalize_scalars","optimize","pack","page","partition_elaboration_policy","preelaborable_initialization","preelaborate","priority","priority_specific_dispatching","profile","pure","queuing_policy","relative_deadline","remote_call_interface","remote_types","restrictions","reviewable","shared_passive","storage_size","suppress","task_dispatching_policy","unchecked_union","unsuppress","volatile","volatile_components"] >>= withAttribute "Pragmas"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["boolean","char","float","integer","long_float","long_integer","long_long_float","long_long_integer","short_float","short_integer","string","wide_string","wide_char","wide_wide_char","wide_wide_string"] >>= withAttribute "Data Type"))
+                        <|>
+                        ((pFloat >>= withAttribute "Float"))
+                        <|>
+                        ((pInt >>= withAttribute "Decimal"))
+                        <|>
+                        ((pRegExpr (compileRegex "'.'") >>= withAttribute "Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((pDetect2Chars False '-' '-' >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pAnyChar ":!%&()+,-/.*<=>|" >>= withAttribute "Symbol")))
+     return (attr, result)
+
+parseRules "Region Marker" = 
+  pzero
+
+parseRules "String" = 
+  do (attr, result) <- ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Comment" = 
+  pzero
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Alert.hs b/Text/Highlighting/Kate/Syntax/Alert.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Alert.hs
@@ -0,0 +1,79 @@
+{- This module was generated from data in the Kate syntax highlighting file alert.xml, version 1.07,
+   by  Dominik Haumann (dhdev@gmx.de) -}
+
+module Text.Highlighting.Kate.Syntax.Alert ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Alerts"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = ""
+
+-- | 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 = "Alerts" }
+  context <- currentContext <|> (pushContext "Normal Text" >> 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 [("Alerts",["Normal Text"])], synStLanguage = "Alerts", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal Text" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Alert","Alert")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal Text","Normal Text")]
+
+parseRules "Normal Text" = 
+  do (attr, result) <- ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["FIXME","HACK","NOTE","NOTICE","TASK","TODO","DEPRECATED","WARNING","###"] >>= withAttribute "Alert"))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Asp.hs b/Text/Highlighting/Kate/Syntax/Asp.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Asp.hs
@@ -0,0 +1,291 @@
+{- This module was generated from data in the Kate syntax highlighting file asp.xml, version 1.03,
+   by  Antonio Salazar (savedfastcool@gmail.com) -}
+
+module Text.Highlighting.Kate.Syntax.Asp ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "ASP"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.asp;"
+
+-- | 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 = "ASP" }
+  context <- currentContext <|> (pushContext "nosource" >> 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 [("ASP",["nosource"])], synStLanguage = "ASP", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = False, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "nosource" -> return ()
+    "aspsource" -> return ()
+    "asp_onelinecomment" -> (popContext >> return ())
+    "doublequotestring" -> return ()
+    "singlequotestring" -> return ()
+    "htmltag" -> return ()
+    "htmlcomment" -> return ()
+    "identifiers" -> return ()
+    "types1" -> return ()
+    "types2" -> return ()
+    "scripts" -> return ()
+    "scripts_onelinecomment" -> (popContext >> return ())
+    "twolinecomment" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("ASP Text","Normal"),("Keyword","Keyword"),("Function","Keyword"),("Decimal","DecVal"),("Octal","BaseN"),("Hex","BaseN"),("Float","Float"),("String","String"),("Comment","Comment"),("Variable","Keyword"),("Control Structures","Keyword"),("Escape Code","Keyword"),("Other","Others"),("HTML Tag","Keyword"),("HTML Comment","Comment"),("Identifier","Others"),("Types","DataType")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("nosource","Normal Text"),("aspsource","ASP Text"),("asp_onelinecomment","Comment"),("doublequotestring","String"),("singlequotestring","String"),("htmltag","Identifier"),("htmlcomment","HTML Comment"),("identifiers","Identifier"),("types1","Types"),("types2","Types"),("scripts","Normal Text"),("scripts_onelinecomment","Comment"),("twolinecomment","Comment")]
+
+parseRules "nosource" = 
+  do (attr, result) <- (((pString False "<%" >>= withAttribute "Keyword") >>~ pushContext "aspsource")
+                        <|>
+                        ((pRegExpr (compileRegex "<\\s*script\\s*language=\"VBScript\"[^>]*>") >>= withAttribute "HTML Tag") >>~ pushContext "aspsource")
+                        <|>
+                        ((pRegExpr (compileRegex "<\\s*script(\\s|>)") >>= withAttribute "HTML Tag") >>~ pushContext "scripts")
+                        <|>
+                        ((pRegExpr (compileRegex "<\\s*\\/?\\s*[a-zA-Z_:][a-zA-Z0-9._:-]*") >>= withAttribute "HTML Tag") >>~ pushContext "htmltag")
+                        <|>
+                        ((pString False "<!--" >>= withAttribute "HTML Comment") >>~ pushContext "htmlcomment"))
+     return (attr, result)
+
+parseRules "aspsource" = 
+  do (attr, result) <- (((pString False "%>" >>= withAttribute "Keyword") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "<\\s*\\/\\s*script\\s*>") >>= withAttribute "HTML Tag") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Comment") >>~ pushContext "asp_onelinecomment")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "doublequotestring")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "String") >>~ pushContext "singlequotestring")
+                        <|>
+                        ((pDetectChar False '&' >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "") >>= withAttribute "String"))
+                        <|>
+                        ((pRegExpr (compileRegex "[0123456789]*\\.\\.\\.[0123456789]*") >>= withAttribute "String"))
+                        <|>
+                        ((pHlCOct >>= withAttribute "Octal"))
+                        <|>
+                        ((pHlCHex >>= withAttribute "Hex"))
+                        <|>
+                        ((pFloat >>= withAttribute "Float"))
+                        <|>
+                        ((pInt >>= withAttribute "Decimal"))
+                        <|>
+                        ((pAnyChar ";()}{:,[]" >>= withAttribute "Other"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" [] >>= withAttribute "Other"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\belseif\\b") >>= withAttribute "Control Structures"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\belse\\b") >>= withAttribute "Control Structures"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bif\\b") >>= withAttribute "Control Structures"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bend if\\b") >>= withAttribute "Control Structures"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bexit function\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bfunction\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bend function\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bexit sub\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bsub\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bend sub\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bclass\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bend class\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bexit do\\b") >>= withAttribute "Control Structures"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bdo\\b") >>= withAttribute "Control Structures"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bloop\\b") >>= withAttribute "Control Structures"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bexit while\\b") >>= withAttribute "Control Structures"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bwhile\\b") >>= withAttribute "Control Structures"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bwend\\b") >>= withAttribute "Control Structures"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bexit for\\b") >>= withAttribute "Control Structures"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bfor\\b") >>= withAttribute "Control Structures"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bnext\\b") >>= withAttribute "Control Structures"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bselect case\\b") >>= withAttribute "Control Structures"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bend select\\b") >>= withAttribute "Control Structures"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["dim","redim","preserve","const","erase","nothing","set","new","me","function","sub","call","class","private","public","with","randomize","open","close","movenext","execute","eof","not","true","false","or","and","xor"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["select","case","end select","if","then","else","elseif","end if","while","do","until","loop","wend","for","each","to","in","next","exit","continue"] >>= withAttribute "Control Structures"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["response","write","redirect","end","request","form","querystring","servervariables","cookies","session","server","createobject","abs","array","asc","atn","cbool","cbyte","ccur","cdate","cdbl","chr","cint","clng","cos","csng","cstr","date","dateadd","DateDiff","DatePart","DateSerial","DateValue","Date","Day","Exp","Filter","Fix","FormatCurrency","FormatDateTime","FormatNumber","FormatPercent","GetObject","Hex","Hour","InputBox","InStr","InStrRev","Int","IsArray","IsDate","IsEmpty","IsNull","IsNumeric","IsObject","Join","LBound","LCase","Left","Len","LoadPicture","Log","LTrim","Mid","Minute","Month","MonthName","MsgBox","Now","Oct","Replace","RGB","Right","Rnd","Round","RTrim","ScriptEngine","ScriptEngineBuildVersion","ScriptEngineMajorVersion","ScriptEngineMinorVersion","Second","Sgn","Sin","Space","Split","Sqr","StrComp","StrReverse","String","Tan","Time","Timer","TimeSerial","TimeValue","Trim","TypeName","UBound","UCase","VarType","Weekday","WeekdayName","Year","Add","AddFolders","BuildPath","Clear","Close","Copy","CopyFile","CopyFolder","CreateFolder","CreateTextFile","Delete","DeleteFile","DeleteFolder","DriveExists","Exists","FileExists","FolderExists","GetAbsolutePathName","GetBaseName","GetDrive","GetDriveName","GetExtensionName","GetFile","GetFileName","GetFolder","GetParentFolderName","GetSpecialFolder","GetTempName","Items","item","Keys","Move","MoveFile","MoveFolder","OpenAsTextStream","OpenTextFile","Raise","Read","ReadAll","ReadLine","Remove","RemoveAll","Skip","SkipLine","Write","WriteBlankLines","WriteLine"] >>= withAttribute "Function")))
+     return (attr, result)
+
+parseRules "asp_onelinecomment" = 
+  do (attr, result) <- ((pString False "%>" >>= withAttribute "Keyword") >>~ (popContext >> popContext >> return ()))
+     return (attr, result)
+
+parseRules "doublequotestring" = 
+  do (attr, result) <- (((pDetect2Chars False '"' '"' >>= withAttribute "Escape Code"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\[0-7]{1,3}") >>= withAttribute "Escape Code"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\x[0-9A-Fa-f]{1,2}") >>= withAttribute "Escape Code"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "singlequotestring" = 
+  do (attr, result) <- (((pDetect2Chars False '\'' '\'' >>= withAttribute "Escape Code"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "htmltag" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '>' >>= withAttribute "HTML Tag") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "HTML Tag") >>~ (popContext >> return ()))
+                        <|>
+                        ((pString False "<%" >>= withAttribute "Keyword") >>~ pushContext "aspsource")
+                        <|>
+                        ((pString False "<%" >>= withAttribute "Keyword") >>~ pushContext "aspsource")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*=\\s*") >>= withAttribute "Identifier") >>~ pushContext "identifiers"))
+     return (attr, result)
+
+parseRules "htmlcomment" = 
+  do (attr, result) <- (((pString False "<%" >>= withAttribute "Keyword") >>~ pushContext "aspsource")
+                        <|>
+                        ((pString False "<%" >>= withAttribute "Keyword") >>~ pushContext "aspsource")
+                        <|>
+                        ((pString False "-->" >>= withAttribute "HTML Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*=\\s*") >>= withAttribute "Normal Text") >>~ pushContext "identifiers"))
+     return (attr, result)
+
+parseRules "identifiers" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\s*#?[a-zA-Z0-9]*") >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Types") >>~ pushContext "types1")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Types") >>~ pushContext "types2"))
+     return (attr, result)
+
+parseRules "types1" = 
+  do (attr, result) <- (((pString False "<%" >>= withAttribute "Keyword") >>~ pushContext "aspsource")
+                        <|>
+                        ((pString False "<%" >>= withAttribute "Keyword") >>~ pushContext "aspsource")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Types") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "types2" = 
+  do (attr, result) <- (((pString False "<%" >>= withAttribute "Keyword") >>~ pushContext "aspsource")
+                        <|>
+                        ((pString False "<%" >>= withAttribute "Keyword") >>~ pushContext "aspsource")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Types") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "scripts" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '/' >>= withAttribute "Comment") >>~ pushContext "scripts_onelinecomment")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "twolinecomment")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["select","case","end select","if","then","else","elseif","end if","while","do","until","loop","wend","for","each","to","in","next","exit","continue"] >>= withAttribute "Control Structures"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["dim","redim","preserve","const","erase","nothing","set","new","me","function","sub","call","class","private","public","with","randomize","open","close","movenext","execute","eof","not","true","false","or","and","xor"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["response","write","redirect","end","request","form","querystring","servervariables","cookies","session","server","createobject","abs","array","asc","atn","cbool","cbyte","ccur","cdate","cdbl","chr","cint","clng","cos","csng","cstr","date","dateadd","DateDiff","DatePart","DateSerial","DateValue","Date","Day","Exp","Filter","Fix","FormatCurrency","FormatDateTime","FormatNumber","FormatPercent","GetObject","Hex","Hour","InputBox","InStr","InStrRev","Int","IsArray","IsDate","IsEmpty","IsNull","IsNumeric","IsObject","Join","LBound","LCase","Left","Len","LoadPicture","Log","LTrim","Mid","Minute","Month","MonthName","MsgBox","Now","Oct","Replace","RGB","Right","Rnd","Round","RTrim","ScriptEngine","ScriptEngineBuildVersion","ScriptEngineMajorVersion","ScriptEngineMinorVersion","Second","Sgn","Sin","Space","Split","Sqr","StrComp","StrReverse","String","Tan","Time","Timer","TimeSerial","TimeValue","Trim","TypeName","UBound","UCase","VarType","Weekday","WeekdayName","Year","Add","AddFolders","BuildPath","Clear","Close","Copy","CopyFile","CopyFolder","CreateFolder","CreateTextFile","Delete","DeleteFile","DeleteFolder","DriveExists","Exists","FileExists","FolderExists","GetAbsolutePathName","GetBaseName","GetDrive","GetDriveName","GetExtensionName","GetFile","GetFileName","GetFolder","GetParentFolderName","GetSpecialFolder","GetTempName","Items","item","Keys","Move","MoveFile","MoveFolder","OpenAsTextStream","OpenTextFile","Raise","Read","ReadAll","ReadLine","Remove","RemoveAll","Skip","SkipLine","Write","WriteBlankLines","WriteLine"] >>= withAttribute "Function"))
+                        <|>
+                        ((pString False "<%" >>= withAttribute "Keyword") >>~ pushContext "aspsource")
+                        <|>
+                        ((pRegExpr (compileRegex "<\\s*\\/\\s*script\\s*>") >>= withAttribute "HTML Tag") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "doublequotestring")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "String") >>~ pushContext "singlequotestring")
+                        <|>
+                        ((pHlCOct >>= withAttribute "Octal"))
+                        <|>
+                        ((pHlCHex >>= withAttribute "Hex"))
+                        <|>
+                        ((pFloat >>= withAttribute "Float"))
+                        <|>
+                        ((pInt >>= withAttribute "Decimal"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pAnyChar ";()}{:,[]" >>= withAttribute "Other"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" [] >>= withAttribute "Other")))
+     return (attr, result)
+
+parseRules "scripts_onelinecomment" = 
+  do (attr, result) <- ((pRegExpr (compileRegex "<\\s*\\/\\s*script\\s*>") >>= withAttribute "HTML Tag") >>~ (popContext >> popContext >> return ()))
+     return (attr, result)
+
+parseRules "twolinecomment" = 
+  do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Awk.hs b/Text/Highlighting/Kate/Syntax/Awk.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Awk.hs
@@ -0,0 +1,114 @@
+{- This module was generated from data in the Kate syntax highlighting file awk.xml, version 0.90,
+   by   -}
+
+module Text.Highlighting.Kate.Syntax.Awk ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Alert
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "AWK"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.awk"
+
+-- | 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 = "AWK" }
+  context <- currentContext <|> (pushContext "Base" >> 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 [("AWK",["Base"])], synStLanguage = "AWK", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Base" -> return ()
+    "String" -> return ()
+    "Comment" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal","Normal"),("Keyword","Keyword"),("Builtin","DataType"),("Function","Function"),("Decimal","DecVal"),("Float","Float"),("String","String"),("Comment","Comment"),("Pattern","String"),("Field","Others")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Base","Normal"),("String","String"),("Comment","Comment")]
+
+parseRules "Base" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\b(BEGIN|END)\\b") >>= withAttribute "Pattern"))
+                        <|>
+                        ((pRegExpr (compileRegex "/([^\\/[]|\\\\.|\\[\\]?(\\[[^]]+\\]|.)+\\])+/") >>= withAttribute "Pattern"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Keyword"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Keyword"))
+                        <|>
+                        ((pDetectChar False '#' >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["if","else","while","do","for","in","continue","break","print","printf","getline","function","return","next","exit"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["ARGC","ARGV","CONVFMT","ENVIRON","FILENAME","FNR","FS","NF","NR","OFMT","OFS","ORS","RS","RSTART","RLENGTH","SUBSEP"] >>= withAttribute "Builtin"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["gsub","gensub","index","length","match","split","sprintf","sub","substr","tolower","toupper","atan2","cos","exp","int","log","rand","sin","sqrt","srand","close","fflush","system"] >>= withAttribute "Function"))
+                        <|>
+                        ((pFloat >>= withAttribute "Float"))
+                        <|>
+                        ((pInt >>= withAttribute "Decimal"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$[A-Za-z0-9_]+") >>= withAttribute "Field")))
+     return (attr, result)
+
+parseRules "String" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((pHlCStringChar >>= withAttribute "String")))
+     return (attr, result)
+
+parseRules "Comment" = 
+  do (attr, result) <- ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Bash.hs b/Text/Highlighting/Kate/Syntax/Bash.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Bash.hs
@@ -0,0 +1,652 @@
+{- This module was generated from data in the Kate syntax highlighting file bash.xml, version 2.11,
+   by  Wilbert Berendsen (wilbert@kde.nl) -}
+
+module Text.Highlighting.Kate.Syntax.Bash ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Alert
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Bash"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.sh;*.bash;*.ebuild;*.eclass;.bashrc;.bash_profile;.bash_login;.profile"
+
+-- | 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 = "Bash" }
+  context <- currentContext <|> (pushContext "Start" >> 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 [("Bash",["Start"])], synStLanguage = "Bash", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Start" -> return ()
+    "FindAll" -> return ()
+    "FindMost" -> return ()
+    "FindComments" -> (popContext >> return ())
+    "Comment" -> (popContext >> return ())
+    "FindCommentsParen" -> (popContext >> return ())
+    "CommentParen" -> (popContext >> return ())
+    "FindCommentsBackq" -> (popContext >> return ())
+    "CommentBackq" -> (popContext >> return ())
+    "FindCommands" -> return ()
+    "FindOthers" -> return ()
+    "FindStrings" -> return ()
+    "FindSubstitutions" -> return ()
+    "FindTests" -> return ()
+    "ExprDblParen" -> return ()
+    "ExprDblParenSubst" -> return ()
+    "ExprSubParen" -> return ()
+    "ExprBracket" -> return ()
+    "ExprDblBracket" -> return ()
+    "Group" -> return ()
+    "SubShell" -> return ()
+    "Assign" -> (popContext >> return ())
+    "AssignArray" -> (popContext >> return ())
+    "AssignSubscr" -> (popContext >> return ())
+    "Subscript" -> return ()
+    "FunctionDef" -> (popContext >> return ())
+    "VarName" -> (popContext >> return ())
+    "ProcessSubst" -> return ()
+    "StringSQ" -> return ()
+    "StringDQ" -> return ()
+    "StringEsc" -> return ()
+    "VarBrace" -> return ()
+    "VarAlt" -> return ()
+    "VarSubst" -> return ()
+    "VarSubst2" -> return ()
+    "VarSub" -> return ()
+    "VarSub2" -> return ()
+    "SubstFile" -> return ()
+    "SubstCommand" -> return ()
+    "SubstBackq" -> return ()
+    "Case" -> return ()
+    "CaseIn" -> return ()
+    "CaseExpr" -> return ()
+    "HereDoc" -> return ()
+    "HereDocRemainder" -> (popContext >> return ())
+    "HereDocQ" -> return ()
+    "HereDocNQ" -> return ()
+    "HereDocIQ" -> return ()
+    "HereDocINQ" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Comment","Comment"),("Keyword","Keyword"),("Control","Keyword"),("Builtin","Keyword"),("Command","Keyword"),("Redirection","Keyword"),("Escape","DataType"),("String SingleQ","String"),("String DoubleQ","String"),("Backquote","Keyword"),("String Transl.","String"),("String Escape","DataType"),("Variable","Others"),("Expression","Others"),("Function","Function"),("Path","Normal"),("Option","Normal"),("Error","Error")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Start","Normal Text"),("FindAll","Normal Text"),("FindMost","Normal Text"),("FindComments","Normal Text"),("Comment","Comment"),("FindCommentsParen","Normal Text"),("CommentParen","Comment"),("FindCommentsBackq","Normal Text"),("CommentBackq","Comment"),("FindCommands","Normal Text"),("FindOthers","Normal Text"),("FindStrings","Normal Text"),("FindSubstitutions","Normal Text"),("FindTests","Normal Text"),("ExprDblParen","Normal Text"),("ExprDblParenSubst","Normal Text"),("ExprSubParen","Normal Text"),("ExprBracket","Normal Text"),("ExprDblBracket","Normal Text"),("Group","Normal Text"),("SubShell","Normal Text"),("Assign","Normal Text"),("AssignArray","Normal Text"),("AssignSubscr","Normal Text"),("Subscript","Variable"),("FunctionDef","Function"),("VarName","Normal Text"),("ProcessSubst","Normal Text"),("StringSQ","String SingleQ"),("StringDQ","String DoubleQ"),("StringEsc","String SingleQ"),("VarBrace","Error"),("VarAlt","Normal Text"),("VarSubst","Normal Text"),("VarSubst2","Normal Text"),("VarSub","Error"),("VarSub2","Error"),("SubstFile","Normal Text"),("SubstCommand","Normal Text"),("SubstBackq","Normal Text"),("Case","Normal Text"),("CaseIn","Normal Text"),("CaseExpr","Normal Text"),("HereDoc","Normal Text"),("HereDocRemainder","Normal Text"),("HereDocQ","Normal Text"),("HereDocNQ","Normal Text"),("HereDocIQ","Normal Text"),("HereDocINQ","Normal Text")]
+
+parseRules "Start" = 
+  do (attr, result) <- ((parseRules "FindAll"))
+     return (attr, result)
+
+parseRules "FindAll" = 
+  do (attr, result) <- (((parseRules "FindComments"))
+                        <|>
+                        ((parseRules "FindCommands"))
+                        <|>
+                        ((parseRules "FindStrings"))
+                        <|>
+                        ((parseRules "FindSubstitutions"))
+                        <|>
+                        ((parseRules "FindOthers")))
+     return (attr, result)
+
+parseRules "FindMost" = 
+  do (attr, result) <- (((parseRules "FindComments"))
+                        <|>
+                        ((parseRules "FindStrings"))
+                        <|>
+                        ((parseRules "FindSubstitutions"))
+                        <|>
+                        ((parseRules "FindOthers")))
+     return (attr, result)
+
+parseRules "FindComments" = 
+  do (attr, result) <- (((pFirstNonSpace >> pDetectChar False '#' >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pRegExpr (compileRegex "[\\s;](?=#)") >>= withAttribute "Normal Text") >>~ pushContext "Comment"))
+     return (attr, result)
+
+parseRules "Comment" = 
+  do (attr, result) <- ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+     return (attr, result)
+
+parseRules "FindCommentsParen" = 
+  do (attr, result) <- (((pFirstNonSpace >> pDetectChar False '#' >>= withAttribute "Comment") >>~ pushContext "CommentParen")
+                        <|>
+                        ((pRegExpr (compileRegex "[\\s;](?=#)") >>= withAttribute "Normal Text") >>~ pushContext "CommentParen"))
+     return (attr, result)
+
+parseRules "CommentParen" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "[^)](?=\\))") >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd))))
+     return (attr, result)
+
+parseRules "FindCommentsBackq" = 
+  do (attr, result) <- (((pFirstNonSpace >> pDetectChar False '#' >>= withAttribute "Comment") >>~ pushContext "CommentBackq")
+                        <|>
+                        ((pRegExpr (compileRegex "[\\s;](?=#)") >>= withAttribute "Normal Text") >>~ pushContext "CommentBackq"))
+     return (attr, result)
+
+parseRules "CommentBackq" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "[^`](?=`)") >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd))))
+     return (attr, result)
+
+parseRules "FindCommands" = 
+  do (attr, result) <- (((pDetect2Chars False '(' '(' >>= withAttribute "Keyword") >>~ pushContext "ExprDblParen")
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "\\[\\[(?=($|\\s))") >>= withAttribute "Keyword") >>~ pushContext "ExprDblBracket")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s\\[\\[(?=($|\\s))") >>= withAttribute "Keyword") >>~ pushContext "ExprDblBracket")
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "\\[(?=($|\\s))") >>= withAttribute "Builtin") >>~ pushContext "ExprBracket")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s\\[(?=($|\\s))") >>= withAttribute "Builtin") >>~ pushContext "ExprBracket")
+                        <|>
+                        ((pRegExpr (compileRegex "\\{(?=($|\\s))") >>= withAttribute "Keyword") >>~ pushContext "Group")
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Keyword") >>~ pushContext "SubShell")
+                        <|>
+                        ((pRegExpr (compileRegex "\\bdo(?![\\w$+-])") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bdone(?![\\w$+-])") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bif(?![\\w$+-])") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bfi(?![\\w$+-])") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bcase(?![\\w$+-])") >>= withAttribute "Keyword") >>~ pushContext "Case")
+                        <|>
+                        ((pRegExpr (compileRegex "-[A-Za-z0-9][A-Za-z0-9_]*") >>= withAttribute "Option"))
+                        <|>
+                        ((pRegExpr (compileRegex "--[a-z][A-Za-z0-9_-]*") >>= withAttribute "Option"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[A-Za-z_][A-Za-z0-9_]*\\+?=") >>= withAttribute "Variable") >>~ pushContext "Assign")
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[A-Za-z_][A-Za-z0-9_]*(?=\\[.+\\]\\+?=)") >>= withAttribute "Variable") >>~ pushContext "AssignSubscr")
+                        <|>
+                        ((pString False ":()" >>= withAttribute "Function"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bfunction\\b") >>= withAttribute "Keyword") >>~ pushContext "FunctionDef")
+                        <|>
+                        ((pKeyword " \n\t()!+,<=>&*;?|~\\`" ["else","for","function","in","select","until","while","elif","then","set"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\.(?=\\s)") >>= withAttribute "Builtin"))
+                        <|>
+                        ((pKeyword " \n\t()!+,<=>&*;?|~\\`" [":","source","alias","bg","bind","break","builtin","cd","caller","command","compgen","complete","continue","dirs","disown","echo","enable","eval","exec","exit","fc","fg","getopts","hash","help","history","jobs","kill","let","logout","popd","printf","pushd","pwd","return","set","shift","shopt","suspend","test","time","times","trap","type","ulimit","umask","unalias","wait"] >>= withAttribute "Builtin"))
+                        <|>
+                        ((pKeyword " \n\t()!+,<=>&*;?|~\\`" ["arch","awk","bash","bunzip2","bzcat","bzcmp","bzdiff","bzegrep","bzfgrep","bzgrep","bzip2","bzip2recover","bzless","bzmore","cat","chattr","chgrp","chmod","chown","chvt","cp","date","dd","deallocvt","df","dir","dircolors","dmesg","dnsdomainname","domainname","du","dumpkeys","echo","ed","egrep","false","fgconsole","fgrep","fuser","gawk","getkeycodes","gocr","grep","groff","groups","gunzip","gzexe","gzip","hostname","igawk","install","kbd_mode","kbdrate","killall","last","lastb","link","ln","loadkeys","loadunimap","login","ls","lsattr","lsmod","lsmod.old","mapscrn","mesg","mkdir","mkfifo","mknod","mktemp","more","mount","mv","nano","netstat","nisdomainname","nroff","openvt","pgawk","pidof","ping","ps","pstree","pwd","rbash","readlink","red","resizecons","rm","rmdir","run-parts","sash","sed","setfont","setkeycodes","setleds","setmetamode","setserial","sh","showkey","shred","sleep","ssed","stat","stty","su","sync","tar","tempfile","touch","troff","true","umount","uname","unicode_start","unicode_stop","unlink","utmpdump","uuidgen","vdir","wall","wc","ypdomainname","zcat","zcmp","zdiff","zegrep","zfgrep","zforce","zgrep","zless","zmore","znew","zsh","aclocal","aconnect","aplay","apm","apmsleep","apropos","ar","arecord","as","as86","autoconf","autoheader","automake","awk","basename","bc","bison","c++","cal","cat","cc","cdda2wav","cdparanoia","cdrdao","cd-read","cdrecord","chfn","chgrp","chmod","chown","chroot","chsh","clear","cmp","co","col","comm","cp","cpio","cpp","cut","dc","dd","df","diff","diff3","dir","dircolors","directomatic","dirname","du","env","expr","fbset","file","find","flex","flex++","fmt","free","ftp","funzip","fuser","g++","gawk","gc","gcc","gdb","getent","getopt","gettext","gettextize","gimp","gimp-remote","gimptool","gmake","gs","head","hexdump","id","install","join","kill","killall","ld","ld86","ldd","less","lex","ln","locate","lockfile","logname","lp","lpr","ls","lynx","m4","make","man","mkdir","mknod","msgfmt","mv","namei","nasm","nawk","nice","nl","nm","nm86","nmap","nohup","nop","od","passwd","patch","pcregrep","pcretest","perl","perror","pidof","pr","printf","procmail","prune","ps2ascii","ps2epsi","ps2frag","ps2pdf","ps2ps","psbook","psmerge","psnup","psresize","psselect","pstops","rcs","rev","rm","scp","sed","seq","setterm","shred","size","size86","skill","slogin","snice","sort","sox","split","ssh","ssh-add","ssh-agent","ssh-keygen","ssh-keyscan","stat","strings","strip","sudo","suidperl","sum","tac","tail","tee","test","tr","uniq","unlink","unzip","updatedb","updmap","uptime","users","vmstat","w","wc","wget","whatis","whereis","which","who","whoami","write","xargs","yacc","yes","zip","zsoelim","dcop","kdialog","kfile","xhost","xmodmap","xset"] >>= withAttribute "Command"))
+                        <|>
+                        ((pKeyword " \n\t()!+,<=>&*;?|~\\`" ["export","unset","declare","typeset","local","read","readonly"] >>= withAttribute "Builtin") >>~ pushContext "VarName")
+                        <|>
+                        ((pRegExpr (compileRegex "\\d*<<<") >>= withAttribute "Redirection"))
+                        <|>
+                        ((pString False "<<" >>= withAttribute "Redirection") >>~ pushContext "HereDoc")
+                        <|>
+                        ((pRegExpr (compileRegex "[<>]\\(") >>= withAttribute "Redirection") >>~ pushContext "ProcessSubst")
+                        <|>
+                        ((pRegExpr (compileRegex "([0-9]*(>{1,2}|<)(&[0-9]+-?)?|&>|>&|[0-9]*<>)") >>= withAttribute "Redirection"))
+                        <|>
+                        ((pRegExpr (compileRegex "([|&])\\1?") >>= withAttribute "Control"))
+                        <|>
+                        ((pRegExpr (compileRegex "[A-Za-z_:][A-Za-z0-9_:#%@-]*\\s*\\(\\)") >>= withAttribute "Function")))
+     return (attr, result)
+
+parseRules "FindOthers" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\[][;\\\\$`{}()|&<>* ]") >>= withAttribute "Escape"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\$") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\{(?!(\\s|$))\\S*\\}") >>= withAttribute "Escape"))
+                        <|>
+                        ((pRegExpr (compileRegex "([\\w_@.%*?+-]|\\\\ )*(?=/)") >>= withAttribute "Path"))
+                        <|>
+                        ((pRegExpr (compileRegex "~\\w*") >>= withAttribute "Path"))
+                        <|>
+                        ((pRegExpr (compileRegex "/([\\w_@.%*?+-]|\\\\ )*(?=([\\s/):;$`'\"]|$))") >>= withAttribute "Path")))
+     return (attr, result)
+
+parseRules "FindStrings" = 
+  do (attr, result) <- (((pDetect2Chars False '\\' '\'' >>= withAttribute "Escape"))
+                        <|>
+                        ((pDetect2Chars False '\\' '"' >>= withAttribute "Escape"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "String SingleQ") >>~ pushContext "StringSQ")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String DoubleQ") >>~ pushContext "StringDQ")
+                        <|>
+                        ((pDetect2Chars False '$' '\'' >>= withAttribute "String SingleQ") >>~ pushContext "StringEsc")
+                        <|>
+                        ((pDetect2Chars False '$' '"' >>= withAttribute "String Transl.") >>~ pushContext "StringDQ"))
+     return (attr, result)
+
+parseRules "FindSubstitutions" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\$[A-Za-z_][A-Za-z0-9_]*\\[") >>= withAttribute "Variable") >>~ pushContext "Subscript")
+                        <|>
+                        ((pRegExpr (compileRegex "\\$[A-Za-z_][A-Za-z0-9_]*") >>= withAttribute "Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$[*@#?$!_0-9-]") >>= withAttribute "Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$\\{[*@#?$!_0-9-]\\}") >>= withAttribute "Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$\\{#[A-Za-z_][A-Za-z0-9_]*(\\[[*@]\\])?\\}") >>= withAttribute "Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$\\{![A-Za-z_][A-Za-z0-9_]*(\\[[*@]\\]|[*@])?\\}") >>= withAttribute "Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$\\{[A-Za-z_][A-Za-z0-9_]*") >>= withAttribute "Variable") >>~ pushContext "VarBrace")
+                        <|>
+                        ((pRegExpr (compileRegex "\\$\\{[*@#?$!_0-9-](?=[:#%/=?+-])") >>= withAttribute "Variable") >>~ pushContext "VarBrace")
+                        <|>
+                        ((pString False "$((" >>= withAttribute "Variable") >>~ pushContext "ExprDblParenSubst")
+                        <|>
+                        ((pString False "$(<" >>= withAttribute "Redirection") >>~ pushContext "SubstFile")
+                        <|>
+                        ((pString False "$(" >>= withAttribute "Variable") >>~ pushContext "SubstCommand")
+                        <|>
+                        ((pDetectChar False '`' >>= withAttribute "Backquote") >>~ pushContext "SubstBackq")
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\[`$\\\\]") >>= withAttribute "Escape")))
+     return (attr, result)
+
+parseRules "FindTests" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "-[abcdefghkprstuwxOGLSNozn](?=\\s)") >>= withAttribute "Expression"))
+                        <|>
+                        ((pRegExpr (compileRegex "-([no]t|ef)(?=\\s)") >>= withAttribute "Expression"))
+                        <|>
+                        ((pRegExpr (compileRegex "([!=]=?|[><])(?=\\s)") >>= withAttribute "Expression"))
+                        <|>
+                        ((pRegExpr (compileRegex "-(eq|ne|[gl][te])(?=\\s)") >>= withAttribute "Expression")))
+     return (attr, result)
+
+parseRules "ExprDblParen" = 
+  do (attr, result) <- (((pDetect2Chars False ')' ')' >>= withAttribute "Keyword") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Normal Text") >>~ pushContext "ExprSubParen")
+                        <|>
+                        ((parseRules "FindMost")))
+     return (attr, result)
+
+parseRules "ExprDblParenSubst" = 
+  do (attr, result) <- (((pDetect2Chars False ')' ')' >>= withAttribute "Variable") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Normal Text") >>~ pushContext "ExprSubParen")
+                        <|>
+                        ((parseRules "FindMost")))
+     return (attr, result)
+
+parseRules "ExprSubParen" = 
+  do (attr, result) <- (((pDetectChar False ')' >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Normal Text") >>~ pushContext "ExprSubParen")
+                        <|>
+                        ((parseRules "FindMost")))
+     return (attr, result)
+
+parseRules "ExprBracket" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\s\\](?=($|[\\s;|&]))") >>= withAttribute "Builtin") >>~ (popContext >> return ()))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "\\](?=($|[\\s;|&]))") >>= withAttribute "Builtin") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Normal Text") >>~ pushContext "ExprSubParen")
+                        <|>
+                        ((parseRules "FindTests"))
+                        <|>
+                        ((parseRules "FindMost")))
+     return (attr, result)
+
+parseRules "ExprDblBracket" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\s\\]\\](?=($|[\\s;|&]))") >>= withAttribute "Keyword") >>~ (popContext >> return ()))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "\\]\\](?=($|[\\s;|&]))") >>= withAttribute "Keyword") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Normal Text") >>~ pushContext "ExprSubParen")
+                        <|>
+                        ((parseRules "FindTests"))
+                        <|>
+                        ((parseRules "FindMost")))
+     return (attr, result)
+
+parseRules "Group" = 
+  do (attr, result) <- (((pDetectChar False '}' >>= withAttribute "Keyword") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindAll")))
+     return (attr, result)
+
+parseRules "SubShell" = 
+  do (attr, result) <- (((pDetectChar False ')' >>= withAttribute "Keyword") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindAll")))
+     return (attr, result)
+
+parseRules "Assign" = 
+  do (attr, result) <- (((pDetectChar False '(' >>= withAttribute "Variable") >>~ pushContext "AssignArray")
+                        <|>
+                        ((parseRules "FindStrings"))
+                        <|>
+                        ((parseRules "FindSubstitutions"))
+                        <|>
+                        ((parseRules "FindOthers"))
+                        <|>
+                        ((pRegExpr (compileRegex "[\\w:,+_./-]") >>= withAttribute "Normal Text"))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "AssignArray" = 
+  do (attr, result) <- (((pDetectChar False ')' >>= withAttribute "Variable") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Variable") >>~ pushContext "Subscript")
+                        <|>
+                        ((pDetectChar False '=' >>= withAttribute "Variable") >>~ pushContext "Assign")
+                        <|>
+                        ((parseRules "FindMost")))
+     return (attr, result)
+
+parseRules "AssignSubscr" = 
+  do (attr, result) <- (((pDetectChar False '[' >>= withAttribute "Variable") >>~ pushContext "Subscript")
+                        <|>
+                        ((pDetect2Chars False '+' '=' >>= withAttribute "Variable") >>~ pushContext "Assign")
+                        <|>
+                        ((pDetectChar False '=' >>= withAttribute "Variable") >>~ pushContext "Assign")
+                        <|>
+                        ((parseRules "FindStrings"))
+                        <|>
+                        ((parseRules "FindSubstitutions"))
+                        <|>
+                        ((parseRules "FindOthers"))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "Subscript" = 
+  do (attr, result) <- (((pDetectChar False ']' >>= withAttribute "Variable") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindStrings"))
+                        <|>
+                        ((parseRules "FindSubstitutions"))
+                        <|>
+                        ((parseRules "FindOthers")))
+     return (attr, result)
+
+parseRules "FunctionDef" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\s+[A-Za-z_:][A-Za-z0-9_:#%@-]*(\\s*\\(\\))?") >>= withAttribute "Function") >>~ (popContext >> return ()))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "VarName" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "-[A-Za-z0-9]+") >>= withAttribute "Option"))
+                        <|>
+                        ((pRegExpr (compileRegex "--[a-z][A-Za-z0-9_-]*") >>= withAttribute "Option"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[A-Za-z_][A-Za-z0-9_]*") >>= withAttribute "Variable"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Variable") >>~ pushContext "Subscript")
+                        <|>
+                        ((pDetectChar False '=' >>= withAttribute "Variable") >>~ pushContext "Assign")
+                        <|>
+                        ((parseRules "FindMost"))
+                        <|>
+                        ((pRegExpr (compileRegex "[^]})|;`&><]") >>= withAttribute "Normal Text"))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "ProcessSubst" = 
+  do (attr, result) <- (((pDetectChar False ')' >>= withAttribute "Redirection") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindCommentsParen"))
+                        <|>
+                        ((parseRules "FindCommands"))
+                        <|>
+                        ((parseRules "FindStrings"))
+                        <|>
+                        ((parseRules "FindSubstitutions"))
+                        <|>
+                        ((parseRules "FindOthers")))
+     return (attr, result)
+
+parseRules "StringSQ" = 
+  do (attr, result) <- ((pDetectChar False '\'' >>= withAttribute "String SingleQ") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "StringDQ" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "String DoubleQ") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\[`\"\\\\$\\n]") >>= withAttribute "String Escape"))
+                        <|>
+                        ((parseRules "FindSubstitutions")))
+     return (attr, result)
+
+parseRules "StringEsc" = 
+  do (attr, result) <- (((pDetectChar False '\'' >>= withAttribute "String SingleQ") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\[abefnrtv\\\\']") >>= withAttribute "String Escape"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\([0-7]{1,3}|x[A-Fa-f0-9]{1,2}|c.)") >>= withAttribute "String Escape")))
+     return (attr, result)
+
+parseRules "VarBrace" = 
+  do (attr, result) <- (((pDetectChar False '}' >>= withAttribute "Variable") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Variable") >>~ pushContext "Subscript")
+                        <|>
+                        ((pRegExpr (compileRegex "(:?[-=?+]|##?|%%?)") >>= withAttribute "Variable") >>~ pushContext "VarAlt")
+                        <|>
+                        ((pRegExpr (compileRegex "//?") >>= withAttribute "Variable") >>~ pushContext "VarSubst")
+                        <|>
+                        ((pDetectChar False ':' >>= withAttribute "Variable") >>~ pushContext "VarSub"))
+     return (attr, result)
+
+parseRules "VarAlt" = 
+  do (attr, result) <- (((pDetectChar False '}' >>= withAttribute "Variable") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "FindStrings"))
+                        <|>
+                        ((parseRules "FindSubstitutions")))
+     return (attr, result)
+
+parseRules "VarSubst" = 
+  do (attr, result) <- (((pDetectChar False '}' >>= withAttribute "Variable") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '/' >>= withAttribute "Variable") >>~ pushContext "VarSubst2")
+                        <|>
+                        ((parseRules "FindStrings"))
+                        <|>
+                        ((parseRules "FindSubstitutions")))
+     return (attr, result)
+
+parseRules "VarSubst2" = 
+  do (attr, result) <- (((pDetectChar False '}' >>= withAttribute "Variable") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "FindStrings"))
+                        <|>
+                        ((parseRules "FindSubstitutions")))
+     return (attr, result)
+
+parseRules "VarSub" = 
+  do (attr, result) <- (((pDetectChar False ':' >>= withAttribute "Variable") >>~ pushContext "VarSub2")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Variable") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[A-Za-z_][A-Za-z0-9_]*") >>= withAttribute "Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "[0-9]+(?=[:}])") >>= withAttribute "Variable"))
+                        <|>
+                        ((parseRules "FindSubstitutions")))
+     return (attr, result)
+
+parseRules "VarSub2" = 
+  do (attr, result) <- (((pDetectChar False '}' >>= withAttribute "Variable") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[A-Za-z_][A-Za-z0-9_]*") >>= withAttribute "Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "[0-9](?=[:}])") >>= withAttribute "Variable"))
+                        <|>
+                        ((parseRules "FindSubstitutions")))
+     return (attr, result)
+
+parseRules "SubstFile" = 
+  do (attr, result) <- (((pDetectChar False ')' >>= withAttribute "Redirection") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindCommentsParen"))
+                        <|>
+                        ((parseRules "FindStrings"))
+                        <|>
+                        ((parseRules "FindSubstitutions"))
+                        <|>
+                        ((parseRules "FindOthers")))
+     return (attr, result)
+
+parseRules "SubstCommand" = 
+  do (attr, result) <- (((pDetectChar False ')' >>= withAttribute "Variable") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindCommentsParen"))
+                        <|>
+                        ((parseRules "FindCommands"))
+                        <|>
+                        ((parseRules "FindStrings"))
+                        <|>
+                        ((parseRules "FindSubstitutions"))
+                        <|>
+                        ((parseRules "FindOthers")))
+     return (attr, result)
+
+parseRules "SubstBackq" = 
+  do (attr, result) <- (((pDetectChar False '`' >>= withAttribute "Backquote") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindCommentsBackq"))
+                        <|>
+                        ((parseRules "FindCommands"))
+                        <|>
+                        ((parseRules "FindStrings"))
+                        <|>
+                        ((parseRules "FindSubstitutions"))
+                        <|>
+                        ((parseRules "FindOthers")))
+     return (attr, result)
+
+parseRules "Case" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\sin\\b") >>= withAttribute "Keyword") >>~ pushContext "CaseIn")
+                        <|>
+                        ((parseRules "FindMost")))
+     return (attr, result)
+
+parseRules "CaseIn" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\besac(?=$|[\\s;)])") >>= withAttribute "Keyword") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Keyword") >>~ pushContext "CaseExpr")
+                        <|>
+                        ((pAnyChar "(|" >>= withAttribute "Keyword"))
+                        <|>
+                        ((parseRules "FindMost")))
+     return (attr, result)
+
+parseRules "CaseExpr" = 
+  do (attr, result) <- (((pDetect2Chars False ';' ';' >>= withAttribute "Keyword") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindAll")))
+     return (attr, result)
+
+parseRules "HereDoc" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "(<<-\\s*\"([^|&;()<>\\s]+)\")") >>= withAttribute "Redirection") >>~ pushContext "HereDocIQ")
+                        <|>
+                        ((pRegExpr (compileRegex "(<<-\\s*'([^|&;()<>\\s]+)')") >>= withAttribute "Redirection") >>~ pushContext "HereDocIQ")
+                        <|>
+                        ((pRegExpr (compileRegex "(<<-\\s*\\\\([^|&;()<>\\s]+))") >>= withAttribute "Redirection") >>~ pushContext "HereDocIQ")
+                        <|>
+                        ((pRegExpr (compileRegex "(<<-\\s*([^|&;()<>\\s]+))") >>= withAttribute "Redirection") >>~ pushContext "HereDocINQ")
+                        <|>
+                        ((pRegExpr (compileRegex "(<<\\s*\"([^|&;()<>\\s]+)\")") >>= withAttribute "Redirection") >>~ pushContext "HereDocQ")
+                        <|>
+                        ((pRegExpr (compileRegex "(<<\\s*'([^|&;()<>\\s]+)')") >>= withAttribute "Redirection") >>~ pushContext "HereDocQ")
+                        <|>
+                        ((pRegExpr (compileRegex "(<<\\s*\\\\([^|&;()<>\\s]+))") >>= withAttribute "Redirection") >>~ pushContext "HereDocQ")
+                        <|>
+                        ((pRegExpr (compileRegex "(<<\\s*([^|&;()<>\\s]+))") >>= withAttribute "Redirection") >>~ pushContext "HereDocNQ")
+                        <|>
+                        ((pString False "<<" >>= withAttribute "Redirection") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "HereDocRemainder" = 
+  do (attr, result) <- ((parseRules "FindAll"))
+     return (attr, result)
+
+parseRules "HereDocQ" = 
+  do (attr, result) <- (((pRegExprDynamic "%1" >>= withAttribute "Redirection") >>~ pushContext "HereDocRemainder")
+                        <|>
+                        ((pColumn 0 >> pRegExprDynamic "%2\\b" >>= withAttribute "Redirection") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "HereDocNQ" = 
+  do (attr, result) <- (((pRegExprDynamic "%1" >>= withAttribute "Redirection") >>~ pushContext "HereDocRemainder")
+                        <|>
+                        ((pColumn 0 >> pRegExprDynamic "%2\\b" >>= withAttribute "Redirection") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "FindSubstitutions")))
+     return (attr, result)
+
+parseRules "HereDocIQ" = 
+  do (attr, result) <- (((pRegExprDynamic "%1" >>= withAttribute "Redirection") >>~ pushContext "HereDocRemainder")
+                        <|>
+                        ((pColumn 0 >> pRegExprDynamic "\\t*%2\\b" >>= withAttribute "Redirection") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "HereDocINQ" = 
+  do (attr, result) <- (((pRegExprDynamic "%1" >>= withAttribute "Redirection") >>~ pushContext "HereDocRemainder")
+                        <|>
+                        ((pColumn 0 >> pRegExprDynamic "\\t*%2\\b" >>= withAttribute "Redirection") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "FindSubstitutions")))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Bibtex.hs b/Text/Highlighting/Kate/Syntax/Bibtex.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Bibtex.hs
@@ -0,0 +1,111 @@
+{- This module was generated from data in the Kate syntax highlighting file bibtex.xml, version 1.13,
+   by  Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net) -}
+
+module Text.Highlighting.Kate.Syntax.Bibtex ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "BibTeX"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.bib"
+
+-- | 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 = "BibTeX" }
+  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 [("BibTeX",["Normal"])], synStLanguage = "BibTeX", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = False, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "Entry" -> return ()
+    "String" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Entry","Keyword"),("Command","Function"),("Field","DataType"),("Ref Key","Others"),("String","String"),("Char","Char")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal Text"),("Entry","Ref Key"),("String","String")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((pFirstNonSpace >> pRegExpr (compileRegex "([a-zA-Z]+)\\s*=") >>= withAttribute "Field"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~" ["@article","@book","@booklet","@conference","@inbook","@incollection","@inproceedings","@manual","@mastersthesis","@misc","@phdthesis","@proceedings","@techreport","@unpublished","@collection","@patent"] >>= withAttribute "Entry") >>~ pushContext "Entry")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~" ["@string","@preamble","@comment"] >>= withAttribute "Command"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\([a-zA-Z]+|.)") >>= withAttribute "Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String"))
+     return (attr, result)
+
+parseRules "Entry" = 
+  do (attr, result) <- (((pDetectChar False ',' >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\([a-zA-Z]+|.)") >>= withAttribute "Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "String" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\([a-zA-Z]+|.)") >>= withAttribute "Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/C.hs b/Text/Highlighting/Kate/Syntax/C.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/C.hs
@@ -0,0 +1,240 @@
+{- This module was generated from data in the Kate syntax highlighting file c.xml, version 1.41,
+   by   -}
+
+module Text.Highlighting.Kate.Syntax.C ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Doxygen
+import qualified Text.Highlighting.Kate.Syntax.Alert
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "C"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.c;*.C;*.h"
+
+-- | 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 = "C" }
+  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 [("C",["Normal"])], synStLanguage = "C", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "String" -> (popContext >> return ())
+    "Region Marker" -> (popContext >> return ())
+    "Commentar 1" -> (popContext >> return ())
+    "Commentar 2" -> return ()
+    "AfterHash" -> (popContext >> return ())
+    "Preprocessor" -> (popContext >> return ())
+    "Define" -> (popContext >> return ())
+    "Commentar/Preprocessor" -> return ()
+    "Outscoped" -> return ()
+    "Outscoped intern" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Data Type","DataType"),("Decimal","DecVal"),("Octal","BaseN"),("Hex","BaseN"),("Float","Float"),("Char","Char"),("String","String"),("String Char","Char"),("Comment","Comment"),("Symbol","Normal"),("Preprocessor","Others"),("Prep. Lib","Others"),("Alert","Alert"),("Region Marker","RegionMarker"),("Error","Error")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal Text"),("String","String"),("Region Marker","Region Marker"),("Commentar 1","Comment"),("Commentar 2","Comment"),("AfterHash","Error"),("Preprocessor","Preprocessor"),("Define","Preprocessor"),("Commentar/Preprocessor","Comment"),("Outscoped","Comment"),("Outscoped intern","Comment")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*if\\s+0") >>= withAttribute "Preprocessor") >>~ pushContext "Outscoped")
+                        <|>
+                        ((pFirstNonSpace >> pDetectChar False '#' >>= withAttribute "Normal Text") >>~ pushContext "AfterHash")
+                        <|>
+                        ((pFirstNonSpace >> pString False "//BEGIN" >>= withAttribute "Region Marker") >>~ pushContext "Region Marker")
+                        <|>
+                        ((pFirstNonSpace >> pString False "//END" >>= withAttribute "Region Marker") >>~ pushContext "Region Marker")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["break","case","continue","default","do","else","enum","extern","for","goto","if","inline","return","sizeof","struct","switch","typedef","union","while"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["auto","char","const","double","float","int","long","register","restrict","short","signed","static","unsigned","void","volatile","_Imaginary","_Complex","_Bool"] >>= withAttribute "Data Type"))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Symbol"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Symbol"))
+                        <|>
+                        (withChildren (pFloat >>= withAttribute "Float") ((pAnyChar "fF" >>= withAttribute "Float")))
+                        <|>
+                        ((pHlCOct >>= withAttribute "Octal"))
+                        <|>
+                        ((pHlCHex >>= withAttribute "Hex"))
+                        <|>
+                        (withChildren (pInt >>= withAttribute "Decimal") (((pString False "ULL" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "LUL" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "LLU" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "UL" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "LU" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "LL" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "U" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "L" >>= withAttribute "Decimal"))))
+                        <|>
+                        ((pHlCChar >>= withAttribute "Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Doxygen.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetect2Chars False '/' '/' >>= withAttribute "Comment") >>~ pushContext "Commentar 1")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "Commentar 2")
+                        <|>
+                        ((pAnyChar ":!%&()+,-/.*<=>?[]|~^;" >>= withAttribute "Symbol")))
+     return (attr, result)
+
+parseRules "String" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "String"))
+                        <|>
+                        ((pHlCStringChar >>= withAttribute "String Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Region Marker" = 
+  pzero
+
+parseRules "Commentar 1" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "Comment"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd))))
+     return (attr, result)
+
+parseRules "Commentar 2" = 
+  do (attr, result) <- (((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd))))
+     return (attr, result)
+
+parseRules "AfterHash" = 
+  do (attr, result) <- (((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*if(?:def|ndef)?(?=\\s+\\S)") >>= withAttribute "Preprocessor") >>~ pushContext "Preprocessor")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*endif") >>= withAttribute "Preprocessor") >>~ pushContext "Preprocessor")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*define.*((?=\\\\))") >>= withAttribute "Preprocessor") >>~ pushContext "Define")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*(?:el(?:se|if)|include(?:_next)?|define|undef|line|error|warning|pragma)") >>= withAttribute "Preprocessor") >>~ pushContext "Preprocessor")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s+[0-9]+") >>= withAttribute "Preprocessor") >>~ pushContext "Preprocessor"))
+     return (attr, result)
+
+parseRules "Preprocessor" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "Preprocessor"))
+                        <|>
+                        ((pRangeDetect '"' '"' >>= withAttribute "Prep. Lib"))
+                        <|>
+                        ((pRangeDetect '<' '>' >>= withAttribute "Prep. Lib"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Doxygen.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "Commentar/Preprocessor"))
+     return (attr, result)
+
+parseRules "Define" = 
+  do (attr, result) <- ((pLineContinue >>= withAttribute "Preprocessor"))
+     return (attr, result)
+
+parseRules "Commentar/Preprocessor" = 
+  do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Outscoped" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Comment"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Doxygen.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetect2Chars False '/' '/' >>= withAttribute "Comment") >>~ pushContext "Commentar 1")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "Commentar 2")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*if") >>= withAttribute "Comment") >>~ pushContext "Outscoped intern")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*el(?:se|if)") >>= withAttribute "Preprocessor") >>~ (popContext >> return ()))
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*endif") >>= withAttribute "Preprocessor") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Outscoped intern" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Comment"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Doxygen.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetect2Chars False '/' '/' >>= withAttribute "Comment") >>~ pushContext "Commentar 1")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "Commentar 2")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*if") >>= withAttribute "Comment") >>~ pushContext "Outscoped intern")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*endif") >>= withAttribute "Comment") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Cmake.hs b/Text/Highlighting/Kate/Syntax/Cmake.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Cmake.hs
@@ -0,0 +1,108 @@
+{- This module was generated from data in the Kate syntax highlighting file cmake.xml, version 1.04,
+   by   -}
+
+module Text.Highlighting.Kate.Syntax.Cmake ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Alert
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "CMake"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "CMakeLists.txt;*.cmake;"
+
+-- | 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 = "CMake" }
+  context <- currentContext <|> (pushContext "Normal Text" >> 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 [("CMake",["Normal Text"])], synStLanguage = "CMake", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal Text" -> return ()
+    "Function Args" -> return ()
+    "Comment" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Special Args","Others"),("Commands","Keyword"),("Macros","Keyword"),("Variable","DecVal"),("Comment","Comment"),("Region Marker","RegionMarker")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal Text","Normal Text"),("Function Args","Normal Text"),("Comment","Comment")]
+
+parseRules "Normal Text" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["ABSTRACT_FILES","ADD_CUSTOM_COMMAND","ADD_CUSTOM_TARGET","ADD_DEFINITIONS","ADD_DEPENDENCIES","ADD_EXECUTABLE","ADD_LIBRARY","ADD_SUBDIRECTORY","ADD_TEST","AUX_SOURCE_DIRECTORY","BUILD_COMMAND","BUILD_NAME","CMAKE_MINIMUM_REQUIRED","CONFIGURE_FILE","CREATE_TEST_SOURCELIST","ELSE","ELSEIF","ENABLE_TESTING","ENDFOREACH","ENDIF","ENDMACRO","EXEC_PROGRAM","EXPORT_LIBRARY_DEPENDENCIES","FILE","FIND_FILE","FIND_LIBRARY","FIND_PACKAGE","FIND_PATH","FIND_PROGRAM","FLTK_WRAP_UI","FOREACH","GET_CMAKE_PROPERTY","GET_DIRECTORY_PROPERTY","GET_FILENAME_COMPONENT","GET_SOURCE_FILE_PROPERTY","GET_TARGET_PROPERTY","IF","INCLUDE","INCLUDE_DIRECTORIES","INCLUDE_EXTERNAL_MSPROJECT","INCLUDE_REGULAR_EXPRESSION","INSTALL","INSTALL_FILES","INSTALL_PROGRAMS","INSTALL_TARGETS","ITK_WRAP_TCL","LINK_DIRECTORIES","LINK_LIBRARIES","LIST","LOAD_CACHE","LOAD_COMMAND","MACRO","MAKE_DIRECTORY","MARK_AS_ADVANCED","MESSAGE","OPTION","OUTPUT_REQUIRED_FILES","PROJECT","QT_WRAP_CPP","QT_WRAP_UI","REMOVE","REMOVE_DEFINITIONS","SEPARATE_ARGUMENTS","SET","SET_DIRECTORY_PROPERTIES","SET_SOURCE_FILES_PROPERTIES","SET_TARGET_PROPERTIES","SITE_NAME","SOURCE_FILES","SOURCE_FILES_REMOVE","SOURCE_GROUP","STRING","SUBDIRS","SUBDIR_DEPENDS","TARGET_LINK_LIBRARIES","TRY_COMPILE","TRY_RUN","USE_MANGLED_MESA","UTILITY_SOURCE","VARIABLE_REQUIRES","VTK_MAKE_INSTANTIATOR","VTK_WRAP_JAVA","VTK_WRAP_PYTHON","VTK_WRAP_TCL","WRAP_EXCLUDE_FILES","WRITE_FILE"] >>= withAttribute "Commands") >>~ pushContext "Function Args")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*BEGIN.*$") >>= withAttribute "Region Marker"))
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*END.*$") >>= withAttribute "Region Marker"))
+                        <|>
+                        ((pDetectChar False '#' >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pRegExpr (compileRegex "\\$\\{\\s*\\w+\\s*\\}") >>= withAttribute "Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\w+\\s*(?=\\()") >>= withAttribute "Macros")))
+     return (attr, result)
+
+parseRules "Function Args" = 
+  do (attr, result) <- (((pDetectChar False ')' >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["ABSOLUTE","ABSTRACT","ADDITIONAL_MAKE_CLEAN_FILES","ALL","AND","APPEND","ARCHIVE","ARGS","ASCII","BEFORE","CACHE","CACHE_VARIABLES","CLEAR","CMAKE_FLAGS","CODE","COMMAND","COMMANDS","COMMAND_NAME","COMMENT","COMPARE","COMPILE_FLAGS","COMPONENT","CONFIGURATIONS","COPYONLY","DEFINED","DEFINE_SYMBOL","DEPENDS","DESTINATION","DIRECTORY_PERMISSIONS","DOC","EQUAL","ESCAPE_QUOTES","EXCLUDE","EXCLUDE_FROM_ALL","EXISTS","EXPORT_MACRO","EXT","EXTRA_INCLUDE","FATAL_ERROR","FILE","FILES","FILE_PERMISSIONS","FORCE","FUNCTION","GENERATED","GLOB","GLOB_RECURSE","GREATER","GROUP_SIZE","HEADER_FILE_ONLY","HEADER_LOCATION","IMMEDIATE","INCLUDES","INCLUDE_DIRECTORIES","INCLUDE_INTERNALS","INCLUDE_REGULAR_EXPRESSION","INTERNAL","LESS","LIBRARY","LINK_DIRECTORIES","LINK_FLAGS","LOCATION","MACOSX_BUNDLE","MACROS","MAIN_DEPENDENCY","MAKE_DIRECTORY","MATCH","MATCHALL","MATCHES","MODULE","NAME","NAMES","NAME_WE","NOT","NOTEQUAL","NO_SYSTEM_PATH","OBJECT_DEPENDS","OPTIONAL","OR","OUTPUT","OUTPUT_VARIABLE","PATH","PATHS","PATTERN","PERMISSIONS","POST_BUILD","POST_INSTALL_SCRIPT","PREFIX","PREORDER","PRE_BUILD","PRE_INSTALL_SCRIPT","PRE_LINK","PROGRAM","PROGRAMS","PROGRAM_ARGS","PROPERTIES","QUIET","RANGE","READ","REGEX","REGULAR_EXPRESSION","RENAME","REPLACE","REQUIRED","RETURN_VALUE","RUNTIME","RUNTIME_DIRECTORY","SCRIPT","SEND_ERROR","SHARED","SOURCES","STATIC","STATUS","STREQUAL","STRGREATER","STRLESS","SUFFIX","TARGET","TARGETS","TOLOWER","TOUPPER","USE_SOURCE_PERMISSIONS","VAR","VARIABLES","VERSION","WIN32","WRAP_EXCLUDE","WRITE"] >>= withAttribute "Special Args"))
+                        <|>
+                        ((pRegExpr (compileRegex "#.*$") >>= withAttribute "Comment"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$\\{\\s*\\w+\\s*\\}") >>= withAttribute "Variable")))
+     return (attr, result)
+
+parseRules "Comment" = 
+  do (attr, result) <- ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Coldfusion.hs b/Text/Highlighting/Kate/Syntax/Coldfusion.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Coldfusion.hs
@@ -0,0 +1,326 @@
+{- This module was generated from data in the Kate syntax highlighting file coldfusion.xml, version 1.04,
+   by   -}
+
+module Text.Highlighting.Kate.Syntax.Coldfusion ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "ColdFusion"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.cfm;*.cfc;*.cfml;*.dbm"
+
+-- | 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 = "ColdFusion" }
+  context <- currentContext <|> (pushContext "Normal Text" >> 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 [("ColdFusion",["Normal Text"])], synStLanguage = "ColdFusion", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = False, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal Text" -> return ()
+    "ctxCFSCRIPT Tag" -> return ()
+    "ctxSCRIPT Tag" -> return ()
+    "ctxSTYLE Tag" -> return ()
+    "ctxTag" -> return ()
+    "ctxTable Tag" -> return ()
+    "ctxAnchor Tag" -> return ()
+    "ctxImage Tag" -> return ()
+    "ctxCF Tag" -> return ()
+    "ctxCustom Tag" -> return ()
+    "ctxCFX Tag" -> return ()
+    "ctxHTML Comment" -> return ()
+    "ctxCF Comment" -> return ()
+    "ctxC Style Comment" -> return ()
+    "ctxOne Line Comment" -> (popContext >> return ())
+    "ctxHTML Entities" -> (popContext >> return ())
+    "ctxCFSCRIPT Block" -> return ()
+    "ctxSCRIPT Block" -> return ()
+    "ctxSTYLE Block" -> return ()
+    "ctxStyle Properties" -> return ()
+    "ctxStyle Values" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Tags","Normal"),("Table Tags","Normal"),("Script Tags","Normal"),("Image Tags","Normal"),("Style Tags","Normal"),("Anchor Tags","Normal"),("Attribute Values","Normal"),("HTML Comment","Comment"),("CF Comment","Comment"),("Script Comment","Comment"),("CF Tags","Normal"),("Custom Tags","Normal"),("CFX Tags","Normal"),("Numbers","Normal"),("HTML Entities","Normal"),("Style Selectors","Normal"),("Style Properties","Normal"),("Style Values","Normal"),("Brackets","Normal"),("Script Numbers","Normal"),("Script Strings","Normal"),("Script Operators","Normal"),("Script Keywords","Normal"),("Script Functions","Function"),("Script Objects","Normal")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal Text","Normal Text"),("ctxCFSCRIPT Tag","Script Tags"),("ctxSCRIPT Tag","Script Tags"),("ctxSTYLE Tag","Style Tags"),("ctxTag","Tags"),("ctxTable Tag","Table Tags"),("ctxAnchor Tag","Anchor Tags"),("ctxImage Tag","Image Tags"),("ctxCF Tag","CF Tags"),("ctxCustom Tag","Custom Tags"),("ctxCFX Tag","CFX Tags"),("ctxHTML Comment","HTML Comment"),("ctxCF Comment","CF Comment"),("ctxC Style Comment","Script Comment"),("ctxOne Line Comment","Script Comment"),("ctxHTML Entities","HTML Entities"),("ctxCFSCRIPT Block","Normal Text"),("ctxSCRIPT Block","Normal Text"),("ctxSTYLE Block","Style Selectors"),("ctxStyle Properties","Style Properties"),("ctxStyle Values","Style Values")]
+
+parseRules "Normal Text" = 
+  do (attr, result) <- (((pString False "<!---" >>= withAttribute "CF Comment") >>~ pushContext "ctxCF Comment")
+                        <|>
+                        ((pString False "<!--" >>= withAttribute "HTML Comment") >>~ pushContext "ctxHTML Comment")
+                        <|>
+                        ((pRegExpr (compileRegex "<[cC][fF][sS][cC][rR][iI][pP][tT]") >>= withAttribute "Script Tags") >>~ pushContext "ctxCFSCRIPT Tag")
+                        <|>
+                        ((pRegExpr (compileRegex "<[sS][cC][rR][iI][pP][tT]") >>= withAttribute "Script Tags") >>~ pushContext "ctxSCRIPT Tag")
+                        <|>
+                        ((pRegExpr (compileRegex "<[sS][tT][yY][lL][eE]") >>= withAttribute "Style Tags") >>~ pushContext "ctxSTYLE Tag")
+                        <|>
+                        ((pDetectChar False '&' >>= withAttribute "HTML Entities") >>~ pushContext "ctxHTML Entities")
+                        <|>
+                        ((pRegExpr (compileRegex "<\\/?[cC][fF]_") >>= withAttribute "Custom Tags") >>~ pushContext "ctxCustom Tag")
+                        <|>
+                        ((pRegExpr (compileRegex "<\\/?[cC][fF][xX]_") >>= withAttribute "CFX Tags") >>~ pushContext "ctxCFX Tag")
+                        <|>
+                        ((pRegExpr (compileRegex "<\\/?[cC][fF]") >>= withAttribute "CF Tags") >>~ pushContext "ctxCF Tag")
+                        <|>
+                        ((pRegExpr (compileRegex "<\\/?([tT][aAhHbBfFrRdD])|([cC][aA][pP][tT])") >>= withAttribute "Table Tags") >>~ pushContext "ctxTable Tag")
+                        <|>
+                        ((pRegExpr (compileRegex "<\\/?[aA] ") >>= withAttribute "Anchor Tags") >>~ pushContext "ctxAnchor Tag")
+                        <|>
+                        ((pRegExpr (compileRegex "<\\/?[iI][mM][gG] ") >>= withAttribute "Image Tags") >>~ pushContext "ctxImage Tag")
+                        <|>
+                        ((pRegExpr (compileRegex "<!?\\/?[a-zA-Z0-9_]+") >>= withAttribute "Tags") >>~ pushContext "ctxTag"))
+     return (attr, result)
+
+parseRules "ctxCFSCRIPT Tag" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Script Tags") >>~ pushContext "ctxCFSCRIPT Block")
+                        <|>
+                        ((pDetectChar False '=' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "\"[^\"]*\"") >>= withAttribute "Attribute Values"))
+                        <|>
+                        ((pRegExpr (compileRegex "'[^']*'") >>= withAttribute "Attribute Values")))
+     return (attr, result)
+
+parseRules "ctxSCRIPT Tag" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Script Tags") >>~ pushContext "ctxSCRIPT Block")
+                        <|>
+                        ((pDetectChar False '=' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "\"[^\"]*\"") >>= withAttribute "Attribute Values"))
+                        <|>
+                        ((pRegExpr (compileRegex "'[^']*'") >>= withAttribute "Attribute Values")))
+     return (attr, result)
+
+parseRules "ctxSTYLE Tag" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Style Tags") >>~ pushContext "ctxSTYLE Block")
+                        <|>
+                        ((pDetectChar False '=' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "\"[^\"]*\"") >>= withAttribute "Attribute Values"))
+                        <|>
+                        ((pRegExpr (compileRegex "'[^']*'") >>= withAttribute "Attribute Values")))
+     return (attr, result)
+
+parseRules "ctxTag" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Tags") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '=' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "\"[^\"]*\"") >>= withAttribute "Attribute Values"))
+                        <|>
+                        ((pRegExpr (compileRegex "'[^']*'") >>= withAttribute "Attribute Values")))
+     return (attr, result)
+
+parseRules "ctxTable Tag" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Table Tags") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '=' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "\"[^\"]*\"") >>= withAttribute "Attribute Values"))
+                        <|>
+                        ((pRegExpr (compileRegex "'[^']*'") >>= withAttribute "Attribute Values")))
+     return (attr, result)
+
+parseRules "ctxAnchor Tag" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Anchor Tags") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '=' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "\"[^\"]*\"") >>= withAttribute "Attribute Values"))
+                        <|>
+                        ((pRegExpr (compileRegex "'[^']*'") >>= withAttribute "Attribute Values")))
+     return (attr, result)
+
+parseRules "ctxImage Tag" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Image Tags") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '=' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "\"[^\"]*\"") >>= withAttribute "Attribute Values"))
+                        <|>
+                        ((pRegExpr (compileRegex "'[^']*'") >>= withAttribute "Attribute Values")))
+     return (attr, result)
+
+parseRules "ctxCF Tag" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "CF Tags") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '=' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "\"[^\"]*\"") >>= withAttribute "Attribute Values"))
+                        <|>
+                        ((pRegExpr (compileRegex "'[^']*'") >>= withAttribute "Attribute Values")))
+     return (attr, result)
+
+parseRules "ctxCustom Tag" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Custom Tags") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '=' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "\"[^\"]*\"") >>= withAttribute "Attribute Values"))
+                        <|>
+                        ((pRegExpr (compileRegex "'[^']*'") >>= withAttribute "Attribute Values")))
+     return (attr, result)
+
+parseRules "ctxCFX Tag" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "CFX Tags") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '=' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "\"[^\"]*\"") >>= withAttribute "Attribute Values"))
+                        <|>
+                        ((pRegExpr (compileRegex "'[^']*'") >>= withAttribute "Attribute Values")))
+     return (attr, result)
+
+parseRules "ctxHTML Comment" = 
+  do (attr, result) <- (((pString False "<!---" >>= withAttribute "CF Comment") >>~ pushContext "ctxCF Comment")
+                        <|>
+                        ((pString False "-->" >>= withAttribute "HTML Comment") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "ctxCF Comment" = 
+  do (attr, result) <- ((pString False "--->" >>= withAttribute "CF Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "ctxC Style Comment" = 
+  do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Script Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "ctxOne Line Comment" = 
+  pzero
+
+parseRules "ctxHTML Entities" = 
+  do (attr, result) <- ((pDetectChar False ';' >>= withAttribute "HTML Entities") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "ctxCFSCRIPT Block" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '*' >>= withAttribute "Script Comment") >>~ pushContext "ctxC Style Comment")
+                        <|>
+                        ((pDetect2Chars False '/' '/' >>= withAttribute "Script Comment") >>~ pushContext "ctxOne Line Comment")
+                        <|>
+                        ((pRegExpr (compileRegex "\"[^\"]*\"") >>= withAttribute "Script Strings"))
+                        <|>
+                        ((pRegExpr (compileRegex "'[^']*'") >>= withAttribute "Script Strings"))
+                        <|>
+                        ((pInt >>= withAttribute "Script Numbers"))
+                        <|>
+                        ((pFloat >>= withAttribute "Script Numbers"))
+                        <|>
+                        ((pAnyChar "[()[\\]=+-*/]+" >>= withAttribute "Script Operators"))
+                        <|>
+                        ((pAnyChar "{}" >>= withAttribute "Brackets"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,<=>%&*/;?[]^{|}~\\" ["break","case","catch","continue","default","do","else","for","function","if","in","return","switch","try","var","while"] >>= withAttribute "Script Keywords"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,<=>%&*/;?[]^{|}~\\" ["Abs","ACos","ArrayAppend","ArrayAvg","ArrayClear","ArrayDeleteAt","ArrayInsertAt","ArrayIsEmpty","ArrayLen","ArrayMax","ArrayMin","ArrayNew","ArrayPrepend","ArrayResize","ArraySet","ArraySort","ArraySum","ArraySwap","ArrayToList","Asc","ASin","Atn","BitAnd","BitMaskClear","BitMaskRead","BitMaskSet","BitNot","BitOr","BitSHLN","BitSHRN","BitXor","Ceiling","Chr","CJustify","Compare","CompareNoCase","Cos","CreateDate","CreateDateTime","CreateObject","CreateODBCDate","CreateODBCDateTime","CreateODBCTime","CreateTime","CreateTimeSpan","CreateUUID","DateAdd","DateCompare","DateConvert","DateDiff","DateFormat","DatePart","Day","DayOfWeek","DayOfWeekAsString","DayOfYear","DaysInMonth","DaysInYear","DE","DecimalFormat","DecrementValue","Decrypt","DeleteClientVariable","DirectoryExists","DollarFormat","Duplicate","Encrypt","Evaluate","Exp","ExpandPath","FileExists","Find","FindNoCase","FindOneOf","FirstDayOfMonth","Fix","FormatBaseN","GetAuthUser","GetBaseTagData","GetBaseTagList","GetBaseTemplatePath","GetClientVariablesList","GetCurrentTemplatePath","GetDirectoryFromPath","GetException","GetFileFromPath","GetFunctionList","GetHttpRequestData","GetHttpTimeString","GetK2ServerDocCount","GetK2ServerDocCountLimit","GetLocale","GetMetaData","GetMetricData","GetPageContext","GetProfileSections","GetProfileString","GetServiceSettings","GetTempDirectory","GetTempFile","GetTemplatePath","GetTickCount","GetTimeZoneInfo","GetToken","Hash","Hour","HTMLCodeFormat","HTMLEditFormat","IIf","IncrementValue","InputBaseN","Insert","Int","IsArray","IsBinary","IsBoolean","IsCustomFunction","IsDate","IsDebugMode","IsDefined","IsK2ServerABroker","IsK2ServerDocCountExceeded","IsK2ServerOnline","IsLeapYear","IsNumeric","IsNumericDate","IsObject","IsQuery","IsSimpleValue","IsStruct","IsUserInRole","IsWDDX","IsXmlDoc","IsXmlElement","IsXmlRoot","JavaCast","JSStringFormat","LCase","Left","Len","ListAppend","ListChangeDelims","ListContains","ListContainsNoCase","ListDeleteAt","ListFind","ListFindNoCase","ListFirst","ListGetAt","ListInsertAt","ListLast","ListLen","ListPrepend","ListQualify","ListRest","ListSetAt","ListSort","ListToArray","ListValueCount","ListValueCountNoCase","LJustify","Log","Log10","LSCurrencyFormat","LSDateFormat","LSEuroCurrencyFormat","LSIsCurrency","LSIsDate","LSIsNumeric","LSNumberFormat","LSParseCurrency","LSParseDateTime","LSParseEuroCurrency","LSParseNumber","LSTimeFormat","LTrim","Max","Mid","Min","Minute","Month","MonthAsString","Now","NumberFormat","ParagraphFormat","ParameterExists","ParseDateTime","Pi","PreserveSingleQuotes","Quarter","QueryAddColumn","QueryAddRow","QueryNew","QuerySetCell","QuotedValueList","Rand","Randomize","RandRange","REFind","REFindNoCase","RemoveChars","RepeatString","Replace","ReplaceList","ReplaceNoCase","REReplace","REReplaceNoCase","Reverse","Right","RJustify","Round","RTrim","Second","SetEncoding","SetLocale","SetProfileString","SetVariable","Sgn","Sin","SpanExcluding","SpanIncluding","Sqr","StripCR","StructAppend","StructClear","StructCopy","StructCount","StructDelete","StructFind","StructFindKey","StructFindValue","StructGet","StructInsert","StructIsEmpty","StructKeyArray","StructKeyExists","StructKeyList","StructNew","StructSort","StructUpdate","Tan","TimeFormat","ToBase64","ToBinary","ToString","Trim","UCase","URLDecode","URLEncodedFormat","URLSessionFormat","Val","ValueList","Week","WriteOutput","XmlChildPos","XmlElemNew","XmlFormat","XmlNew","XmlParse","XmlSearch","XmlTransform","Year","YesNoFormat"] >>= withAttribute "Script Functions"))
+                        <|>
+                        ((pRegExpr (compileRegex "</[cC][fF][sS][cC][rR][iI][pP][tT]>") >>= withAttribute "Script Tags") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "ctxSCRIPT Block" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '*' >>= withAttribute "Script Comment") >>~ pushContext "ctxC Style Comment")
+                        <|>
+                        ((pDetect2Chars False '/' '/' >>= withAttribute "Script Comment") >>~ pushContext "ctxOne Line Comment")
+                        <|>
+                        ((pRegExpr (compileRegex "\"[^\"]*\"") >>= withAttribute "Script Strings"))
+                        <|>
+                        ((pRegExpr (compileRegex "'[^']*'") >>= withAttribute "Script Strings"))
+                        <|>
+                        ((pInt >>= withAttribute "Script Numbers"))
+                        <|>
+                        ((pFloat >>= withAttribute "Script Numbers"))
+                        <|>
+                        ((pAnyChar "[()[\\]=+-*/]+" >>= withAttribute "Script Operators"))
+                        <|>
+                        ((pAnyChar "{}" >>= withAttribute "Brackets"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,<=>%&*/;?[]^{|}~\\" ["if","else","for","in","while","do","continue","break","with","try","catch","switch","case","new","var","function","return","this","delete","true","false","void","throw","typeof","const","default"] >>= withAttribute "Script Keywords"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,<=>%&*/;?[]^{|}~\\" ["Anchor","Applet","Area","Array","Boolean","Button","Checkbox","Date","Document","Event","FileUpload","Form","Frame","Function","Hidden","History","Image","Layer","Linke","Location","Math","Navigator","Number","Object","Option","Password","Radio","RegExp","Reset","Screen","Select","String","Submit","Text","Textarea","Window"] >>= withAttribute "Script Objects"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,<=>%&*/;?[]^{|}~\\" ["abs","acos","alert","anchor","apply","asin","atan","atan2","back","blur","call","captureEvents","ceil","charAt","charCodeAt","clearInterval","clearTimeout","click","close","compile","concat","confirm","cos","disableExternalCapture","enableExternalCapture","eval","exec","exp","find","floor","focus","forward","fromCharCode","getDate","getDay","getFullYear","getHours","getMilliseconds","getMinutes","getMonth","getSeconds","getSelection","getTime","getTimezoneOffset","getUTCDate","getUTCDay","getUTCFullYear","getUTCHours","getUTCMilliseconds","getUTCMinutes","getUTCMonth","getUTCSeconds","go","handleEvent","home","indexOf","javaEnabled","join","lastIndexOf","link","load","log","match","max","min","moveAbove","moveBelow","moveBy","moveTo","moveToAbsolute","open","parse","plugins.refresh","pop","pow","preference","print","prompt","push","random","releaseEvents","reload","replace","reset","resizeBy","resizeTo","reverse","round","routeEvent","scrollBy","scrollTo","search","select","setDate","setFullYear","setHours","setInterval","setMilliseconds","setMinutes","setMonth","setSeconds","setTime","setTimeout","setUTCDate","setUTCFullYear","setUTCHours","setUTCMilliseconds","setUTCMinutes","setUTCMonth","setUTCSeconds","shift","sin","slice","sort","splice","split","sqrt","stop","String formatting","submit","substr","substring","taintEnabled","tan","test","toLocaleString","toLowerCase","toSource","toString","toUpperCase","toUTCString","unshift","unwatch","UTC","valueOf","watch","write","writeln"] >>= withAttribute "Script Functions"))
+                        <|>
+                        ((pRegExpr (compileRegex "</[sS][cC][rR][iI][pP][tT]>") >>= withAttribute "Script Tags") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "ctxSTYLE Block" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '*' >>= withAttribute "Script Comment") >>~ pushContext "ctxC Style Comment")
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Brackets") >>~ pushContext "ctxStyle Properties")
+                        <|>
+                        ((pRegExpr (compileRegex "</[sS][tT][yY][lL][eE]>") >>= withAttribute "Style Tags") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "ctxStyle Properties" = 
+  do (attr, result) <- (((pDetectChar False '}' >>= withAttribute "Brackets") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Script Comment") >>~ pushContext "ctxC Style Comment")
+                        <|>
+                        ((pDetectChar False ':' >>= withAttribute "Normal Text") >>~ pushContext "ctxStyle Values"))
+     return (attr, result)
+
+parseRules "ctxStyle Values" = 
+  do (attr, result) <- (((pDetectChar False ';' >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False ',' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pInt >>= withAttribute "Numbers"))
+                        <|>
+                        ((pFloat >>= withAttribute "Numbers"))
+                        <|>
+                        ((pRegExpr (compileRegex "#([0-9a-fA-F]{3})|([0-9a-fA-F]{6})") >>= withAttribute "Numbers"))
+                        <|>
+                        ((pRegExpr (compileRegex "\"[^\"]*\"") >>= withAttribute "Attribute Values"))
+                        <|>
+                        ((pRegExpr (compileRegex "'[^']*'") >>= withAttribute "Attribute Values")))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Commonlisp.hs b/Text/Highlighting/Kate/Syntax/Commonlisp.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Commonlisp.hs
@@ -0,0 +1,139 @@
+{- This module was generated from data in the Kate syntax highlighting file commonlisp.xml, version 1.02,
+   by  Dominik Haumann (dhdev@gmx.de) -}
+
+module Text.Highlighting.Kate.Syntax.Commonlisp ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Common Lisp"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.lisp;*.cl;*.lsp"
+
+-- | 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 = "Common Lisp" }
+  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 [("Common Lisp",["Normal"])], synStLanguage = "Common Lisp", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "MultiLineComment" -> return ()
+    "function_decl" -> return ()
+    "SpecialNumber" -> (popContext >> return ())
+    "String" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal","Normal"),("Keyword","Keyword"),("Operator","Keyword"),("Modifier","Keyword"),("Variable","Keyword"),("Definition","Keyword"),("Data","DataType"),("Decimal","DecVal"),("BaseN","BaseN"),("Float","Float"),("Function","Function"),("Char","Char"),("String","String"),("Comment","Comment"),("Region Marker","RegionMarker"),("Brackets","Normal")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal"),("MultiLineComment","Comment"),("function_decl","Function"),("SpecialNumber","Normal"),("String","String")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((pRegExpr (compileRegex ";+\\s*BEGIN.*$") >>= withAttribute "Region Marker"))
+                        <|>
+                        ((pRegExpr (compileRegex ";+\\s*END.*$") >>= withAttribute "Region Marker"))
+                        <|>
+                        ((pRegExpr (compileRegex ";.*$") >>= withAttribute "Comment"))
+                        <|>
+                        ((pDetect2Chars False '#' '|' >>= withAttribute "Comment") >>~ pushContext "MultiLineComment")
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Brackets"))
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Brackets"))
+                        <|>
+                        ((pKeyword " \n\t.(),%&;[]^{|}~" ["abort","abs","access","acons","acos","acosh","add-method","adjoin","adjustable-array-p","adjust-array","allocate-instance","alpha-char-p","alphanumericp","and","append","apply","applyhook","apropos","apropos-list","aref","arithmetic-error","arithmetic-error-operands","arithmetic-error-operation","array","array-dimension","array-dimension-limit","array-dimensions","array-displacement","array-element-type","array-has-fill-pointer-p","array-in-bounds-p","arrayp","array-rank","array-rank-limit","array-row-major-index","array-total-size","array-total-size-limit","ash","asin","asinh","assert","assoc","assoc-if","assoc-if-not","atan","atanh","atom","base-char","base-string","bignum","bit","bit-and","bit-andc1","bit-andc2","bit-eqv","bit-ior","bit-nand","bit-nor","bit-not","bit-orc1","bit-orc2","bit-vector","bit-vector-p","bit-xor","block","boole","boole-1","boole-2","boolean","boole-and","boole-andc1","boole-andc2","boole-c1","boole-c2","boole-clr","boole-eqv","boole-ior","boole-nand","boole-nor","boole-orc1","boole-orc2","boole-set","boole-xor","both-case-p","boundp","break","broadcast-stream","broadcast-stream-streams","built-in-class","butlast","byte","byte-position","byte-size","call-arguments-limit","call-method","call-next-method","capitalize","car","case","catch","ccase","cdr","ceiling","cell-error","cell-error-name","cerror","change-class","char","char<","char<=","char=","char>","char>=","char/=","character","characterp","char-bit","char-bits","char-bits-limit","char-code","char-code-limit","char-control-bit","char-downcase","char-equal","char-font","char-font-limit","char-greaterp","char-hyper-bit","char-int","char-lessp","char-meta-bit","char-name","char-not-equal","char-not-greaterp","char-not-lessp","char-super-bit","char-upcase","check-type","cis","class","class-name","class-of","clear-input","clear-output","close","clrhash","code-char","coerce","commonp","compilation-speed","compile","compiled-function","compiled-function-p","compile-file","compile-file-pathname","compiler-let","compiler-macro","compiler-macro-function","complement","complex","complexp","compute-applicable-methods","compute-restarts","concatenate","concatenated-stream","concatenated-stream-streams","cond","condition","conjugate","cons","consp","constantly","constantp","continue","control-error","copy-alist","copy-list","copy-pprint-dispatch","copy-readtable","copy-seq","copy-structure","copy-symbol","copy-tree","cos","cosh","count","count-if","count-if-not","ctypecase","debug","decf","declaim","declaration","declare","decode-float","decode-universal-time","delete","delete-duplicates","delete-file","delete-if","delete-if-not","delete-package","denominator","deposit-field","describe","describe-object","destructuring-bind","digit-char","digit-char-p","directory","directory-namestring","disassemble","division-by-zero","do","do*","do-all-symbols","documentation","do-exeternal-symbols","do-external-symbols","dolist","do-symbols","dotimes","double-float","double-float-epsilon","double-float-negative-epsilon","dpb","dribble","dynamic-extent","ecase","echo-stream","echo-stream-input-stream","echo-stream-output-stream","ed","eighth","elt","encode-universal-time","end-of-file","endp","enough-namestring","ensure-directories-exist","ensure-generic-function","eq","eql","equal","equalp","error","etypecase","eval","evalhook","eval-when","evenp","every","exp","export","expt","extended-char","fboundp","fceiling","fdefinition","ffloor","fifth","file-author","file-error","file-error-pathname","file-length","file-namestring","file-position","file-stream","file-string-length","file-write-date","fill","fill-pointer","find","find-all-symbols","find-class","find-if","find-if-not","find-method","find-package","find-restart","find-symbol","finish-output","first","fixnum","flet","float","float-digits","floating-point-inexact","floating-point-invalid-operation","floating-point-overflow","floating-point-underflow","floatp","float-precision","float-radix","float-sign","floor","fmakunbound","force-output","format","formatter","fourth","fresh-line","fround","ftruncate","ftype","funcall","function","function-keywords","function-lambda-expression","functionp","gbitp","gcd","generic-function","gensym","gentemp","get","get-decoded-time","get-dispatch-macro-character","getf","gethash","get-internal-real-time","get-internal-run-time","get-macro-character","get-output-stream-string","get-properties","get-setf-expansion","get-setf-method","get-universal-time","go","graphic-char-p","handler-bind","handler-case","hash-table","hash-table-count","hash-table-p","hash-table-rehash-size","hash-table-rehash-threshold","hash-table-size","hash-table-test","host-namestring","identity","if","if-exists","ignorable","ignore","ignore-errors","imagpart","import","incf","initialize-instance","inline","in-package","in-package","input-stream-p","inspect","int-char","integer","integer-decode-float","integer-length","integerp","interactive-stream-p","intern","internal-time-units-per-second","intersection","invalid-method-error","invoke-debugger","invoke-restart","invoke-restart-interactively","isqrt","keyword","keywordp","labels","lambda","lambda-list-keywords","lambda-parameters-limit","last","lcm","ldb","ldb-test","ldiff","least-negative-double-float","least-negative-long-float","least-negative-normalized-double-float","least-negative-normalized-long-float","least-negative-normalized-short-float","least-negative-normalized-single-float","least-negative-short-float","least-negative-single-float","least-positive-double-float","least-positive-long-float","least-positive-normalized-double-float","least-positive-normalized-long-float","least-positive-normalized-short-float","least-positive-normalized-single-float","least-positive-short-float","least-positive-single-float","length","let","let*","lisp","lisp-implementation-type","lisp-implementation-version","list","list*","list-all-packages","listen","list-length","listp","load","load-logical-pathname-translations","load-time-value","locally","log","logand","logandc1","logandc2","logbitp","logcount","logeqv","logical-pathname","logical-pathname-translations","logior","lognand","lognor","lognot","logorc1","logorc2","logtest","logxor","long-float","long-float-epsilon","long-float-negative-epsilon","long-site-name","loop","loop-finish","lower-case-p","machine-instance","machine-type","machine-version","macroexpand","macroexpand-1","macroexpand-l","macro-function","macrolet","make-array","make-array","make-broadcast-stream","make-char","make-concatenated-stream","make-condition","make-dispatch-macro-character","make-echo-stream","make-hash-table","make-instance","make-instances-obsolete","make-list","make-load-form","make-load-form-saving-slots","make-method","make-package","make-pathname","make-random-state","make-sequence","make-string","make-string-input-stream","make-string-output-stream","make-symbol","make-synonym-stream","make-two-way-stream","makunbound","map","mapc","mapcan","mapcar","mapcon","maphash","map-into","mapl","maplist","mask-field","max","member","member-if","member-if-not","merge","merge-pathname","merge-pathnames","method","method-combination","method-combination-error","method-qualifiers","min","minusp","mismatch","mod","most-negative-double-float","most-negative-fixnum","most-negative-long-float","most-negative-short-float","most-negative-single-float","most-positive-double-float","most-positive-fixnum","most-positive-long-float","most-positive-short-float","most-positive-single-float","muffle-warning","multiple-value-bind","multiple-value-call","multiple-value-list","multiple-value-prog1","multiple-value-seteq","multiple-value-setq","multiple-values-limit","name-char","namestring","nbutlast","nconc","next-method-p","nil","nintersection","ninth","no-applicable-method","no-next-method","not","notany","notevery","notinline","nreconc","nreverse","nset-difference","nset-exclusive-or","nstring","nstring-capitalize","nstring-downcase","nstring-upcase","nsublis","nsubst","nsubst-if","nsubst-if-not","nsubstitute","nsubstitute-if","nsubstitute-if-not","nth","nthcdr","nth-value","null","number","numberp","numerator","nunion","oddp","open","open-stream-p","optimize","or","otherwise","output-stream-p","package","package-error","package-error-package","package-name","package-nicknames","packagep","package-shadowing-symbols","package-used-by-list","package-use-list","pairlis","parse-error","parse-integer","parse-namestring","pathname","pathname-device","pathname-directory","pathname-host","pathname-match-p","pathname-name","pathnamep","pathname-type","pathname-version","peek-char","phase","pi","plusp","pop","position","position-if","position-if-not","pprint","pprint-dispatch","pprint-exit-if-list-exhausted","pprint-fill","pprint-indent","pprint-linear","pprint-logical-block","pprint-newline","pprint-pop","pprint-tab","pprint-tabular","prin1","prin1-to-string","princ","princ-to-string","print","print-not-readable","print-not-readable-object","print-object","print-unreadable-object","probe-file","proclaim","prog","prog*","prog1","prog2","progn","program-error","progv","provide","psetf","psetq","push","pushnew","putprop","quote","random","random-state","random-state-p","rassoc","rassoc-if","rassoc-if-not","ratio","rational","rationalize","rationalp","read","read-byte","read-char","read-char-no-hang","read-delimited-list","reader-error","read-eval-print","read-from-string","read-line","read-preserving-whitespace","read-sequence","readtable","readtable-case","readtablep","real","realp","realpart","reduce","reinitialize-instance","rem","remf","remhash","remove","remove-duplicates","remove-if","remove-if-not","remove-method","remprop","rename-file","rename-package","replace","require","rest","restart","restart-bind","restart-case","restart-name","return","return-from","revappend","reverse","room","rotatef","round","row-major-aref","rplaca","rplacd","safety","satisfies","sbit","scale-float","schar","search","second","sequence","serious-condition","set","set-char-bit","set-difference","set-dispatch-macro-character","set-exclusive-or","setf","set-macro-character","set-pprint-dispatch","setq","set-syntax-from-char","seventh","shadow","shadowing-import","shared-initialize","shiftf","short-float","short-float-epsilon","short-float-negative-epsilon","short-site-name","signal","signed-byte","signum","simle-condition","simple-array","simple-base-string","simple-bit-vector","simple-bit-vector-p","simple-condition-format-arguments","simple-condition-format-control","simple-error","simple-string","simple-string-p","simple-type-error","simple-vector","simple-vector-p","simple-warning","sin","single-flaot-epsilon","single-float","single-float-epsilon","single-float-negative-epsilon","sinh","sixth","sleep","slot-boundp","slot-exists-p","slot-makunbound","slot-missing","slot-unbound","slot-value","software-type","software-version","some","sort","space","special","special-form-p","special-operator-p","speed","sqrt","stable-sort","standard","standard-char","standard-char-p","standard-class","standard-generic-function","standard-method","standard-object","step","storage-condition","store-value","stream","stream-element-type","stream-error","stream-error-stream","stream-external-format","streamp","streamup","string","string<","string<=","string=","string>","string>=","string/=","string-capitalize","string-char","string-char-p","string-downcase","string-equal","string-greaterp","string-left-trim","string-lessp","string-not-equal","string-not-greaterp","string-not-lessp","stringp","string-right-strim","string-right-trim","string-stream","string-trim","string-upcase","structure","structure-class","structure-object","style-warning","sublim","sublis","subseq","subsetp","subst","subst-if","subst-if-not","substitute","substitute-if","substitute-if-not","subtypep","svref","sxhash","symbol","symbol-function","symbol-macrolet","symbol-name","symbolp","symbol-package","symbol-plist","symbol-value","synonym-stream","synonym-stream-symbol","sys","system","t","tagbody","tailp","tan","tanh","tenth","terpri","the","third","throw","time","trace","translate-logical-pathname","translate-pathname","tree-equal","truename","truncase","truncate","two-way-stream","two-way-stream-input-stream","two-way-stream-output-stream","type","typecase","type-error","type-error-datum","type-error-expected-type","type-of","typep","unbound-slot","unbound-slot-instance","unbound-variable","undefined-function","unexport","unintern","union","unless","unread","unread-char","unsigned-byte","untrace","unuse-package","unwind-protect","update-instance-for-different-class","update-instance-for-redefined-class","upgraded-array-element-type","upgraded-complex-part-type","upper-case-p","use-package","user","user-homedir-pathname","use-value","values","values-list","vector","vectorp","vector-pop","vector-push","vector-push-extend","warn","warning","when","wild-pathname-p","with-accessors","with-compilation-unit","with-condition-restarts","with-hash-table-iterator","with-input-from-string","with-open-file","with-open-stream","with-output-to-string","with-package-iterator","with-simple-restart","with-slots","with-standard-io-syntax","write","write-byte","write-char","write-line","write-sequence","write-string","write-to-string","yes-or-no-p","y-or-n-p","zerop"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.(),%&;[]^{|}~" ["<","<=","=",">",">=","=>","-","/","/=","//","///","*","**","***","+","++","+++","1-","1+"] >>= withAttribute "Operator"))
+                        <|>
+                        ((pKeyword " \n\t.(),%&;[]^{|}~" [":abort",":adjustable",":append",":array",":base",":case",":circle",":conc-name",":constructor",":copier",":count",":create",":default",":defaults",":device",":direction",":directory",":displaced-index-offset",":displaced-to",":element-type",":end1",":end2",":end",":error",":escape",":external",":from-end",":gensym",":host",":if-does-not-exist:pretty",":if-exists:print",":include:print-function",":index",":inherited",":initial-contents",":initial-element",":initial-offset",":initial-value",":input",":internal:size",":io",":junk-allowed",":key",":length",":level",":named",":name",":new-version",":nicknames",":output-file",":output",":overwrite",":predicate",":preserve-whitespace",":probe",":radix",":read-only",":rehash-size",":rehash-threshold",":rename-and-delete",":rename",":start1",":start2",":start",":stream",":supersede",":test",":test-not",":type",":use",":verbose",":version"] >>= withAttribute "Modifier"))
+                        <|>
+                        ((pKeyword " \n\t.(),%&;[]^{|}~" ["*applyhook*","*break-on-signals*","*break-on-signals*","*break-on-warnings*","*compile-file-pathname*","*compile-file-pathname*","*compile-file-truename*","*compile-file-truename*","*compile-print*","*compile-verbose*","*compile-verbose*","*debugger-hook*","*debug-io*","*default-pathname-defaults*","*error-output*","*evalhook*","*features*","*gensym-counter*","*load-pathname*","*load-print*","*load-truename*","*load-verbose*","*macroexpand-hook*","*modules*","*package*","*print-array*","*print-base*","*print-case*","*print-circle*","*print-escape*","*print-gensym*","*print-length*","*print-level*","*print-lines*","*print-miser-width*","*print-miser-width*","*print-pprint-dispatch*","*print-pprint-dispatch*","*print-pretty*","*print-radix*","*print-readably*","*print-right-margin*","*print-right-margin*","*query-io*","*random-state*","*read-base*","*read-default-float-format*","*read-eval*","*read-suppress*","*readtable*","*standard-input*","*standard-output*","*terminal-io*","*trace-output*"] >>= withAttribute "Variable"))
+                        <|>
+                        ((pKeyword " \n\t.(),%&;[]^{|}~" ["defclass","defconstant","defgeneric","define-compiler-macro","define-condition","define-method-combination","define-modify-macro","define-setf-expander","define-setf-method","define-symbol-macro","defmacro","defmethod","defpackage","defparameter","defsetf","deftype","defvar","defun","defstruct"] >>= withAttribute "Definition") >>~ pushContext "function_decl")
+                        <|>
+                        ((pRegExpr (compileRegex "#\\\\.") >>= withAttribute "Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((pRegExpr (compileRegex "#[bodxei]") >>= withAttribute "Char") >>~ pushContext "SpecialNumber")
+                        <|>
+                        ((pRegExpr (compileRegex "#[tf]") >>= withAttribute "Decimal"))
+                        <|>
+                        ((pFloat >>= withAttribute "Float"))
+                        <|>
+                        ((pInt >>= withAttribute "Decimal")))
+     return (attr, result)
+
+parseRules "MultiLineComment" = 
+  do (attr, result) <- ((pDetect2Chars False '|' '#' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "function_decl" = 
+  do (attr, result) <- ((pRegExpr (compileRegex "\\s*[A-Za-z0-9-+\\<\\>//\\*]*\\s*") >>= withAttribute "Function") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "SpecialNumber" = 
+  do (attr, result) <- (((pFloat >>= withAttribute "Float") >>~ (popContext >> return ()))
+                        <|>
+                        ((pInt >>= withAttribute "Decimal") >>~ (popContext >> return ()))
+                        <|>
+                        ((pHlCOct >>= withAttribute "BaseN") >>~ (popContext >> return ()))
+                        <|>
+                        ((pHlCHex >>= withAttribute "Float") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "String" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "#\\\\.") >>= withAttribute "Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Cpp.hs b/Text/Highlighting/Kate/Syntax/Cpp.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Cpp.hs
@@ -0,0 +1,254 @@
+{- This module was generated from data in the Kate syntax highlighting file cpp.xml, version 1.41,
+   by   -}
+
+module Text.Highlighting.Kate.Syntax.Cpp ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Doxygen
+import qualified Text.Highlighting.Kate.Syntax.Alert
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "C++"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.c++;*.cxx;*.cpp;*.cc;*.C;*.h;*.hh;*.H;*.h++;*.hxx;*.hpp;*.hcc;*.moc"
+
+-- | 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 = "C++" }
+  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 [("C++",["Normal"])], synStLanguage = "C++", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "String" -> (popContext >> return ())
+    "Region Marker" -> (popContext >> return ())
+    "Commentar 1" -> (popContext >> return ())
+    "Commentar 2" -> return ()
+    "AfterHash" -> (popContext >> return ())
+    "Preprocessor" -> (popContext >> return ())
+    "Define" -> (popContext >> return ())
+    "Commentar/Preprocessor" -> return ()
+    "Outscoped" -> return ()
+    "Outscoped intern" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Extensions","Keyword"),("Data Type","DataType"),("Decimal","DecVal"),("Octal","BaseN"),("Hex","BaseN"),("Float","Float"),("Char","Char"),("String","String"),("String Char","Char"),("Comment","Comment"),("Symbol","Normal"),("Preprocessor","Others"),("Prep. Lib","Others"),("Region Marker","RegionMarker"),("Error","Error")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal Text"),("String","String"),("Region Marker","Region Marker"),("Commentar 1","Comment"),("Commentar 2","Comment"),("AfterHash","Error"),("Preprocessor","Preprocessor"),("Define","Preprocessor"),("Commentar/Preprocessor","Comment"),("Outscoped","Comment"),("Outscoped intern","Comment")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*if\\s+0") >>= withAttribute "Preprocessor") >>~ pushContext "Outscoped")
+                        <|>
+                        ((pFirstNonSpace >> pDetectChar False '#' >>= withAttribute "Normal Text") >>~ pushContext "AfterHash")
+                        <|>
+                        ((pFirstNonSpace >> pString False "//BEGIN" >>= withAttribute "Region Marker") >>~ pushContext "Region Marker")
+                        <|>
+                        ((pFirstNonSpace >> pString False "//END" >>= withAttribute "Region Marker") >>~ pushContext "Region Marker")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["asm","break","case","catch","class","const_cast","continue","default","delete","do","dynamic_cast","else","enum","explicit","export","extern","false","friend","for","goto","if","inline","namespace","new","operator","private","protected","public","qobject_cast","reinterpret_cast","return","sizeof","static_cast","struct","switch","template","this","throw","true","try","typedef","typeid","type_info","typename","union","using","virtual","while","and","and_eq","bad_cast","bad_typeid","bitand","bitor","compl","not","not_eq","or","or_eq","xor","xor_eq","except","finally","xalloc"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["K_DCOP","SLOT","SIGNAL","Q_CLASSINFO","Q_ENUMS","Q_EXPORT","Q_OBJECT","Q_OVERRIDE","Q_PROPERTY","Q_SETS","Q_SIGNALS","Q_SLOTS","Q_FOREACH","Q_DECLARE_FLAGS","Q_INIT_RESOURCE","Q_CLEANUP_RESOURCE","Q_GLOBAL_STATIC","Q_GLOBAL_STATIC_WITH_ARGS","Q_DECLARE_INTERFACE","Q_DECLARE_TYPEINFO","Q_DECLARE_SHARED","Q_DECLARE_FLAGS","Q_DECLARE_OPERATORS_FOR_FLAGS","Q_FOREVER","Q_DECLARE_PRIVATE","Q_DECLARE_PUBLIC","Q_D","Q_Q","Q_DISABLE_COPY","Q_INTERFACES","Q_FLAGS","Q_SCRIPTABLE","Q_INVOKABLE","Q_GADGET","Q_ARG","Q_RETURN_ARG","Q_ASSERT","Q_ASSERT_X","Q_PRIVATE_SLOT","Q_DECLARE_METATYPE","Q_NOREPLY","TRUE","FALSE","connect","disconnect","emit","signals","slots","foreach","forever"] >>= withAttribute "Extensions"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["auto","bool","char","const","double","float","int","long","mutable","register","short","signed","static","unsigned","void","volatile","uchar","uint","int8_t","int16_t","int32_t","int64_t","uint8_t","uint16_t","uint32_t","uint64_t","wchar_t"] >>= withAttribute "Data Type"))
+                        <|>
+                        ((pHlCChar >>= withAttribute "Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Normal Text"))
+                        <|>
+                        (withChildren (pFloat >>= withAttribute "Float") ((pAnyChar "fF" >>= withAttribute "Float")))
+                        <|>
+                        ((pHlCOct >>= withAttribute "Octal"))
+                        <|>
+                        ((pHlCHex >>= withAttribute "Hex"))
+                        <|>
+                        (withChildren (pInt >>= withAttribute "Decimal") (((pString False "ULL" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "LUL" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "LLU" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "UL" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "LU" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "LL" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "U" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "L" >>= withAttribute "Decimal"))))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Doxygen.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetect2Chars False '/' '/' >>= withAttribute "Comment") >>~ pushContext "Commentar 1")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "Commentar 2")
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Symbol"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Symbol"))
+                        <|>
+                        ((pAnyChar ":!%&()+,-/.*<=>?[]{|}~^;" >>= withAttribute "Symbol")))
+     return (attr, result)
+
+parseRules "String" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "String"))
+                        <|>
+                        ((pHlCStringChar >>= withAttribute "String Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Region Marker" = 
+  pzero
+
+parseRules "Commentar 1" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Comment")))
+     return (attr, result)
+
+parseRules "Commentar 2" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Comment")))
+     return (attr, result)
+
+parseRules "AfterHash" = 
+  do (attr, result) <- (((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*if(?:def|ndef)?(?=\\s+\\S)") >>= withAttribute "Preprocessor") >>~ pushContext "Preprocessor")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*endif") >>= withAttribute "Preprocessor") >>~ pushContext "Preprocessor")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*define.*((?=\\\\))") >>= withAttribute "Preprocessor") >>~ pushContext "Define")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*(?:el(?:se|if)|include(?:_next)?|define|undef|line|error|warning|pragma)") >>= withAttribute "Preprocessor") >>~ pushContext "Preprocessor")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s+[0-9]+") >>= withAttribute "Preprocessor") >>~ pushContext "Preprocessor"))
+     return (attr, result)
+
+parseRules "Preprocessor" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "Preprocessor"))
+                        <|>
+                        ((pRangeDetect '"' '"' >>= withAttribute "Prep. Lib"))
+                        <|>
+                        ((pRangeDetect '<' '>' >>= withAttribute "Prep. Lib"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Doxygen.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "Commentar/Preprocessor")
+                        <|>
+                        ((pDetect2Chars False '/' '/' >>= withAttribute "Comment") >>~ pushContext "Commentar 1"))
+     return (attr, result)
+
+parseRules "Define" = 
+  do (attr, result) <- ((pLineContinue >>= withAttribute "Preprocessor"))
+     return (attr, result)
+
+parseRules "Commentar/Preprocessor" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Comment")))
+     return (attr, result)
+
+parseRules "Outscoped" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Comment"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Doxygen.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetect2Chars False '/' '/' >>= withAttribute "Comment") >>~ pushContext "Commentar 1")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "Commentar 2")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*if") >>= withAttribute "Comment") >>~ pushContext "Outscoped intern")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*el(?:se|if)") >>= withAttribute "Preprocessor") >>~ (popContext >> return ()))
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*endif") >>= withAttribute "Preprocessor") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Outscoped intern" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Comment"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Doxygen.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetect2Chars False '/' '/' >>= withAttribute "Comment") >>~ pushContext "Commentar 1")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "Commentar 2")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*if") >>= withAttribute "Comment") >>~ pushContext "Outscoped intern")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*endif") >>= withAttribute "Comment") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Css.hs b/Text/Highlighting/Kate/Syntax/Css.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Css.hs
@@ -0,0 +1,276 @@
+{- This module was generated from data in the Kate syntax highlighting file css.xml, version 2.01,
+   by  Wilbert Berendsen (wilbert@kde.nl) -}
+
+module Text.Highlighting.Kate.Syntax.Css ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Alert
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "CSS"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.css"
+
+-- | 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 = "CSS" }
+  context <- currentContext <|> (pushContext "Base" >> 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 [("CSS",["Base"])], synStLanguage = "CSS", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = False, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Base" -> return ()
+    "FindRuleSets" -> return ()
+    "FindValues" -> return ()
+    "FindStrings" -> return ()
+    "FindComments" -> return ()
+    "Media" -> return ()
+    "Media2" -> return ()
+    "SelAttr" -> return ()
+    "SelPseudo" -> (popContext >> return ())
+    "Import" -> return ()
+    "Comment" -> return ()
+    "RuleSet" -> return ()
+    "Rule" -> return ()
+    "Rule2" -> return ()
+    "PropParen" -> return ()
+    "PropParen2" -> return ()
+    "StringDQ" -> return ()
+    "StringSQ" -> return ()
+    "InsideString" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Property","Keyword"),("Unknown Property","Keyword"),("Media","DecVal"),("At Rule","DecVal"),("String","String"),("Value","DataType"),("Important","Keyword"),("Selector Attr","Char"),("Selector Id","Float"),("Selector Class","Float"),("Selector Pseudo","DecVal"),("Comment","Comment"),("Region Marker","RegionMarker"),("Alert","Alert"),("Error","Error")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Base","Normal Text"),("FindRuleSets","Normal Text"),("FindValues","Normal Text"),("FindStrings","Normal Text"),("FindComments","Normal Text"),("Media","Normal Text"),("Media2","Normal Text"),("SelAttr","Selector Attr"),("SelPseudo","Selector Pseudo"),("Import","Normal Text"),("Comment","Comment"),("RuleSet","Normal Text"),("Rule","Normal Text"),("Rule2","Normal Text"),("PropParen","Normal Text"),("PropParen2","Normal Text"),("StringDQ","String"),("StringSQ","String"),("InsideString","String")]
+
+parseRules "Base" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((parseRules "FindRuleSets")))
+     return (attr, result)
+
+parseRules "FindRuleSets" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "@media\\b") >>= withAttribute "Media") >>~ pushContext "Media")
+                        <|>
+                        ((pRegExpr (compileRegex "@import\\b") >>= withAttribute "At Rule") >>~ pushContext "Import")
+                        <|>
+                        ((pRegExpr (compileRegex "@(font-face|charset)\\b") >>= withAttribute "At Rule"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Property") >>~ pushContext "RuleSet")
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Selector Attr") >>~ pushContext "SelAttr")
+                        <|>
+                        ((pRegExpr (compileRegex "#([a-zA-Z0-9\\-_]|[\\x80-\\xFF]|\\\\[0-9A-Fa-f]{1,6})*") >>= withAttribute "Selector Id"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\.([a-zA-Z0-9\\-_]|[\\x80-\\xFF]|\\\\[0-9A-Fa-f]{1,6})*") >>= withAttribute "Selector Class"))
+                        <|>
+                        ((pRegExpr (compileRegex ":lang\\([\\w_-]+\\)") >>= withAttribute "Selector Pseudo"))
+                        <|>
+                        ((pDetectChar False ':' >>= withAttribute "Selector Pseudo") >>~ pushContext "SelPseudo")
+                        <|>
+                        ((parseRules "FindStrings"))
+                        <|>
+                        ((parseRules "FindComments")))
+     return (attr, result)
+
+parseRules "FindValues" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "[-+]?[0-9.]+(em|ex|px|in|cm|mm|pt|pc|deg|rad|grad|ms|s|Hz|kHz)\\b") >>= withAttribute "Value"))
+                        <|>
+                        ((pRegExpr (compileRegex "[-+]?[0-9.]+[%]?") >>= withAttribute "Value"))
+                        <|>
+                        ((pRegExpr (compileRegex "[\\w\\-]+") >>= withAttribute "Normal Text")))
+     return (attr, result)
+
+parseRules "FindStrings" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "StringDQ")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "String") >>~ pushContext "StringSQ"))
+     return (attr, result)
+
+parseRules "FindComments" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "/\\*BEGIN.*\\*/") >>= withAttribute "Region Marker"))
+                        <|>
+                        ((pRegExpr (compileRegex "/\\*END.*\\*/") >>= withAttribute "Region Marker"))
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "Comment"))
+     return (attr, result)
+
+parseRules "Media" = 
+  do (attr, result) <- (((pDetectChar False '{' >>= withAttribute "Media") >>~ pushContext "Media2")
+                        <|>
+                        ((pKeyword " \n\t.():!+,<=>&*/;?[]^{|}~\\" ["all","aural","braille","embossed","handheld","print","projection","screen","tty","tv"] >>= withAttribute "Media"))
+                        <|>
+                        ((pDetectChar False ',' >>= withAttribute "Media"))
+                        <|>
+                        ((parseRules "FindComments"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S+") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "Media2" = 
+  do (attr, result) <- (((pDetectChar False '}' >>= withAttribute "Media") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "FindRuleSets")))
+     return (attr, result)
+
+parseRules "SelAttr" = 
+  do (attr, result) <- (((pDetectChar False ']' >>= withAttribute "Selector Attr") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindStrings")))
+     return (attr, result)
+
+parseRules "SelPseudo" = 
+  do (attr, result) <- (((pKeyword " \n\t.():!+,<=>&*/;?[]^{|}~\\" ["hover","link","visited","active","focus","first-child","last-child","only-child","first-of-type","last-of-type","only-of-type","first-letter","first-line","before","after","selection","root","empty","target","enabled","disabled","checked","indeterminate","nth-child","nth-last-child","nth-of-type","nth-last-of-type","not"] >>= withAttribute "Selector Pseudo") >>~ (popContext >> return ()))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "Import" = 
+  do (attr, result) <- (((pDetectChar False ';' >>= withAttribute "At Rule") >>~ (popContext >> return ()))
+                        <|>
+                        ((pKeyword " \n\t.():!+,<=>&*/;?[]^{|}~\\" ["all","aural","braille","embossed","handheld","print","projection","screen","tty","tv"] >>= withAttribute "Media"))
+                        <|>
+                        ((parseRules "FindValues"))
+                        <|>
+                        ((parseRules "FindStrings"))
+                        <|>
+                        ((parseRules "FindComments")))
+     return (attr, result)
+
+parseRules "Comment" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Comment")))
+     return (attr, result)
+
+parseRules "RuleSet" = 
+  do (attr, result) <- (((pDetectChar False '}' >>= withAttribute "Property") >>~ (popContext >> return ()))
+                        <|>
+                        ((pKeyword " \n\t.():!+,<=>&*/;?[]^{|}~\\" ["azimuth","background","background-attachment","background-color","background-image","background-position","background-repeat","border","border-bottom","border-bottom-color","border-bottom-style","border-bottom-width","border-collapse","border-color","border-left","border-left-color","border-left-style","border-left-width","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-style","border-top-width","border-width","bottom","caption-side","clear","clip","color","content","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","elevation","empty-cells","float","font","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","height","left","letter-spacing","line-height","list-style","list-style-image","list-style-keyword","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marker-offset","max-height","max-width","min-height","min-width","orphans","outline","outline-color","outline-style","outline-width","overflow","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","pitch","pitch-range","play-during","position","quotes","richness","right","size","speak","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","table-layout","text-align","text-decoration","text-decoration-color","text-indent","text-shadow","text-transform","top","unicode-bidi","vertical-align","visibility","voice-family","volume","white-space","widows","width","word-spacing","z-index","border-radius","box-sizing","opacity","text-shadow","-moz-border-radius","-moz-box-flex","konq_bgpos_x","konq_bgpos_y","font-family","font-size","font-stretch","font-style","font-variant","font-weight","unicode-range","units-per-em","src","panose-1","stemv","stemh","slope","cap-height","x-height","ascent","descent","widths","bbox","definition-src","baseline","centerline","mathline","topline"] >>= withAttribute "Property") >>~ pushContext "Rule")
+                        <|>
+                        ((pRegExpr (compileRegex "-?[A-Za-z_-]+(?=\\s*:)") >>= withAttribute "Unknown Property") >>~ pushContext "Rule")
+                        <|>
+                        ((parseRules "FindComments"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "Rule" = 
+  do (attr, result) <- (((pDetectChar False ':' >>= withAttribute "Property") >>~ pushContext "Rule2")
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "Rule2" = 
+  do (attr, result) <- (((pDetectChar False ';' >>= withAttribute "Property") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Property") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((pKeyword " \n\t.():!+,<=>&*/;?[]^{|}~\\" ["inherit","none","hidden","dotted","dashed","solid","double","groove","ridge","inset","outset","xx-small","x-small","small","medium","large","x-large","xx-large","smaller","larger","italic","oblique","small-caps","normal","bold","bolder","lighter","light","100","200","300","400","500","600","700","800","900","transparent","repeat","repeat-x","repeat-y","no-repeat","baseline","sub","super","top","text-top","middle","bottom","text-bottom","left","right","center","justify","konq-center","disc","circle","square","box","decimal","decimal-leading-zero","lower-roman","upper-roman","lower-greek","lower-alpha","lower-latin","upper-alpha","upper-latin","hebrew","armenian","georgian","cjk-ideographic","hiragana","katakana","hiragana-iroha","katakana-iroha","inline","inline-block","block","list-item","run-in","compact","marker","table","inline-table","table-row-group","table-header-group","table-footer-group","table-row","table-column-group","table-column","table-cell","table-caption","auto","crosshair","default","pointer","move","e-resize","ne-resize","nw-resize","n-resize","se-resize","sw-resize","s-resize","w-resize","text","wait","help","above","absolute","always","avoid","below","bidi-override","blink","both","capitalize","caption","close-quote","collapse","condensed","crop","cross","embed","expanded","extra-condensed","extra-expanded","fixed","hand","hide","higher","icon","inside","invert","landscape","level","line-through","loud","lower","lowercase","ltr","menu","message-box","mix","narrower","no-close-quote","no-open-quote","nowrap","open-quote","outside","overline","portrait","pre","pre-line","pre-wrap","relative","rtl","scroll","semi-condensed","semi-expanded","separate","show","small-caption","static","static-position","status-bar","thick","thin","ultra-condensed","ultra-expanded","underline","uppercase","visible","wider","break","serif","sans-serif","cursive","fantasy","monospace","border-box","content-box","-moz-box"] >>= withAttribute "Value"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,<=>&*/;?[]^{|}~\\" ["aqua","black","blue","fuchsia","gray","green","lime","maroon","navy","olive","purple","red","silver","teal","white","yellow","ActiveBorder","ActiveCaption","AppWorkspace","Background","ButtonFace","ButtonHighlight","ButtonShadow","ButtonText","CaptionText","GrayText","Highlight","HighlightText","InactiveBorder","InactiveCaption","InactiveCaptionText","InfoBackground","InfoText","Menu","MenuText","Scrollbar","ThreeDDarkShadow","ThreeDFace","ThreeDHighlight","ThreeDLightShadow","ThreeDShadow","Window","WindowFrame","WindowText"] >>= withAttribute "Value"))
+                        <|>
+                        ((pRegExpr (compileRegex "#([0-9A-Fa-f]{3}){1,4}\\b") >>= withAttribute "Value"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,<=>&*/;?[]^{|}~\\" ["url","attr","rect","rgb","counter","counters","local","format","expression"] >>= withAttribute "Value") >>~ pushContext "PropParen")
+                        <|>
+                        ((pRegExpr (compileRegex "!important\\b") >>= withAttribute "Important"))
+                        <|>
+                        ((parseRules "FindValues"))
+                        <|>
+                        ((parseRules "FindStrings"))
+                        <|>
+                        ((parseRules "FindComments")))
+     return (attr, result)
+
+parseRules "PropParen" = 
+  do (attr, result) <- (((pDetectChar False '(' >>= withAttribute "Value") >>~ pushContext "PropParen2")
+                        <|>
+                        ((parseRules "FindComments"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "PropParen2" = 
+  do (attr, result) <- (((pDetectChar False ')' >>= withAttribute "Value") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "FindValues"))
+                        <|>
+                        ((parseRules "FindStrings"))
+                        <|>
+                        ((parseRules "FindComments")))
+     return (attr, result)
+
+parseRules "StringDQ" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "InsideString")))
+     return (attr, result)
+
+parseRules "StringSQ" = 
+  do (attr, result) <- (((pDetectChar False '\'' >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "InsideString")))
+     return (attr, result)
+
+parseRules "InsideString" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\[\"']") >>= withAttribute "String"))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "String")))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/D.hs b/Text/Highlighting/Kate/Syntax/D.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/D.hs
@@ -0,0 +1,312 @@
+{- This module was generated from data in the Kate syntax highlighting file d.xml, version 1.43,
+   by  Aziz Köksal (aziz.koeksal@gmail.com), Jari-Matti Mäkelä (jmjm@iki.fi), Simon J Mackenzie (project.katedxml@smackoz.fastmail.fm) -}
+
+module Text.Highlighting.Kate.Syntax.D ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "D"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.d;*.D;*.di;*.DI;"
+
+-- | 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 = "D" }
+  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 [("D",["normal"])], synStLanguage = "D", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "normal" -> return ()
+    "UnicodeShort" -> (popContext >> return ())
+    "UnicodeLong" -> (popContext >> return ())
+    "HTMLEntity" -> (popContext >> return ())
+    "ModuleName" -> return ()
+    "Deprecated" -> return ()
+    "Linkage" -> (popContext >> return ())
+    "Linkage2" -> (popContext >> return ())
+    "Version" -> (popContext >> return ())
+    "Version2" -> (popContext >> return ())
+    "Pragmas" -> (popContext >> return ())
+    "RawString" -> return ()
+    "BQString" -> return ()
+    "HexString" -> return ()
+    "CharLiteral" -> (popContext >> return ())
+    "String" -> return ()
+    "CommentLine" -> (popContext >> return ())
+    "CommentBlock" -> return ()
+    "CommentNested" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Type","DataType"),("Integer","DecVal"),("Binary","BaseN"),("Octal","BaseN"),("Hex","BaseN"),("Float","Float"),("LibrarySymbols","DataType"),("Deprecated","Comment"),("SpecialTokens","Normal"),("Module","Keyword"),("Module Name","Normal"),("Linkage","Keyword"),("Linkage Type","Normal"),("Debug","Keyword"),("Assert","Keyword"),("Version","Keyword"),("Version Type","Normal"),("Unit Test","Keyword"),("Pragma","Keyword"),("EscapeString","String"),("EscapeSequence","String"),("String","String"),("Char","Char"),("RawString","String"),("BQString","String"),("HexString","String"),("Comment","Comment"),("Error","Error")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("normal","Normal Text"),("UnicodeShort","EscapeString"),("UnicodeLong","EscapeString"),("HTMLEntity","EscapeString"),("ModuleName","Module Name"),("Deprecated","Deprecated"),("Linkage","Linkage"),("Linkage2","Linkage"),("Version","Version"),("Version2","Version"),("Pragmas","Pragma"),("RawString","RawString"),("BQString","BQString"),("HexString","HexString"),("CharLiteral","Char"),("String","String"),("CommentLine","Comment"),("CommentBlock","Comment"),("CommentNested","Comment")]
+
+parseRules "normal" = 
+  do (attr, result) <- (((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["abstract","alias","align","asm","auto","body","break","case","cast","catch","class","const","continue","default","delegate","delete","do","else","enum","export","false","final","finally","for","foreach","foreach_reverse","function","goto","if","in","inout","interface","invariant","is","lazy","macro","mixin","new","null","out","override","package","private","protected","public","ref","return","scope","static","struct","super","switch","synchronized","template","this","throw","true","try","typedef","typeid","typeof","union","volatile","while","with"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["module","import"] >>= withAttribute "Module") >>~ pushContext "ModuleName")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["void","bool","byte","ubyte","short","ushort","int","uint","long","ulong","cent","ucent","float","double","real","ireal","ifloat","idouble","creal","cfloat","cdouble","char","wchar","dchar"] >>= withAttribute "Type"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["string","wstring","dstring","size_t","ptrdiff_t","hash_t","Error","Exception","Object","TypeInfo","ClassInfo"] >>= withAttribute "LibrarySymbols"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["extern"] >>= withAttribute "Linkage") >>~ pushContext "Linkage")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["debug"] >>= withAttribute "Debug"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["assert"] >>= withAttribute "Assert"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["pragma"] >>= withAttribute "Pragma") >>~ pushContext "Pragmas")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["version"] >>= withAttribute "Version") >>~ pushContext "Version")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["unittest"] >>= withAttribute "Unit Test"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["__FILE__","__LINE__","__DATE__","__TIME__","__TIMESTAMP__","__VENDOR__","__VERSION__","__EOF__"] >>= withAttribute "SpecialTokens"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["deprecated"] >>= withAttribute "Deprecated") >>~ pushContext "Deprecated")
+                        <|>
+                        ((pDetect2Chars False 'r' '"' >>= withAttribute "RawString") >>~ pushContext "RawString")
+                        <|>
+                        ((pDetect2Chars False 'x' '"' >>= withAttribute "HexString") >>~ pushContext "HexString")
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pHlCStringChar >>= withAttribute "EscapeString") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetect2Chars False '\\' 'u' >>= withAttribute "EscapeString") >>~ pushContext "UnicodeShort")
+                        <|>
+                        ((pDetect2Chars False '\\' 'U' >>= withAttribute "EscapeString") >>~ pushContext "UnicodeLong")
+                        <|>
+                        ((pDetect2Chars False '\\' '&' >>= withAttribute "EscapeString") >>~ pushContext "HTMLEntity")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Char") >>~ pushContext "CharLiteral")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((pDetectChar False '`' >>= withAttribute "BQString") >>~ pushContext "BQString")
+                        <|>
+                        ((pDetect2Chars False '/' '/' >>= withAttribute "Comment") >>~ pushContext "CommentLine")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "CommentBlock")
+                        <|>
+                        ((pDetect2Chars False '/' '+' >>= withAttribute "Comment") >>~ pushContext "CommentNested")
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pString False "..." >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetect2Chars False '.' '.' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "0[xX][_a-fA-F\\d]*(\\.[_a-fA-F\\d]*)?[pP][-+]?[\\d]+[_\\d]*[fFL]?i?") >>= withAttribute "Float") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[\\d][_\\d]*(\\.(?!\\.)[_\\d]*([eE][-+]?[\\d]+[_\\d]*)?[fFL]?i?|[eE][-+]?[\\d]+[_\\d]*[fFL]?i?|[fF]i?|[fFL]?i)") >>= withAttribute "Float") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\.[\\d][_\\d]*([eE][-+]?[\\d]+[_\\d]*)?[fFL]?i?") >>= withAttribute "Float") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "0[bB]_*[01][01_]*(L[uU]?|[uU]L?)?") >>= withAttribute "Binary") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "0_*[0-7][0-7_]*(L[uU]?|[uU]L?)?") >>= withAttribute "Octal") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "0[xX]_*[\\da-fA-F][\\da-fA-F_]*(L[uU]?|[uU]L?)?") >>= withAttribute "Hex") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\d+[\\d_]*(L[uU]?|[uU]L?)?") >>= withAttribute "Integer") >>~ (popContext >> return ()))
+                        <|>
+                        ((pString False "#line" >>= withAttribute "Pragma") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "UnicodeShort" = 
+  do (attr, result) <- ((pRegExpr (compileRegex "[\\da-fA-F]{4}") >>= withAttribute "EscapeString") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "UnicodeLong" = 
+  do (attr, result) <- ((pRegExpr (compileRegex "[\\da-fA-F]{8}") >>= withAttribute "EscapeString") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "HTMLEntity" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "[a-zA-Z]\\w+;") >>= withAttribute "EscapeString") >>~ (popContext >> return ()))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "ModuleName" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '/' >>= withAttribute "Comment") >>~ pushContext "CommentLine")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "CommentBlock")
+                        <|>
+                        ((pDetect2Chars False '/' '+' >>= withAttribute "Comment") >>~ pushContext "CommentNested")
+                        <|>
+                        ((pRegExpr (compileRegex "[^\\s\\w.:,]") >>= withAttribute "Module Name") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Deprecated" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '/' >>= withAttribute "Comment") >>~ pushContext "CommentLine")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "CommentBlock")
+                        <|>
+                        ((pDetect2Chars False '/' '+' >>= withAttribute "Comment") >>~ pushContext "CommentNested")
+                        <|>
+                        ((pRegExpr (compileRegex "[;({=]") >>= withAttribute "Normal Text") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Linkage" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Linkage"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Normal Text") >>~ pushContext "Linkage2")
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "Linkage2" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Linkage"))
+                        <|>
+                        ((pString False "C++" >>= withAttribute "Linkage Type") >>~ (popContext >> return ()))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["C","D","Windows","Pascal","System"] >>= withAttribute "Linkage Type") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[^)]+") >>= withAttribute "Error") >>~ (popContext >> return ()))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "Version" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Version"))
+                        <|>
+                        ((pDetectChar False '=' >>= withAttribute "Normal Text") >>~ pushContext "Version2")
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Normal Text") >>~ pushContext "Version2")
+                        <|>
+                        ((pDetectChar False ';' >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[^\\n]+") >>= withAttribute "Error") >>~ (popContext >> return ()))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "Version2" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Version"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["DigitalMars","X86","AMD64","Windows","Win32","Win64","linux","LittleEndian","BigEndian","D_InlineAsm","none"] >>= withAttribute "Version Type") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((pInt >>= withAttribute "Integer") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[^);]+") >>= withAttribute "Error") >>~ (popContext >> return ()))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "Pragmas" = 
+  do (attr, result) <- (((pDetectChar False '(' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["msg","lib"] >>= withAttribute "Version Type") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Normal Text") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "RawString" = 
+  do (attr, result) <- ((pDetectChar False '"' >>= withAttribute "RawString") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "BQString" = 
+  do (attr, result) <- ((pDetectChar False '`' >>= withAttribute "BQString") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "HexString" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "HexString") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[^\\sa-fA-F\\d\"]+") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "CharLiteral" = 
+  do (attr, result) <- (((pHlCStringChar >>= withAttribute "EscapeSequence"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Char") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\(u[\\da-fA-F]{4}|U[\\da-fA-F]{8}|&[a-zA-Z]\\w+;)") >>= withAttribute "EscapeSequence"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Char") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex ".'") >>= withAttribute "Char"))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "String" = 
+  do (attr, result) <- (((pDetect2Chars False '\\' '"' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((pHlCStringChar >>= withAttribute "EscapeSequence"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\(u[\\da-fA-F]{4}|U[\\da-fA-F]{8}|&[a-zA-Z]\\w+;)") >>= withAttribute "EscapeSequence")))
+     return (attr, result)
+
+parseRules "CommentLine" = 
+  pzero
+
+parseRules "CommentBlock" = 
+  do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "CommentNested" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '+' >>= withAttribute "Comment") >>~ pushContext "CommentNested")
+                        <|>
+                        ((pDetect2Chars False '+' '/' >>= withAttribute "Comment") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Djangotemplate.hs b/Text/Highlighting/Kate/Syntax/Djangotemplate.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Djangotemplate.hs
@@ -0,0 +1,470 @@
+{- This module was generated from data in the Kate syntax highlighting file djangotemplate.xml, version 1.2,
+   by  Matthew Marshall (matthew@matthewmarshall.org) -}
+
+module Text.Highlighting.Kate.Syntax.Djangotemplate ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Alert
+import qualified Text.Highlighting.Kate.Syntax.Css
+import qualified Text.Highlighting.Kate.Syntax.Javascript
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Django HTML Template"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.htm;*.html"
+
+-- | 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 = "Django HTML Template" }
+  context <- currentContext <|> (pushContext "Start" >> 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 [("Django HTML Template",["Start"])], synStLanguage = "Django HTML Template", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Start" -> return ()
+    "In Block" -> return ()
+    "FindTemplate" -> return ()
+    "Template Comment" -> return ()
+    "Template Var" -> return ()
+    "Template Filter" -> return ()
+    "Template Tag" -> return ()
+    "Found Block Tag" -> return ()
+    "In Block Tag" -> return ()
+    "Non Matching Tag" -> return ()
+    "In Template Tag" -> return ()
+    "Single A-string" -> return ()
+    "Single Q-string" -> return ()
+    "FindHTML" -> return ()
+    "FindEntityRefs" -> return ()
+    "FindPEntityRefs" -> return ()
+    "FindAttributes" -> return ()
+    "FindDTDRules" -> return ()
+    "Comment" -> return ()
+    "CDATA" -> return ()
+    "PI" -> return ()
+    "Doctype" -> return ()
+    "Doctype Internal Subset" -> return ()
+    "Doctype Markupdecl" -> return ()
+    "Doctype Markupdecl DQ" -> return ()
+    "Doctype Markupdecl SQ" -> return ()
+    "El Open" -> return ()
+    "El Close" -> return ()
+    "El Close 2" -> return ()
+    "El Close 3" -> return ()
+    "CSS" -> return ()
+    "CSS content" -> return ()
+    "JS" -> return ()
+    "JS content" -> return ()
+    "JS comment close" -> (popContext >> return ())
+    "Value" -> return ()
+    "Value NQ" -> (popContext >> popContext >> return ())
+    "Value DQ" -> return ()
+    "Value SQ" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Comment","Comment"),("CDATA","BaseN"),("Processing Instruction","Keyword"),("Doctype","DataType"),("Element","Keyword"),("Attribute","Others"),("Value","String"),("EntityRef","DecVal"),("PEntityRef","DecVal"),("Error","Error"),("Template Var","Function"),("Template Tag","Function"),("Template Tag Argument","Function"),("Template String","String"),("Template Comment","Comment"),("Template Filter","Others"),("Mismatched Block Tag","Error")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Start","Normal Text"),("In Block","Normal Text"),("FindTemplate","Normal Text"),("Template Comment","Template Comment"),("Template Var","Template Var"),("Template Filter","Template Filter"),("Template Tag","Template Tag"),("Found Block Tag","Template Tag"),("In Block Tag","Template Tag Argument"),("Non Matching Tag","Template Tag"),("In Template Tag","Template Tag Argument"),("Single A-string","Template String"),("Single Q-string","Template String"),("FindHTML","Normal Text"),("FindEntityRefs","Normal Text"),("FindPEntityRefs","Normal Text"),("FindAttributes","Normal Text"),("FindDTDRules","Normal Text"),("Comment","Comment"),("CDATA","Normal Text"),("PI","Normal Text"),("Doctype","Normal Text"),("Doctype Internal Subset","Normal Text"),("Doctype Markupdecl","Normal Text"),("Doctype Markupdecl DQ","Value"),("Doctype Markupdecl SQ","Value"),("El Open","Normal Text"),("El Close","Normal Text"),("El Close 2","Normal Text"),("El Close 3","Normal Text"),("CSS","Normal Text"),("CSS content","Normal Text"),("JS","Normal Text"),("JS content","Normal Text"),("JS comment close","Comment"),("Value","Normal Text"),("Value NQ","Normal Text"),("Value DQ","Value"),("Value SQ","Value")]
+
+parseRules "Start" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\{%\\s*end[a-z]+\\s*%\\}") >>= withAttribute "Mismatched Block Tag"))
+                        <|>
+                        ((parseRules "FindTemplate"))
+                        <|>
+                        ((parseRules "FindHTML")))
+     return (attr, result)
+
+parseRules "In Block" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\{%\\s*end[a-z]+\\s*%\\}") >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindTemplate"))
+                        <|>
+                        ((parseRules "FindHTML")))
+     return (attr, result)
+
+parseRules "FindTemplate" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\{%\\s*comment\\s*%\\}") >>= withAttribute "Template Comment") >>~ pushContext "Template Comment")
+                        <|>
+                        ((pDetect2Chars False '{' '{' >>= withAttribute "Template Var") >>~ pushContext "Template Var")
+                        <|>
+                        ((pDetect2Chars False '{' '%' >>= withAttribute "Template Tag") >>~ pushContext "Template Tag"))
+     return (attr, result)
+
+parseRules "Template Comment" = 
+  do (attr, result) <- ((pRegExpr (compileRegex "\\{%\\s*endcomment\\s*%\\}") >>= withAttribute "Template Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Template Var" = 
+  do (attr, result) <- (((pDetect2Chars False '}' '}' >>= withAttribute "Template Var") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '|' >>= withAttribute "Template Filter") >>~ pushContext "Template Filter")
+                        <|>
+                        ((pDetect2Chars False '{' '{' >>= withAttribute "Error"))
+                        <|>
+                        ((pDetect2Chars False '{' '%' >>= withAttribute "Error"))
+                        <|>
+                        ((pDetect2Chars False '%' '}' >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "Template Filter" = 
+  do (attr, result) <- (((pDetect2Chars False '}' '}' >>= withAttribute "Template Var") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Template String") >>~ pushContext "Single A-string")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Template String") >>~ pushContext "Single Q-string")
+                        <|>
+                        ((pDetect2Chars False '{' '{' >>= withAttribute "Error"))
+                        <|>
+                        ((pDetect2Chars False '{' '%' >>= withAttribute "Error"))
+                        <|>
+                        ((pDetect2Chars False '%' '}' >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "Template Tag" = 
+  do (attr, result) <- (((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["for","block","if","ifequal","ifnotequal","ifchanged","blocktrans","spaceless"] >>= withAttribute "Template Tag") >>~ pushContext "Found Block Tag")
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Template Tag") >>~ pushContext "In Template Tag"))
+     return (attr, result)
+
+parseRules "Found Block Tag" = 
+  do (attr, result) <- ((pRegExpr (compileRegex "([A-Za-z_:][\\w.:_-]*)") >>= withAttribute "Template Tag") >>~ pushContext "In Block Tag")
+     return (attr, result)
+
+parseRules "In Block Tag" = 
+  do (attr, result) <- (((pRegExprDynamic "\\{%\\s*end%1\\s*%\\}" >>= withAttribute "Template Tag") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\{%\\s*end[a-z]+\\s*%\\}") >>= withAttribute "Template Tag Argument") >>~ pushContext "Non Matching Tag")
+                        <|>
+                        ((pDetect2Chars False '%' '}' >>= withAttribute "Template Tag") >>~ pushContext "In Block")
+                        <|>
+                        ((parseRules "In Template Tag")))
+     return (attr, result)
+
+parseRules "Non Matching Tag" = 
+  do (attr, result) <- (((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["endfor","endblock","endif","endifequal","endifnotequal","endifchanged","endblocktrans","endspaceless"] >>= withAttribute "Mismatched Block Tag") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Template Tag") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "In Template Tag" = 
+  do (attr, result) <- (((pDetect2Chars False '%' '}' >>= withAttribute "Template Tag") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Template String") >>~ pushContext "Single A-string")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Template String") >>~ pushContext "Single Q-string")
+                        <|>
+                        ((pDetect2Chars False '{' '{' >>= withAttribute "Error"))
+                        <|>
+                        ((pDetect2Chars False '{' '%' >>= withAttribute "Error"))
+                        <|>
+                        ((pDetect2Chars False '}' '}' >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "Single A-string" = 
+  do (attr, result) <- (((pHlCStringChar >>= withAttribute "Template String"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Template String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Single Q-string" = 
+  do (attr, result) <- (((pHlCStringChar >>= withAttribute "Template String"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Template String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "FindHTML" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pString False "<!--" >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pString False "<![CDATA[" >>= withAttribute "CDATA") >>~ pushContext "CDATA")
+                        <|>
+                        ((pRegExpr (compileRegex "<!DOCTYPE\\s+") >>= withAttribute "Doctype") >>~ pushContext "Doctype")
+                        <|>
+                        ((pRegExpr (compileRegex "<\\?[\\w:-]*") >>= withAttribute "Processing Instruction") >>~ pushContext "PI")
+                        <|>
+                        ((pRegExpr (compileRegex "<style\\b") >>= withAttribute "Element") >>~ pushContext "CSS")
+                        <|>
+                        ((pRegExpr (compileRegex "<script\\b") >>= withAttribute "Element") >>~ pushContext "JS")
+                        <|>
+                        ((pRegExpr (compileRegex "<pre\\b") >>= withAttribute "Element") >>~ pushContext "El Open")
+                        <|>
+                        ((pRegExpr (compileRegex "<div\\b") >>= withAttribute "Element") >>~ pushContext "El Open")
+                        <|>
+                        ((pRegExpr (compileRegex "<table\\b") >>= withAttribute "Element") >>~ pushContext "El Open")
+                        <|>
+                        ((pRegExpr (compileRegex "<[A-Za-z_:][\\w.:_-]*") >>= withAttribute "Element") >>~ pushContext "El Open")
+                        <|>
+                        ((pRegExpr (compileRegex "</pre\\b") >>= withAttribute "Element") >>~ pushContext "El Close")
+                        <|>
+                        ((pRegExpr (compileRegex "</div\\b") >>= withAttribute "Element") >>~ pushContext "El Close")
+                        <|>
+                        ((pRegExpr (compileRegex "</table\\b") >>= withAttribute "Element") >>~ pushContext "El Close")
+                        <|>
+                        ((pRegExpr (compileRegex "</[A-Za-z_:][\\w.:_-]*") >>= withAttribute "Element") >>~ pushContext "El Close")
+                        <|>
+                        ((parseRules "FindDTDRules"))
+                        <|>
+                        ((parseRules "FindEntityRefs")))
+     return (attr, result)
+
+parseRules "FindEntityRefs" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "&(#[0-9]+|#[xX][0-9A-Fa-f]+|[A-Za-z_:][\\w.:_-]*);") >>= withAttribute "EntityRef"))
+                        <|>
+                        ((pAnyChar "&<" >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "FindPEntityRefs" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "&(#[0-9]+|#[xX][0-9A-Fa-f]+|[A-Za-z_:][\\w.:_-]*);") >>= withAttribute "EntityRef"))
+                        <|>
+                        ((pRegExpr (compileRegex "%[A-Za-z_:][\\w.:_-]*;") >>= withAttribute "PEntityRef"))
+                        <|>
+                        ((pAnyChar "&%" >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "FindAttributes" = 
+  do (attr, result) <- (((pColumn 0 >> pRegExpr (compileRegex "[A-Za-z_:][\\w.:_-]*") >>= withAttribute "Attribute"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s+[A-Za-z_:][\\w.:_-]*") >>= withAttribute "Attribute"))
+                        <|>
+                        ((pDetectChar False '=' >>= withAttribute "Attribute") >>~ pushContext "Value"))
+     return (attr, result)
+
+parseRules "FindDTDRules" = 
+  do (attr, result) <- ((pRegExpr (compileRegex "<!(ELEMENT|ENTITY|ATTLIST|NOTATION)\\b") >>= withAttribute "Doctype") >>~ pushContext "Doctype Markupdecl")
+     return (attr, result)
+
+parseRules "Comment" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((parseRules "FindTemplate"))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Comment"))
+                        <|>
+                        ((pString False "-->" >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "-(-(?!->))+") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "CDATA" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pString False "]]>" >>= withAttribute "CDATA") >>~ (popContext >> return ()))
+                        <|>
+                        ((pString False "]]&gt;" >>= withAttribute "EntityRef")))
+     return (attr, result)
+
+parseRules "PI" = 
+  do (attr, result) <- ((pDetect2Chars False '?' '>' >>= withAttribute "Processing Instruction") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Doctype" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Doctype") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Doctype") >>~ pushContext "Doctype Internal Subset"))
+     return (attr, result)
+
+parseRules "Doctype Internal Subset" = 
+  do (attr, result) <- (((pDetectChar False ']' >>= withAttribute "Doctype") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindDTDRules"))
+                        <|>
+                        ((pString False "<!--" >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pRegExpr (compileRegex "<\\?[\\w:-]*") >>= withAttribute "Processing Instruction") >>~ pushContext "PI")
+                        <|>
+                        ((parseRules "FindPEntityRefs")))
+     return (attr, result)
+
+parseRules "Doctype Markupdecl" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Doctype") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Value") >>~ pushContext "Doctype Markupdecl DQ")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Value") >>~ pushContext "Doctype Markupdecl SQ"))
+     return (attr, result)
+
+parseRules "Doctype Markupdecl DQ" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "Value") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindPEntityRefs")))
+     return (attr, result)
+
+parseRules "Doctype Markupdecl SQ" = 
+  do (attr, result) <- (((pDetectChar False '\'' >>= withAttribute "Value") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindPEntityRefs")))
+     return (attr, result)
+
+parseRules "El Open" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '>' >>= withAttribute "Element") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Element") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindAttributes"))
+                        <|>
+                        ((parseRules "FindTemplate"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "El Close" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Element") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "El Close 2" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Element") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "El Close 3" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Element") >>~ (popContext >> popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "CSS" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '>' >>= withAttribute "Element") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Element") >>~ pushContext "CSS content")
+                        <|>
+                        ((parseRules "FindAttributes"))
+                        <|>
+                        ((parseRules "FindTemplate"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "CSS content" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "</style\\b") >>= withAttribute "Element") >>~ pushContext "El Close 2")
+                        <|>
+                        ((parseRules "FindTemplate"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Css.parseExpression)))
+     return (attr, result)
+
+parseRules "JS" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '>' >>= withAttribute "Element") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Element") >>~ pushContext "JS content")
+                        <|>
+                        ((parseRules "FindTemplate"))
+                        <|>
+                        ((parseRules "FindAttributes"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "JS content" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "</script\\b") >>= withAttribute "Element") >>~ pushContext "El Close 2")
+                        <|>
+                        ((pRegExpr (compileRegex "//(?=.*</script\\b)") >>= withAttribute "Comment") >>~ pushContext "JS comment close")
+                        <|>
+                        ((parseRules "FindTemplate"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Javascript.parseExpression)))
+     return (attr, result)
+
+parseRules "JS comment close" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "</script\\b") >>= withAttribute "Element") >>~ pushContext "El Close 3")
+                        <|>
+                        ((parseRules "FindTemplate"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd))))
+     return (attr, result)
+
+parseRules "Value" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "Value") >>~ pushContext "Value DQ")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Value") >>~ pushContext "Value SQ")
+                        <|>
+                        ((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        (pushContext "Value NQ" >> return ([], "")))
+     return (attr, result)
+
+parseRules "Value NQ" = 
+  do (attr, result) <- (((parseRules "FindEntityRefs"))
+                        <|>
+                        ((parseRules "FindTemplate"))
+                        <|>
+                        ((pRegExpr (compileRegex "/(?!>)") >>= withAttribute "Value"))
+                        <|>
+                        ((pRegExpr (compileRegex "[^/><\"'\\s]") >>= withAttribute "Value"))
+                        <|>
+                        ((popContext >> popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "Value DQ" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "Value") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "FindTemplate"))
+                        <|>
+                        ((parseRules "FindEntityRefs")))
+     return (attr, result)
+
+parseRules "Value SQ" = 
+  do (attr, result) <- (((pDetectChar False '\'' >>= withAttribute "Value") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "FindTemplate"))
+                        <|>
+                        ((parseRules "FindEntityRefs")))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Doxygen.hs b/Text/Highlighting/Kate/Syntax/Doxygen.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Doxygen.hs
@@ -0,0 +1,362 @@
+{- This module was generated from data in the Kate syntax highlighting file doxygen.xml, version 1.29,
+   by  Dominik Haumann (dhdev@gmx.de) -}
+
+module Text.Highlighting.Kate.Syntax.Doxygen ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Alert
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Doxygen"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.dox;*.doxygen"
+
+-- | 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 = "Doxygen" }
+  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 [("Doxygen",["Normal"])], synStLanguage = "Doxygen", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = False, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "LineComment" -> (popContext >> return ())
+    "BlockComment" -> return ()
+    "ML_TagWord" -> (popContext >> return ())
+    "ML_TagParam" -> (popContext >> return ())
+    "ML_TagWordWord" -> (popContext >> return ())
+    "ML_Tag2ndWord" -> (popContext >> popContext >> return ())
+    "ML_TagString" -> (popContext >> return ())
+    "ML_TagWordString" -> (popContext >> return ())
+    "ML_htmltag" -> return ()
+    "ML_htmlcomment" -> return ()
+    "ML_identifiers" -> return ()
+    "ML_types1" -> return ()
+    "ML_types2" -> return ()
+    "SL_TagWord" -> (popContext >> return ())
+    "SL_TagParam" -> (popContext >> return ())
+    "SL_TagWordWord" -> (popContext >> return ())
+    "SL_Tag2ndWord" -> (popContext >> popContext >> return ())
+    "SL_TagString" -> (popContext >> return ())
+    "SL_TagWordString" -> (popContext >> return ())
+    "SL_htmltag" -> (popContext >> return ())
+    "SL_htmlcomment" -> (popContext >> return ())
+    "SL_identifiers" -> (popContext >> return ())
+    "SL_types1" -> (popContext >> return ())
+    "SL_types2" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Tags","Keyword"),("Word","Keyword"),("HTML Tag","Keyword"),("Description","String"),("Comment","Comment"),("Region","RegionMarker"),("Identifier","Others"),("HTML Comment","Comment"),("Types","DataType")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal Text"),("LineComment","Comment"),("BlockComment","Comment"),("ML_TagWord","Comment"),("ML_TagParam","Comment"),("ML_TagWordWord","Comment"),("ML_Tag2ndWord","Comment"),("ML_TagString","Comment"),("ML_TagWordString","Comment"),("ML_htmltag","Identifier"),("ML_htmlcomment","HTML Comment"),("ML_identifiers","Identifier"),("ML_types1","Types"),("ML_types2","Types"),("SL_TagWord","Comment"),("SL_TagParam","Comment"),("SL_TagWordWord","Comment"),("SL_Tag2ndWord","Comment"),("SL_TagString","Comment"),("SL_TagWordString","Comment"),("SL_htmltag","Identifier"),("SL_htmlcomment","HTML Comment"),("SL_identifiers","Identifier"),("SL_types1","Types"),("SL_types2","Types")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "//(!|(/(?=[^/]|$)))<?") >>= withAttribute "Comment") >>~ pushContext "LineComment")
+                        <|>
+                        ((pRegExpr (compileRegex "/\\*(\\*[^*/]|!|[*!]<|\\*$)") >>= withAttribute "Comment") >>~ pushContext "BlockComment")
+                        <|>
+                        ((pRegExpr (compileRegex "//\\s*@\\{\\s*$") >>= withAttribute "Region"))
+                        <|>
+                        ((pRegExpr (compileRegex "//\\s*@\\}\\s*$") >>= withAttribute "Region"))
+                        <|>
+                        ((pRegExpr (compileRegex "/\\*\\s*@\\{\\s*\\*/") >>= withAttribute "Region"))
+                        <|>
+                        ((pRegExpr (compileRegex "/\\*\\s*@\\}\\s*\\*/") >>= withAttribute "Region")))
+     return (attr, result)
+
+parseRules "LineComment" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}" ["\\arg","\\attention","\\author","\\callgraph","\\code","\\dot","\\else","\\endcode","\\endcond","\\enddot","\\endhtmlonly","\\endif","\\endlatexonly","\\endlink","\\endmanonly","\\endverbatim","\\endxmlonly","\\f[","\\f]","\\f$","\\hideinitializer","\\htmlonly","\\interface","\\internal","\\invariant","\\~","\\@","\\$","\\\\","\\#","\\latexonly","\\li","\\manonly","\\n","\\nosubgrouping","\\note","\\only","\\post","\\pre","\\remarks","\\return","\\returns","\\sa","\\see","\\showinitializer","\\since","\\test","\\todo","\\verbatim","\\warning","\\xmlonly","@arg","@attention","@author","@callgraph","@code","@dot","@else","@endcode","@endcond","@enddot","@endhtmlonly","@endif","@endlatexonly","@endlink","@endmanonly","@endverbatim","@endxmlonly","@f[","@f]","@f$","@hideinitializer","@htmlonly","@interface","@internal","@invariant","@~","@@","@$","@\\","@#","@latexonly","@li","@manonly","@n","@nosubgrouping","@note","@only","@post","@pre","@remarks","@return","@returns","@sa","@see","@showinitializer","@since","@test","@todo","@verbatim","@warning","@xmlonly"] >>= withAttribute "Tags"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}" ["\\addtogroup","\\a","\\anchor","\\b","\\c","\\class","\\cond","\\copydoc","\\def","\\dontinclude","\\dotfile","\\e","\\elseif","\\em","\\enum","\\example","\\exception","\\exceptions","\\file","\\htmlinclude","\\if","\\ifnot","\\include","\\link","\\namespace","\\p","\\package","\\ref","\\relatesalso","\\relates","\\retval","\\throw","\\throws","\\verbinclude","\\version","\\xrefitem","@addtogroup","@a","@anchor","@b","@c","@class","@cond","@copydoc","@def","@dontinclude","@dotfile","@e","@elseif","@em","@enum","@example","@exception","@exceptions","@file","@htmlinclude","@if","@ifnot","@include","@link","@namespace","@p","@package","@ref","@relatesalso","@relates","@retval","@throw","@throws","@verbinclude","@version","@xrefitem"] >>= withAttribute "Tags") >>~ pushContext "SL_TagWord")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}" ["\\param","@param"] >>= withAttribute "Tags") >>~ pushContext "SL_TagParam")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}" ["\\image","@image"] >>= withAttribute "Tags") >>~ pushContext "SL_TagWordWord")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}" ["\\addindex","\\brief","\\bug","\\date","\\deprecated","\\fn","\\ingroup","\\line","\\mainpage","\\name","\\overload","\\par","\\short","\\skip","\\skipline","\\typedef","\\until","\\var","@addindex","@brief","@bug","@date","@deprecated","@fn","@ingroup","@line","@mainpage","@name","@overload","@par","@short","@skip","@skipline","@typedef","@until","@var"] >>= withAttribute "Tags") >>~ pushContext "SL_TagString")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}" ["\\defgroup","\\page","\\paragraph","\\section","\\struct","\\subsection","\\subsubsection","\\union","\\weakgroup","@defgroup","@page","@paragraph","@section","@struct","@subsection","@subsubsection","@union","@weakgroup"] >>= withAttribute "Tags") >>~ pushContext "SL_TagWordString")
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Comment"))
+                        <|>
+                        ((pString False "<!--" >>= withAttribute "HTML Comment") >>~ pushContext "SL_htmlcomment")
+                        <|>
+                        ((pDetect2Chars False '<' '<' >>= withAttribute "Comment"))
+                        <|>
+                        ((pRegExpr (compileRegex "<\\/?[a-zA-Z_:][a-zA-Z0-9._:-]*") >>= withAttribute "HTML Tag") >>~ pushContext "SL_htmltag"))
+     return (attr, result)
+
+parseRules "BlockComment" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetect2Chars False '@' '{' >>= withAttribute "Region"))
+                        <|>
+                        ((pDetect2Chars False '@' '}' >>= withAttribute "Region"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}" ["\\arg","\\attention","\\author","\\callgraph","\\code","\\dot","\\else","\\endcode","\\endcond","\\enddot","\\endhtmlonly","\\endif","\\endlatexonly","\\endlink","\\endmanonly","\\endverbatim","\\endxmlonly","\\f[","\\f]","\\f$","\\hideinitializer","\\htmlonly","\\interface","\\internal","\\invariant","\\~","\\@","\\$","\\\\","\\#","\\latexonly","\\li","\\manonly","\\n","\\nosubgrouping","\\note","\\only","\\post","\\pre","\\remarks","\\return","\\returns","\\sa","\\see","\\showinitializer","\\since","\\test","\\todo","\\verbatim","\\warning","\\xmlonly","@arg","@attention","@author","@callgraph","@code","@dot","@else","@endcode","@endcond","@enddot","@endhtmlonly","@endif","@endlatexonly","@endlink","@endmanonly","@endverbatim","@endxmlonly","@f[","@f]","@f$","@hideinitializer","@htmlonly","@interface","@internal","@invariant","@~","@@","@$","@\\","@#","@latexonly","@li","@manonly","@n","@nosubgrouping","@note","@only","@post","@pre","@remarks","@return","@returns","@sa","@see","@showinitializer","@since","@test","@todo","@verbatim","@warning","@xmlonly"] >>= withAttribute "Tags"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}" ["\\addtogroup","\\a","\\anchor","\\b","\\c","\\class","\\cond","\\copydoc","\\def","\\dontinclude","\\dotfile","\\e","\\elseif","\\em","\\enum","\\example","\\exception","\\exceptions","\\file","\\htmlinclude","\\if","\\ifnot","\\include","\\link","\\namespace","\\p","\\package","\\ref","\\relatesalso","\\relates","\\retval","\\throw","\\throws","\\verbinclude","\\version","\\xrefitem","@addtogroup","@a","@anchor","@b","@c","@class","@cond","@copydoc","@def","@dontinclude","@dotfile","@e","@elseif","@em","@enum","@example","@exception","@exceptions","@file","@htmlinclude","@if","@ifnot","@include","@link","@namespace","@p","@package","@ref","@relatesalso","@relates","@retval","@throw","@throws","@verbinclude","@version","@xrefitem"] >>= withAttribute "Tags") >>~ pushContext "ML_TagWord")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}" ["\\param","@param"] >>= withAttribute "Tags") >>~ pushContext "ML_TagParam")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}" ["\\image","@image"] >>= withAttribute "Tags") >>~ pushContext "ML_TagWordWord")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}" ["\\addindex","\\brief","\\bug","\\date","\\deprecated","\\fn","\\ingroup","\\line","\\mainpage","\\name","\\overload","\\par","\\short","\\skip","\\skipline","\\typedef","\\until","\\var","@addindex","@brief","@bug","@date","@deprecated","@fn","@ingroup","@line","@mainpage","@name","@overload","@par","@short","@skip","@skipline","@typedef","@until","@var"] >>= withAttribute "Tags") >>~ pushContext "ML_TagString")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}" ["\\defgroup","\\page","\\paragraph","\\section","\\struct","\\subsection","\\subsubsection","\\union","\\weakgroup","@defgroup","@page","@paragraph","@section","@struct","@subsection","@subsubsection","@union","@weakgroup"] >>= withAttribute "Tags") >>~ pushContext "ML_TagWordString")
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Comment"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\(<|>)") >>= withAttribute "Tags"))
+                        <|>
+                        ((pDetect2Chars False '<' '<' >>= withAttribute "Comment"))
+                        <|>
+                        ((pRegExpr (compileRegex "<\\/?[a-zA-Z_:][a-zA-Z0-9._:-]*") >>= withAttribute "HTML Tag") >>~ pushContext "ML_htmltag")
+                        <|>
+                        ((pString False "<!--" >>= withAttribute "HTML Comment") >>~ pushContext "ML_htmlcomment"))
+     return (attr, result)
+
+parseRules "ML_TagWord" = 
+  do (attr, result) <- (((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "SL_TagWord")))
+     return (attr, result)
+
+parseRules "ML_TagParam" = 
+  do (attr, result) <- (((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((pString False "[in]" >>= withAttribute "Tags") >>~ pushContext "ML_Tag2ndWord")
+                        <|>
+                        ((pString False "[out]" >>= withAttribute "Tags") >>~ pushContext "ML_Tag2ndWord")
+                        <|>
+                        ((pString False "[in,out]" >>= withAttribute "Tags") >>~ pushContext "ML_Tag2ndWord")
+                        <|>
+                        ((pRegExpr (compileRegex "\\S(?=([][,?;()]|\\.$|\\.?\\s))") >>= withAttribute "Word") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Word")))
+     return (attr, result)
+
+parseRules "ML_TagWordWord" = 
+  do (attr, result) <- (((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S(?=([][,?;()]|\\.$|\\.?\\s))") >>= withAttribute "Word") >>~ pushContext "ML_Tag2ndWord")
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Word")))
+     return (attr, result)
+
+parseRules "ML_Tag2ndWord" = 
+  do (attr, result) <- (((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "SL_Tag2ndWord")))
+     return (attr, result)
+
+parseRules "ML_TagString" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pString False "<!--" >>= withAttribute "HTML Comment") >>~ pushContext "ML_htmlcomment")
+                        <|>
+                        ((pDetect2Chars False '<' '<' >>= withAttribute "Comment"))
+                        <|>
+                        ((pRegExpr (compileRegex "<\\/?[a-zA-Z_:][a-zA-Z0-9._:-]*") >>= withAttribute "HTML Tag") >>~ pushContext "ML_htmltag")
+                        <|>
+                        ((pRegExpr (compileRegex ".") >>= withAttribute "Description")))
+     return (attr, result)
+
+parseRules "ML_TagWordString" = 
+  do (attr, result) <- (((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "SL_TagWordString")))
+     return (attr, result)
+
+parseRules "ML_htmltag" = 
+  do (attr, result) <- (((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetect2Chars False '/' '>' >>= withAttribute "HTML Tag") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "HTML Tag") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*=\\s*") >>= withAttribute "Identifier") >>~ pushContext "ML_identifiers"))
+     return (attr, result)
+
+parseRules "ML_htmlcomment" = 
+  do (attr, result) <- (((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pString False "-->" >>= withAttribute "HTML Comment") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "ML_identifiers" = 
+  do (attr, result) <- (((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*#?[a-zA-Z0-9]*") >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Types") >>~ pushContext "ML_types1")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Types") >>~ pushContext "ML_types2"))
+     return (attr, result)
+
+parseRules "ML_types1" = 
+  do (attr, result) <- (((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Types") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "ML_types2" = 
+  do (attr, result) <- (((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Types") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "SL_TagWord" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}" ["\\addtogroup","\\a","\\anchor","\\b","\\c","\\class","\\cond","\\copydoc","\\def","\\dontinclude","\\dotfile","\\e","\\elseif","\\em","\\enum","\\example","\\exception","\\exceptions","\\file","\\htmlinclude","\\if","\\ifnot","\\include","\\link","\\namespace","\\p","\\package","\\ref","\\relatesalso","\\relates","\\retval","\\throw","\\throws","\\verbinclude","\\version","\\xrefitem","@addtogroup","@a","@anchor","@b","@c","@class","@cond","@copydoc","@def","@dontinclude","@dotfile","@e","@elseif","@em","@enum","@example","@exception","@exceptions","@file","@htmlinclude","@if","@ifnot","@include","@link","@namespace","@p","@package","@ref","@relatesalso","@relates","@retval","@throw","@throws","@verbinclude","@version","@xrefitem"] >>= withAttribute "Tags") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S(?=([][,?;()]|\\.$|\\.?\\s))") >>= withAttribute "Word") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Word")))
+     return (attr, result)
+
+parseRules "SL_TagParam" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((pString False "[in]" >>= withAttribute "Tags") >>~ pushContext "SL_Tag2ndWord")
+                        <|>
+                        ((pString False "[out]" >>= withAttribute "Tags") >>~ pushContext "SL_Tag2ndWord")
+                        <|>
+                        ((pString False "[in,out]" >>= withAttribute "Tags") >>~ pushContext "SL_Tag2ndWord")
+                        <|>
+                        ((pRegExpr (compileRegex "\\S(?=([][,?;()]|\\.$|\\.?\\s))") >>= withAttribute "Word") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Word")))
+     return (attr, result)
+
+parseRules "SL_TagWordWord" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S(?=([][,?;()]|\\.$|\\.?\\s))") >>= withAttribute "Word") >>~ pushContext "SL_Tag2ndWord")
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Word")))
+     return (attr, result)
+
+parseRules "SL_Tag2ndWord" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S(?=([][,?;()]|\\.$|\\.?\\s))") >>= withAttribute "Word") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Word")))
+     return (attr, result)
+
+parseRules "SL_TagString" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((pString False "<!--" >>= withAttribute "HTML Comment") >>~ pushContext "SL_htmlcomment")
+                        <|>
+                        ((pDetect2Chars False '<' '<' >>= withAttribute "Comment"))
+                        <|>
+                        ((pRegExpr (compileRegex "<\\/?[a-zA-Z_:][a-zA-Z0-9._:-]*") >>= withAttribute "HTML Tag") >>~ pushContext "SL_htmltag")
+                        <|>
+                        ((pRegExpr (compileRegex ".") >>= withAttribute "Description")))
+     return (attr, result)
+
+parseRules "SL_TagWordString" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S(?=([][,?;()]|\\.$|\\.?\\s))") >>= withAttribute "Word") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Word")))
+     return (attr, result)
+
+parseRules "SL_htmltag" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '>' >>= withAttribute "HTML Tag") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "HTML Tag") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*=\\s*") >>= withAttribute "Identifier") >>~ pushContext "SL_identifiers"))
+     return (attr, result)
+
+parseRules "SL_htmlcomment" = 
+  do (attr, result) <- (((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pString False "-->" >>= withAttribute "HTML Comment") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "SL_identifiers" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\s*#?[a-zA-Z0-9]*") >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Types") >>~ pushContext "SL_types1")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Types") >>~ pushContext "SL_types2"))
+     return (attr, result)
+
+parseRules "SL_types1" = 
+  do (attr, result) <- ((pDetectChar False '\'' >>= withAttribute "Types") >>~ (popContext >> popContext >> return ()))
+     return (attr, result)
+
+parseRules "SL_types2" = 
+  do (attr, result) <- ((pDetectChar False '"' >>= withAttribute "Types") >>~ (popContext >> popContext >> return ()))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Dtd.hs b/Text/Highlighting/Kate/Syntax/Dtd.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Dtd.hs
@@ -0,0 +1,157 @@
+{- This module was generated from data in the Kate syntax highlighting file dtd.xml, version 1.02,
+   by  Andriy Lesyuk (s-andy@in.if.ua) -}
+
+module Text.Highlighting.Kate.Syntax.Dtd ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Alert
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "DTD"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.dtd"
+
+-- | 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 = "DTD" }
+  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 [("DTD",["Normal"])], synStLanguage = "DTD", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "Comment" -> return ()
+    "PI" -> return ()
+    "Declaration" -> return ()
+    "String" -> return ()
+    "InlineComment" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal","Normal"),("Comment","Comment"),("Processing Instruction","Keyword"),("Declaration","DataType"),("Name","Function"),("Delimiter","DecVal"),("Symbol","Float"),("Keyword","Keyword"),("String","String"),("Entity","DecVal"),("Local","DecVal")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal"),("Comment","Comment"),("PI","Normal"),("Declaration","Normal"),("String","String"),("InlineComment","Comment")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal"))
+                        <|>
+                        ((pString False "<!--" >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pString False "<?xml" >>= withAttribute "Processing Instruction") >>~ pushContext "PI")
+                        <|>
+                        ((pString False "<!ELEMENT" >>= withAttribute "Declaration") >>~ pushContext "Declaration")
+                        <|>
+                        ((pString False "<!ATTLIST" >>= withAttribute "Declaration") >>~ pushContext "Declaration")
+                        <|>
+                        ((pString False "<!NOTATION" >>= withAttribute "Declaration") >>~ pushContext "Declaration")
+                        <|>
+                        ((pString False "<!ENTITY" >>= withAttribute "Declaration") >>~ pushContext "Declaration")
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Normal")))
+     return (attr, result)
+
+parseRules "Comment" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((pString False "-->" >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Comment")))
+     return (attr, result)
+
+parseRules "PI" = 
+  do (attr, result) <- ((pDetect2Chars False '?' '>' >>= withAttribute "Processing Instruction") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Declaration" = 
+  do (attr, result) <- (((pString False "<!--" >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pDetect2Chars False '-' '-' >>= withAttribute "Comment") >>~ pushContext "InlineComment")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Declaration") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((pRegExpr (compileRegex "(-|O)\\s(-|O)") >>= withAttribute "Declaration"))
+                        <|>
+                        ((pAnyChar "(|)," >>= withAttribute "Delimiter"))
+                        <|>
+                        ((pRegExpr (compileRegex "(%|&)(#[0-9]+|#[xX][0-9A-Fa-f]+|[\\-\\w\\d\\.:_]+);") >>= withAttribute "Entity"))
+                        <|>
+                        ((pAnyChar "?*+-&" >>= withAttribute "Symbol"))
+                        <|>
+                        ((pRegExpr (compileRegex "%\\s") >>= withAttribute "Local"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["EMPTY","ANY","CDATA","ID","IDREF","IDREFS","NMTOKEN","NMTOKENS","ENTITY","ENTITIES","NOTATION","PUBLIC","SYSTEM","NDATA"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["#PCDATA","#REQUIRED","#IMPLIED","#FIXED"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[\\-\\w\\d\\.:_]+\\b") >>= withAttribute "Name")))
+     return (attr, result)
+
+parseRules "String" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "%[\\-\\w\\d\\.:_]+;") >>= withAttribute "Entity")))
+     return (attr, result)
+
+parseRules "InlineComment" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((pDetect2Chars False '-' '-' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Comment")))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Eiffel.hs b/Text/Highlighting/Kate/Syntax/Eiffel.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Eiffel.hs
@@ -0,0 +1,102 @@
+{- This module was generated from data in the Kate syntax highlighting file eiffel.xml, version 1.02,
+   by  Sebastian Vuorinen -}
+
+module Text.Highlighting.Kate.Syntax.Eiffel ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Eiffel"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.e"
+
+-- | 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 = "Eiffel" }
+  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 [("Eiffel",["Normal"])], synStLanguage = "Eiffel", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "Quoted String" -> (popContext >> return ())
+    "Documentation" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Predefined entities","Others"),("Assertions","Others"),("Decimal","DecVal"),("Float","Float"),("Char","Char"),("String","String"),("Comment","Comment")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal Text"),("Quoted String","String"),("Documentation","Comment")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["agent","alias","all","and","as","assign","class","convert","create","creation","debug","deferred","do","else","elseif","end","expanded","export","external","feature","from","frozen","if","implies","indexing","infix","inherit","inspect","is","like","local","loop","not","obsolete","old","once","or","prefix","pure","redefine","reference","rename","rescue","retry","separate","then","undefine"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["Current","False","Precursor","Result","True","TUPLE"] >>= withAttribute "Predefined entities"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["check","ensure","require","variant","invariant"] >>= withAttribute "Assertions"))
+                        <|>
+                        ((pInt >>= withAttribute "Decimal"))
+                        <|>
+                        ((pFloat >>= withAttribute "Float"))
+                        <|>
+                        ((pHlCChar >>= withAttribute "Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "Quoted String")
+                        <|>
+                        ((pDetect2Chars False '-' '-' >>= withAttribute "Comment") >>~ pushContext "Documentation"))
+     return (attr, result)
+
+parseRules "Quoted String" = 
+  do (attr, result) <- ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Documentation" = 
+  pzero
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Erlang.hs b/Text/Highlighting/Kate/Syntax/Erlang.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Erlang.hs
@@ -0,0 +1,138 @@
+{- This module was generated from data in the Kate syntax highlighting file erlang.xml, version 1.02,
+   by  Bill Ross (bill@emailme.net.au) -}
+
+module Text.Highlighting.Kate.Syntax.Erlang ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Alert
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Erlang"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.erl"
+
+-- | 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 = "Erlang" }
+  context <- currentContext <|> (pushContext "Normal Text" >> 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 [("Erlang",["Normal Text"])], synStLanguage = "Erlang", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal Text" -> (popContext >> return ())
+    "isfunction" -> (popContext >> return ())
+    "atomquote" -> (popContext >> return ())
+    "stringquote" -> (popContext >> return ())
+    "comment" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Pragma","Keyword"),("Function","Function"),("Separator","Function"),("Operator","Keyword"),("Variable","DataType"),("Integer","DecVal"),("Number","BaseN"),("Float","Float"),("Atom","Char"),("String","String"),("Comment","Comment")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal Text","Normal Text"),("isfunction","Function"),("atomquote","Atom"),("stringquote","String"),("comment","Comment")]
+
+parseRules "Normal Text" = 
+  do (attr, result) <- (((pColumn 0 >> pRegExpr (compileRegex "(?:-module|-export|-define|-undef|-ifdef|-ifndef|-else|-endif|-include|-include_lib)") >>= withAttribute "Pragma"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["after","begin","case","catch","cond","end","fun","if","let","of","query","receive","all_true","some_true"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["div","rem","or","xor","bor","bxor","bsl","bsr","and","band","not","bnot"] >>= withAttribute "Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "(?:\\+|-|\\*|\\/|==|\\/=|=:=|=\\/=|<|=<|>|>=|\\+\\+|--|=|!|<-)") >>= withAttribute "Operator"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["abs","accept","alarm","apply","atom_to_list","binary_to_list","binary_to_term","check_process_code","concat_binary","date","delete_module","disconnect_node","element","erase","exit","float","float_to_list","garbage_collect","get","get_keys","group_leader","halt","hd","integer_to_list","is_alive","is_atom","is_binary","is_boolean","is_float","is_function","is_integer","is_list","is_number","is_pid","is_port","is_process_alive","is_record","is_reference","is_tuple","length","link","list_to_atom","list_to_binary","list_to_float","list_to_integer","list_to_pid","list_to_tuple","load_module","loaded","localtime","make_ref","module_loaded","node","nodes","now","open_port","pid_to_list","port_close","port_command","port_connect","port_control","ports","pre_loaded","process_flag","process_info","processes","purge_module","put","register","registered","round","self","setelement","size","spawn","spawn_link","spawn_opt","split_binary","statistics","term_to_binary","throw","time","tl","trunc","tuple_to_list","unlink","unregister","whereis"] >>= withAttribute "Function"))
+                        <|>
+                        ((pRegExpr (compileRegex "(?:\\(|\\)|\\{|\\}|\\[|\\]|\\.|\\:|\\||\\|\\||;|\\,|\\?|->|\\#)") >>= withAttribute "Separator"))
+                        <|>
+                        ((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '%' >>= withAttribute "Comment") >>~ pushContext "comment")
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[a-z][_a-z@-Z0-9]*(?:(?=[^_a-z@-Z0-9])|$):\\b[a-z][_a-z@-Z0-9]*(?:(?=[^_a-z@-Z0-9])|$)") >>= withAttribute "Function") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[a-z][_a-z@-Z0-9]*(?:(?=[^_a-z@-Z0-9])|$)\\(") >>= withAttribute "Functon") >>~ pushContext "isfunction")
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[_A-Z][_a-z@-Z0-9]*(?:(?=[^_a-z@-Z0-9])|$)") >>= withAttribute "Variable") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Atom") >>~ pushContext "atomquote")
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[a-z][_a-z@-Z0-9]*(?:(?=[^_a-z@-Z0-9])|$)") >>= withAttribute "Atom") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "stringquote")
+                        <|>
+                        ((pRegExpr (compileRegex "[0-9]+\\.[0-9]+(?:[eE][+-]?[0-9]+)?") >>= withAttribute "Float") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\d+#[a-zA-Z0-9]+") >>= withAttribute "Number") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$\\S") >>= withAttribute "Integer") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[0-9]+") >>= withAttribute "Integer") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "isfunction" = 
+  do (attr, result) <- ((pRegExpr (compileRegex "\\b[a-z][_a-z@-Z0-9]*(?:(?=[^_a-z@-Z0-9])|$)") >>= withAttribute "Function") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "atomquote" = 
+  do (attr, result) <- ((pRegExpr (compileRegex "(?:(?:\\\\')?[^']*)*'") >>= withAttribute "Atom") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "stringquote" = 
+  do (attr, result) <- ((pRegExpr (compileRegex "(?:(?:\\\\\")?[^\"]*)*\"") >>= withAttribute "String") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "comment" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Comment")))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Fortran.hs b/Text/Highlighting/Kate/Syntax/Fortran.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Fortran.hs
@@ -0,0 +1,317 @@
+{- This module was generated from data in the Kate syntax highlighting file fortran.xml, version 1.11,
+   by  Franchin Matteo (fnch@libero.it) -}
+
+module Text.Highlighting.Kate.Syntax.Fortran ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Fortran"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.f;*.F;*.for;*.FOR;*.f90;*.F90;*.fpp;*.FPP;*.f95;*.F95;"
+
+-- | 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 = "Fortran" }
+  context <- currentContext <|> (pushContext "default" >> 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 [("Fortran",["default"])], synStLanguage = "Fortran", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = False, synStKeywordCaseSensitive = False, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "default" -> return ()
+    "find_preprocessor" -> return ()
+    "find_op_and_log" -> return ()
+    "find_comments" -> return ()
+    "find_symbols" -> return ()
+    "inside_func_paren" -> return ()
+    "find_io_stmnts" -> return ()
+    "find_io_paren" -> return ()
+    "format_stmnt" -> return ()
+    "find_begin_stmnts" -> return ()
+    "find_end_stmnts" -> return ()
+    "find_decls" -> return ()
+    "find_paren" -> (popContext >> return ())
+    "find_intrinsics" -> return ()
+    "find_numbers" -> return ()
+    "find_strings" -> return ()
+    "string_1" -> return ()
+    "string_2" -> return ()
+    "end_of_string" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Data Type","DataType"),("Decimal","DecVal"),("Float","Float"),("String","String"),("Comment","Comment"),("Symbol","Normal"),("Preprocessor","Others"),("Operator","Keyword"),("Logical","Others"),("IO Function","Function"),("Elemental Procedure","Keyword"),("Inquiry Function","Function"),("Transformational Function","Function"),("Non elemental subroutine","Keyword")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("default","Normal Text"),("find_preprocessor","Normal Text"),("find_op_and_log","Normal Text"),("find_comments","Normal Text"),("find_symbols","Normal Text"),("inside_func_paren","Normal Text"),("find_io_stmnts","Normal Text"),("find_io_paren","Normal Text"),("format_stmnt","Normal Text"),("find_begin_stmnts","Normal Text"),("find_end_stmnts","Normal Text"),("find_decls","Normal Text"),("find_paren","Data Type"),("find_intrinsics","Normal Text"),("find_numbers","Normal Text"),("find_strings","String"),("string_1","String"),("string_2","String"),("end_of_string","String")]
+
+parseRules "default" = 
+  do (attr, result) <- (((parseRules "find_strings"))
+                        <|>
+                        ((parseRules "find_decls"))
+                        <|>
+                        ((parseRules "find_intrinsics"))
+                        <|>
+                        ((parseRules "find_io_stmnts"))
+                        <|>
+                        ((parseRules "find_op_and_log"))
+                        <|>
+                        ((parseRules "find_numbers"))
+                        <|>
+                        ((parseRules "find_preprocessor"))
+                        <|>
+                        ((parseRules "find_comments"))
+                        <|>
+                        ((parseRules "find_symbols"))
+                        <|>
+                        ((parseRules "find_end_stmnts"))
+                        <|>
+                        ((parseRules "find_begin_stmnts")))
+     return (attr, result)
+
+parseRules "find_preprocessor" = 
+  do (attr, result) <- ((pColumn 0 >> pRegExpr (compileRegex "(#|cDEC\\$|CDEC\\$).*$") >>= withAttribute "Preprocessor"))
+     return (attr, result)
+
+parseRules "find_op_and_log" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\.(true|false)\\.") >>= withAttribute "Logical"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\.[A-Za-z]+\\.") >>= withAttribute "Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "(==|/=|<|<=|>|>=)") >>= withAttribute "Operator")))
+     return (attr, result)
+
+parseRules "find_comments" = 
+  do (attr, result) <- (((pColumn 0 >> pRegExpr (compileRegex "[cC\\*].*$") >>= withAttribute "Comment"))
+                        <|>
+                        ((pRegExpr (compileRegex "!.*$") >>= withAttribute "Comment")))
+     return (attr, result)
+
+parseRules "find_symbols" = 
+  do (attr, result) <- (((pDetect2Chars False '*' '*' >>= withAttribute "Keyword"))
+                        <|>
+                        ((pDetect2Chars False '(' '/' >>= withAttribute "Keyword"))
+                        <|>
+                        ((pDetect2Chars False '/' ')' >>= withAttribute "Keyword"))
+                        <|>
+                        ((pAnyChar "&+-*/=?[]^{|}~" >>= withAttribute "Keyword"))
+                        <|>
+                        ((pAnyChar "()," >>= withAttribute "Symbol")))
+     return (attr, result)
+
+parseRules "inside_func_paren" = 
+  do (attr, result) <- (((pDetectChar False '(' >>= withAttribute "Normal Text") >>~ pushContext "inside_func_paren")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "find_strings"))
+                        <|>
+                        ((parseRules "find_intrinsics"))
+                        <|>
+                        ((parseRules "find_numbers")))
+     return (attr, result)
+
+parseRules "find_io_stmnts" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\b(read|write|backspace|rewind|end\\s*file|close)\\s*[(]") >>= withAttribute "IO Function") >>~ pushContext "find_io_paren")
+                        <|>
+                        ((pRegExpr (compileRegex "\\bopen\\s*[(]") >>= withAttribute "IO Function") >>~ pushContext "find_io_paren")
+                        <|>
+                        ((pRegExpr (compileRegex "\\binquire\\s*[(]") >>= withAttribute "IO Function") >>~ pushContext "find_io_paren")
+                        <|>
+                        ((pRegExpr (compileRegex "\\bformat\\s*[(]") >>= withAttribute "IO Function") >>~ pushContext "format_stmnt")
+                        <|>
+                        ((pRegExpr (compileRegex "\\bend\\s*file\\b") >>= withAttribute "IO Function"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["access","backspace","close","inquire","open","print","read","rewind","write","format"] >>= withAttribute "IO Function")))
+     return (attr, result)
+
+parseRules "find_io_paren" = 
+  do (attr, result) <- (((pDetectChar False '*' >>= withAttribute "IO Function"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Normal Text") >>~ pushContext "inside_func_paren")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "IO Function") >>~ (popContext >> return ()))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["unit","end","err","fmt","iostat","status","advance","size","eor"] >>= withAttribute "IO Function"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["unit","iostat","err","file","exist","opened","number","named","name","access","sequential","direct","form","formatted","unformatted","recl","nextrec","blank","position","action","read","write","readwrite","delim","pad"] >>= withAttribute "IO Function"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["unit","iostat","err","file","status","access","form","recl","blank","position","action","delim","pad"] >>= withAttribute "IO Function"))
+                        <|>
+                        ((parseRules "find_strings"))
+                        <|>
+                        ((parseRules "find_intrinsics"))
+                        <|>
+                        ((parseRules "find_numbers"))
+                        <|>
+                        ((parseRules "find_symbols")))
+     return (attr, result)
+
+parseRules "format_stmnt" = 
+  do (attr, result) <- (((pDetectChar False '(' >>= withAttribute "IO Function") >>~ pushContext "format_stmnt")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "IO Function") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[0-9]*/") >>= withAttribute "IO Function"))
+                        <|>
+                        ((pAnyChar ":" >>= withAttribute "IO Function"))
+                        <|>
+                        ((parseRules "find_strings"))
+                        <|>
+                        ((parseRules "find_symbols")))
+     return (attr, result)
+
+parseRules "find_begin_stmnts" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\bmodule\\s+procedure\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b(program|subroutine|function|module|block\\s*data)\\b") >>= withAttribute "Keyword")))
+     return (attr, result)
+
+parseRules "find_end_stmnts" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\bend\\s*(program|subroutine|function|module|block\\s*data)\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bend\\s*(do|if|select|where|forall|interface)\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bend\\b") >>= withAttribute "Keyword")))
+     return (attr, result)
+
+parseRules "find_decls" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\binteger[\\*]\\d{1,2}") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\breal[\\*]\\d{1,2}") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bcomplex[\\*]\\d{1,2}") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bend\\s*type\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["double","precision","parameter","save","pointer","public","private","target","allocatable","optional","sequence"] >>= withAttribute "Data Type"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "\\s*data\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "\\s*real\\s*[(]") >>= withAttribute "Data Type") >>~ pushContext "find_paren")
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "\\s*real(?![\\w\\*])") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bcharacter[*][0-9]+\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b(type|integer|complex|character|logical|intent|dimension)\\b\\s*[(]") >>= withAttribute "Data Type") >>~ pushContext "find_paren")
+                        <|>
+                        ((pRegExpr (compileRegex "\\b(type|integer|complex|character|logical|intent|dimension)\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pDetect2Chars False ':' ':' >>= withAttribute "Data Type")))
+     return (attr, result)
+
+parseRules "find_paren" = 
+  do (attr, result) <- (((pDetectChar False '(' >>= withAttribute "Data Type") >>~ pushContext "find_paren")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Data Type") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "find_intrinsics" = 
+  do (attr, result) <- (((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["allocate","break","call","case","common","contains","continue","cycle","deallocate","default","do","forall","where","elsewhere","elseif","else","equivalence","exit","external","for","go","goto","if","implicit","include","interface","intrinsic","namelist","none","nullify","operator","assignment","pause","procedure","pure","elemental","record","recursive","result","return","select","selectcase","stop","then","to","use","only","entry","while"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["abs","cabs","dabs","iabs","aimag","aint","dint","anint","dnint","ceiling","cmplx","dcmplx","dimag","floor","nint","idnint","int","idint","ifix","real","float","sngl","dble","dreal","aprime","dconjg","dfloat","ddmim","rand","modulo","conjg","dprod","dim","ddim","idim","max","amax0","amax1","max0","max1","dmax1","min","amin0","amin1","min0","min1","dmin1","mod","amod","dmod","sign","dsign","isign","acos","dacos","asin","dasin","atan","datan","atan2","datan2","cos","ccos","dcos","cosh","dcosh","exp","cexp","dexp","log","alog","dlog","clog","log10","alog10","dlog10","sin","csin","dsin","sinh","dsinh","sqrt","csqrt","dsqrt","tan","dtan","tanh","dtanh","achar","char","iachar","ichar","lge","lgt","lle","llt","adjustl","adjustr","index","len_trim","scan","verify","logical","exponent","fraction","nearest","rrspacing","scale","set_exponent","spacing","btest","iand","ibclr","ibits","ibset","ieor","ior","ishft","ishftc","not","mvbits","merge"] >>= withAttribute "Elemental Procedure"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["associated","present","kind","len","digits","epsilon","huge","maxexponent","minexponent","precision","radix","range","tiny","bit_size","allocated","lbound","ubound","shape","size"] >>= withAttribute "Inquiry Function"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["repeat","trim","selected_int_kind","selected_real_kind","transfer","dot_product","matmul","all","any","count","maxval","minval","product","sum","pack","unpack","reshape","spread","cshift","eoshift","transpose","maxloc","minloc"] >>= withAttribute "Transformational Function"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["date_and_time","system_clock","random_number","random_seed"] >>= withAttribute "Non elemental subroutine")))
+     return (attr, result)
+
+parseRules "find_numbers" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "[0-9]*\\.[0-9]+([de][+-]?[0-9]+)?([_]([0-9]+|[a-z][\\w_]*))?") >>= withAttribute "Float"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[0-9]+\\.[0-9]*([de][+-]?[0-9]+)?([_]([0-9]+|[a-z][\\w_]*))?(?![a-z])") >>= withAttribute "Float"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[0-9]+[de][+-]?[0-9]+([_]([0-9]+|[a-z][\\w_]*))?") >>= withAttribute "Float"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[0-9]+([_]([0-9]+|[a-zA-Z][\\w_]*))?") >>= withAttribute "Decimal"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[bozx](['][0-9a-f]+[']|[\"][0-9a-f]+[\"])") >>= withAttribute "Decimal")))
+     return (attr, result)
+
+parseRules "find_strings" = 
+  do (attr, result) <- (((pDetectChar False '\'' >>= withAttribute "String") >>~ pushContext "string_1")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "string_2"))
+     return (attr, result)
+
+parseRules "string_1" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "[^']*'") >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "&\\s*$") >>= withAttribute "Keyword") >>~ pushContext "end_of_string")
+                        <|>
+                        ((pRegExpr (compileRegex ".*(?=&\\s*$)") >>= withAttribute "String") >>~ pushContext "end_of_string")
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "string_2" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "[^\"]*\"") >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "&\\s*$") >>= withAttribute "Keyword") >>~ pushContext "end_of_string")
+                        <|>
+                        ((pRegExpr (compileRegex ".*(?=&\\s*$)") >>= withAttribute "String") >>~ pushContext "end_of_string")
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "end_of_string" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "String"))
+                        <|>
+                        ((pRegExpr (compileRegex "&\\s*$") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pFirstNonSpace >> pDetectChar False '&' >>= withAttribute "Keyword") >>~ (popContext >> return ()))
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "(!.*)?$") >>= withAttribute "Comment"))
+                        <|>
+                        ((popContext >> popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Haskell.hs b/Text/Highlighting/Kate/Syntax/Haskell.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Haskell.hs
@@ -0,0 +1,140 @@
+{- This module was generated from data in the Kate syntax highlighting file haskell.xml, version 1.04,
+   by  Marcel Martin (mmar@freenet.de) -}
+
+module Text.Highlighting.Kate.Syntax.Haskell ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Haskell"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.hs"
+
+-- | 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 = "Haskell" }
+  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 [("Haskell",["normal"])], synStLanguage = "Haskell", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "normal" -> return ()
+    "comment_single_line" -> (popContext >> return ())
+    "comment_multi_line" -> return ()
+    "string" -> return ()
+    "infix" -> return ()
+    "single_char" -> (popContext >> return ())
+    "function_definition" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Module Name","Normal"),("Keyword","Keyword"),("Function","Function"),("Function Definition","Function"),("Class","Keyword"),("Decimal","DecVal"),("Float","Float"),("Char","Char"),("String","String"),("Constructor","Others"),("Comment","Comment"),("Data Constructor","Keyword"),("Type Constructor","DataType"),("Infix Operator","Others")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("normal","Normal Text"),("comment_single_line","Comment"),("comment_multi_line","Comment"),("string","String"),("infix","Infix Operator"),("single_char","Char"),("function_definition","Function Definition")]
+
+parseRules "normal" = 
+  do (attr, result) <- (((pDetect2Chars False '{' '-' >>= withAttribute "Comment") >>~ pushContext "comment_multi_line")
+                        <|>
+                        ((pDetect2Chars False '-' '-' >>= withAttribute "Comment") >>~ pushContext "comment_single_line")
+                        <|>
+                        ((pRegExpr (compileRegex "([A-Z][A-Za-z0-9]*\\.)+[A-Z][A-Za-z0-9]*") >>= withAttribute "Module Name"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["as","case","class","data","deriving","do","else","if","import","in","infixl","infixr","instance","let","module","of","primitive","qualified","then","type","where"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["Bounded","Enum","Eq","Floating","Fractional","Functor","Integral","Ix","Monad","Num","Ord","Read","RealFloat","RealFrac","Real","Show"] >>= withAttribute "Class"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["Bool","Char","Double","Either","Float","IO","Integer","Int","Maybe","Ordering","Rational","Ratio","ReadS","ShowS","String"] >>= withAttribute "Type Constructor"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["FilePath","IOError","abs","acos","acosh","all","and","any","appendFile","approxRational","asTypeOf","asin","asinh","atan","atan2","atanh","basicIORun","break","catch","ceiling","chr","compare","concat","concatMap","const","cos","cosh","curry","cycle","decodeFloat","denominator","digitToInt","div","divMod","drop","dropWhile","either","elem","encodeFloat","enumFrom","enumFromThen","enumFromThenTo","enumFromTo","error","even","exp","exponent","fail","filter","flip","floatDigits","floatRadix","floatRange","floor","fmap","foldl","foldl1","foldr","foldr1","fromDouble","fromEnum","fromInt","fromInteger","fromIntegral","fromRational","fst","gcd","getChar","getContents","getLine","head","id","inRange","index","init","intToDigit","interact","ioError","isAlpha","isAlphaNum","isAscii","isControl","isDenormalized","isDigit","isHexDigit","isIEEE","isInfinite","isLower","isNaN","isNegativeZero","isOctDigit","isPrint","isSpace","isUpper","iterate","last","lcm","length","lex","lexDigits","lexLitChar","lines","log","logBase","lookup","map","mapM","mapM_","max","maxBound","maximum","maybe","min","minBound","minimum","mod","negate","not","notElem","null","numerator","odd","or","ord","otherwise","pi","pred","primExitWith","print","product","properFraction","putChar","putStr","putStrLn","quot","quotRem","range","rangeSize","read","readDec","readFile","readFloat","readHex","readIO","readInt","readList","readLitChar","readLn","readOct","readParen","readSigned","reads","readsPrec","realToFrac","recip","rem","repeat","replicate","return","reverse","round","scaleFloat","scanl","scanl1","scanr","scanr1","seq","sequence","sequence_","show","showChar","showInt","showList","showLitChar","showParen","showSigned","showString","shows","showsPrec","significand","signum","sin","sinh","snd","span","splitAt","sqrt","subtract","succ","sum","tail","take","takeWhile","tan","tanh","threadToIOResult","toEnum","toInt","toInteger","toLower","toRational","toUpper","truncate","uncurry","undefined","unlines","until","unwords","unzip","unzip3","userError","words","writeFile","zip","zip3","zipWith","zipWith3"] >>= withAttribute "Function"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["EQ","False","GT","Just","LT","Left","Nothing","Right","True"] >>= withAttribute "Data Constructor"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "string")
+                        <|>
+                        ((pDetectChar False '`' >>= withAttribute "Infix Operator") >>~ pushContext "infix")
+                        <|>
+                        ((pRegExpr (compileRegex "\\w[']+") >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Char") >>~ pushContext "single_char")
+                        <|>
+                        ((pRegExpr (compileRegex "[a-z_]+\\w*'*\\s*::") >>= withAttribute "Function Definition"))
+                        <|>
+                        ((pFloat >>= withAttribute "Float"))
+                        <|>
+                        ((pInt >>= withAttribute "Decimal")))
+     return (attr, result)
+
+parseRules "comment_single_line" = 
+  pzero
+
+parseRules "comment_multi_line" = 
+  do (attr, result) <- ((pDetect2Chars False '-' '}' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "string" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\.") >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "infix" = 
+  do (attr, result) <- ((pDetectChar False '`' >>= withAttribute "Infix Operator") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "single_char" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\.") >>= withAttribute "Char"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Char") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "function_definition" = 
+  do (attr, result) <- ((pDetectChar False ';' >>= withAttribute "Function Definition") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Html.hs b/Text/Highlighting/Kate/Syntax/Html.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Html.hs
@@ -0,0 +1,348 @@
+{- This module was generated from data in the Kate syntax highlighting file html.xml, version 1.99,
+   by  Wilbert Berendsen (wilbert@kde.nl) -}
+
+module Text.Highlighting.Kate.Syntax.Html ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Alert
+import qualified Text.Highlighting.Kate.Syntax.Css
+import qualified Text.Highlighting.Kate.Syntax.Javascript
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "HTML"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.htm;*.html;*.shtml;*.shtm"
+
+-- | 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 = "HTML" }
+  context <- currentContext <|> (pushContext "Start" >> 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 [("HTML",["Start"])], synStLanguage = "HTML", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Start" -> return ()
+    "FindHTML" -> return ()
+    "FindEntityRefs" -> return ()
+    "FindPEntityRefs" -> return ()
+    "FindAttributes" -> return ()
+    "FindDTDRules" -> return ()
+    "Comment" -> return ()
+    "CDATA" -> return ()
+    "PI" -> return ()
+    "Doctype" -> return ()
+    "Doctype Internal Subset" -> return ()
+    "Doctype Markupdecl" -> return ()
+    "Doctype Markupdecl DQ" -> return ()
+    "Doctype Markupdecl SQ" -> return ()
+    "El Open" -> return ()
+    "El Close" -> return ()
+    "El Close 2" -> return ()
+    "El Close 3" -> return ()
+    "CSS" -> return ()
+    "CSS content" -> return ()
+    "JS" -> return ()
+    "JS content" -> return ()
+    "JS comment close" -> (popContext >> return ())
+    "Value" -> return ()
+    "Value NQ" -> (popContext >> popContext >> return ())
+    "Value DQ" -> return ()
+    "Value SQ" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Comment","Comment"),("CDATA","BaseN"),("Processing Instruction","Keyword"),("Doctype","DataType"),("Element","Keyword"),("Attribute","Others"),("Value","String"),("EntityRef","DecVal"),("PEntityRef","DecVal"),("Error","Error")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Start","Normal Text"),("FindHTML","Normal Text"),("FindEntityRefs","Normal Text"),("FindPEntityRefs","Normal Text"),("FindAttributes","Normal Text"),("FindDTDRules","Normal Text"),("Comment","Comment"),("CDATA","Normal Text"),("PI","Normal Text"),("Doctype","Normal Text"),("Doctype Internal Subset","Normal Text"),("Doctype Markupdecl","Normal Text"),("Doctype Markupdecl DQ","Value"),("Doctype Markupdecl SQ","Value"),("El Open","Normal Text"),("El Close","Normal Text"),("El Close 2","Normal Text"),("El Close 3","Normal Text"),("CSS","Normal Text"),("CSS content","Normal Text"),("JS","Normal Text"),("JS content","Normal Text"),("JS comment close","Comment"),("Value","Normal Text"),("Value NQ","Normal Text"),("Value DQ","Value"),("Value SQ","Value")]
+
+parseRules "Start" = 
+  do (attr, result) <- ((parseRules "FindHTML"))
+     return (attr, result)
+
+parseRules "FindHTML" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pString False "<!--" >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pString False "<![CDATA[" >>= withAttribute "CDATA") >>~ pushContext "CDATA")
+                        <|>
+                        ((pRegExpr (compileRegex "<!DOCTYPE\\s+") >>= withAttribute "Doctype") >>~ pushContext "Doctype")
+                        <|>
+                        ((pRegExpr (compileRegex "<\\?[\\w:-]*") >>= withAttribute "Processing Instruction") >>~ pushContext "PI")
+                        <|>
+                        ((pRegExpr (compileRegex "<style\\b") >>= withAttribute "Element") >>~ pushContext "CSS")
+                        <|>
+                        ((pRegExpr (compileRegex "<script\\b") >>= withAttribute "Element") >>~ pushContext "JS")
+                        <|>
+                        ((pRegExpr (compileRegex "<pre\\b") >>= withAttribute "Element") >>~ pushContext "El Open")
+                        <|>
+                        ((pRegExpr (compileRegex "<div\\b") >>= withAttribute "Element") >>~ pushContext "El Open")
+                        <|>
+                        ((pRegExpr (compileRegex "<table\\b") >>= withAttribute "Element") >>~ pushContext "El Open")
+                        <|>
+                        ((pRegExpr (compileRegex "<ul\\b") >>= withAttribute "Element") >>~ pushContext "El Open")
+                        <|>
+                        ((pRegExpr (compileRegex "<ol\\b") >>= withAttribute "Element") >>~ pushContext "El Open")
+                        <|>
+                        ((pRegExpr (compileRegex "<dl\\b") >>= withAttribute "Element") >>~ pushContext "El Open")
+                        <|>
+                        ((pRegExpr (compileRegex "<[A-Za-z_:][\\w.:_-]*") >>= withAttribute "Element") >>~ pushContext "El Open")
+                        <|>
+                        ((pRegExpr (compileRegex "</pre\\b") >>= withAttribute "Element") >>~ pushContext "El Close")
+                        <|>
+                        ((pRegExpr (compileRegex "</div\\b") >>= withAttribute "Element") >>~ pushContext "El Close")
+                        <|>
+                        ((pRegExpr (compileRegex "</table\\b") >>= withAttribute "Element") >>~ pushContext "El Close")
+                        <|>
+                        ((pRegExpr (compileRegex "</ul\\b") >>= withAttribute "Element") >>~ pushContext "El Close")
+                        <|>
+                        ((pRegExpr (compileRegex "</ol\\b") >>= withAttribute "Element") >>~ pushContext "El Close")
+                        <|>
+                        ((pRegExpr (compileRegex "</dl\\b") >>= withAttribute "Element") >>~ pushContext "El Close")
+                        <|>
+                        ((pRegExpr (compileRegex "</[A-Za-z_:][\\w.:_-]*") >>= withAttribute "Element") >>~ pushContext "El Close")
+                        <|>
+                        ((parseRules "FindDTDRules"))
+                        <|>
+                        ((parseRules "FindEntityRefs")))
+     return (attr, result)
+
+parseRules "FindEntityRefs" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "&(#[0-9]+|#[xX][0-9A-Fa-f]+|[A-Za-z_:][\\w.:_-]*);") >>= withAttribute "EntityRef"))
+                        <|>
+                        ((pAnyChar "&<" >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "FindPEntityRefs" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "&(#[0-9]+|#[xX][0-9A-Fa-f]+|[A-Za-z_:][\\w.:_-]*);") >>= withAttribute "EntityRef"))
+                        <|>
+                        ((pRegExpr (compileRegex "%[A-Za-z_:][\\w.:_-]*;") >>= withAttribute "PEntityRef"))
+                        <|>
+                        ((pAnyChar "&%" >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "FindAttributes" = 
+  do (attr, result) <- (((pColumn 0 >> pRegExpr (compileRegex "[A-Za-z_:][\\w.:_-]*") >>= withAttribute "Attribute"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s+[A-Za-z_:][\\w.:_-]*") >>= withAttribute "Attribute"))
+                        <|>
+                        ((pDetectChar False '=' >>= withAttribute "Attribute") >>~ pushContext "Value"))
+     return (attr, result)
+
+parseRules "FindDTDRules" = 
+  do (attr, result) <- ((pRegExpr (compileRegex "<!(ELEMENT|ENTITY|ATTLIST|NOTATION)\\b") >>= withAttribute "Doctype") >>~ pushContext "Doctype Markupdecl")
+     return (attr, result)
+
+parseRules "Comment" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Comment"))
+                        <|>
+                        ((pString False "-->" >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "-(-(?!->))+") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "CDATA" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pString False "]]>" >>= withAttribute "CDATA") >>~ (popContext >> return ()))
+                        <|>
+                        ((pString False "]]&gt;" >>= withAttribute "EntityRef")))
+     return (attr, result)
+
+parseRules "PI" = 
+  do (attr, result) <- ((pDetect2Chars False '?' '>' >>= withAttribute "Processing Instruction") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Doctype" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Doctype") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Doctype") >>~ pushContext "Doctype Internal Subset"))
+     return (attr, result)
+
+parseRules "Doctype Internal Subset" = 
+  do (attr, result) <- (((pDetectChar False ']' >>= withAttribute "Doctype") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindDTDRules"))
+                        <|>
+                        ((pString False "<!--" >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pRegExpr (compileRegex "<\\?[\\w:-]*") >>= withAttribute "Processing Instruction") >>~ pushContext "PI")
+                        <|>
+                        ((parseRules "FindPEntityRefs")))
+     return (attr, result)
+
+parseRules "Doctype Markupdecl" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Doctype") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Value") >>~ pushContext "Doctype Markupdecl DQ")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Value") >>~ pushContext "Doctype Markupdecl SQ"))
+     return (attr, result)
+
+parseRules "Doctype Markupdecl DQ" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "Value") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindPEntityRefs")))
+     return (attr, result)
+
+parseRules "Doctype Markupdecl SQ" = 
+  do (attr, result) <- (((pDetectChar False '\'' >>= withAttribute "Value") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindPEntityRefs")))
+     return (attr, result)
+
+parseRules "El Open" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '>' >>= withAttribute "Element") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Element") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindAttributes"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "El Close" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Element") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "El Close 2" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Element") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "El Close 3" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Element") >>~ (popContext >> popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "CSS" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '>' >>= withAttribute "Element") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Element") >>~ pushContext "CSS content")
+                        <|>
+                        ((parseRules "FindAttributes"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "CSS content" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "</style\\b") >>= withAttribute "Element") >>~ pushContext "El Close 2")
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Css.parseExpression)))
+     return (attr, result)
+
+parseRules "JS" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '>' >>= withAttribute "Element") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Element") >>~ pushContext "JS content")
+                        <|>
+                        ((parseRules "FindAttributes"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "JS content" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "</script\\b") >>= withAttribute "Element") >>~ pushContext "El Close 2")
+                        <|>
+                        ((pRegExpr (compileRegex "//(?=.*</script\\b)") >>= withAttribute "Comment") >>~ pushContext "JS comment close")
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Javascript.parseExpression)))
+     return (attr, result)
+
+parseRules "JS comment close" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "</script\\b") >>= withAttribute "Element") >>~ pushContext "El Close 3")
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd))))
+     return (attr, result)
+
+parseRules "Value" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "Value") >>~ pushContext "Value DQ")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Value") >>~ pushContext "Value SQ")
+                        <|>
+                        ((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        (pushContext "Value NQ" >> return ([], "")))
+     return (attr, result)
+
+parseRules "Value NQ" = 
+  do (attr, result) <- (((parseRules "FindEntityRefs"))
+                        <|>
+                        ((pRegExpr (compileRegex "/(?!>)") >>= withAttribute "Value"))
+                        <|>
+                        ((pRegExpr (compileRegex "[^/><\"'\\s]") >>= withAttribute "Value"))
+                        <|>
+                        ((popContext >> popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "Value DQ" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "Value") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "FindEntityRefs")))
+     return (attr, result)
+
+parseRules "Value SQ" = 
+  do (attr, result) <- (((pDetectChar False '\'' >>= withAttribute "Value") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "FindEntityRefs")))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Java.hs b/Text/Highlighting/Kate/Syntax/Java.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Java.hs
@@ -0,0 +1,217 @@
+{- This module was generated from data in the Kate syntax highlighting file java.xml, version 1.19,
+   by  Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br) -}
+
+module Text.Highlighting.Kate.Syntax.Java ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Javadoc
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Java"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.java"
+
+-- | 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 = "Java" }
+  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 [("Java",["Normal"])], synStLanguage = "Java", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "InFunctionCall" -> return ()
+    "String" -> (popContext >> return ())
+    "EnterPrintf" -> return ()
+    "Printf" -> return ()
+    "PrintfString" -> (popContext >> return ())
+    "Member" -> (popContext >> return ())
+    "StaticImports" -> (popContext >> return ())
+    "Imports" -> (popContext >> return ())
+    "Commentar 1" -> (popContext >> return ())
+    "Commentar 2" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Function","Function"),("StaticImports","Keyword"),("Imports","Keyword"),("Data Type","DataType"),("Decimal","DecVal"),("Octal","BaseN"),("Hex","BaseN"),("Float","Float"),("Char","Char"),("String","String"),("String Char","Char"),("PrintfString","String"),("Comment","Comment"),("Symbol","Normal"),("Java15","Normal")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal Text"),("InFunctionCall","Normal Text"),("String","String"),("EnterPrintf","Normal Text"),("Printf","Printf"),("PrintfString","PrintfString"),("Member","Normal Text"),("StaticImports","Normal Text"),("Imports","Normal Text"),("Commentar 1","Comment"),("Commentar 2","Comment")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((Text.Highlighting.Kate.Syntax.Javadoc.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["abstract","break","case","catch","class","continue","default","do","else","enum","extends","false","finally","for","goto","if","implements","instanceof","@interface","interface","native","new","null","private","protected","public","return","super","strictfp","switch","synchronized","this","throws","throw","transient","true","try","volatile","while"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["boolean","byte","char","const","double","final","float","int","long","short","static","void"] >>= withAttribute "Data Type"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["ACTIVE","ACTIVITY_COMPLETED","ACTIVITY_REQUIRED","ARG_IN","ARG_INOUT","ARG_OUT","AWTError","AWTEvent","AWTEventListener","AWTEventListenerProxy","AWTEventMulticaster","AWTException","AWTKeyStroke","AWTPermission","AbstractAction","AbstractBorder","AbstractButton","AbstractCellEditor","AbstractCollection","AbstractColorChooserPanel","AbstractDocument","AbstractDocument.AttributeContext","AbstractDocument.Content","AbstractDocument.ElementEdit","AbstractExecutorService","AbstractInterruptibleChannel","AbstractLayoutCache","AbstractLayoutCache.NodeDimensions","AbstractList","AbstractListModel","AbstractMap","AbstractMethodError","AbstractPreferences","AbstractQueue","AbstractQueuedSynchronizer","AbstractSelectableChannel","AbstractSelectionKey","AbstractSelector","AbstractSequentialList","AbstractSet","AbstractSpinnerModel","AbstractTableModel","AbstractUndoableEdit","AbstractWriter","AccessControlContext","AccessControlException","AccessController","AccessException","Accessible","AccessibleAction","AccessibleAttributeSequence","AccessibleBundle","AccessibleComponent","AccessibleContext","AccessibleEditableText","AccessibleExtendedComponent","AccessibleExtendedTable","AccessibleExtendedText","AccessibleHyperlink","AccessibleHypertext","AccessibleIcon","AccessibleKeyBinding","AccessibleObject","AccessibleRelation","AccessibleRelationSet","AccessibleResourceBundle","AccessibleRole","AccessibleSelection","AccessibleState","AccessibleStateSet","AccessibleStreamable","AccessibleTable","AccessibleTableModelChange","AccessibleText","AccessibleTextSequence","AccessibleValue","AccountException","AccountExpiredException","AccountLockedException","AccountNotFoundException","Acl","AclEntry","AclNotFoundException","Action","ActionEvent","ActionListener","ActionMap","ActionMapUIResource","Activatable","ActivateFailedException","ActivationDesc","ActivationException","ActivationGroup","ActivationGroupDesc","ActivationGroupDesc.CommandEnvironment","ActivationGroupID","ActivationGroup_Stub","ActivationID","ActivationInstantiator","ActivationMonitor","ActivationSystem","Activator","ActiveEvent","ActivityCompletedException","ActivityRequiredException","AdapterActivator","AdapterActivatorOperations","AdapterAlreadyExists","AdapterAlreadyExistsHelper","AdapterInactive","AdapterInactiveHelper","AdapterManagerIdHelper","AdapterNameHelper","AdapterNonExistent","AdapterNonExistentHelper","AdapterStateHelper","AddressHelper","Adjustable","AdjustmentEvent","AdjustmentListener","Adler32","AffineTransform","AffineTransformOp","AlgorithmParameterGenerator","AlgorithmParameterGeneratorSpi","AlgorithmParameterSpec","AlgorithmParameters","AlgorithmParametersSpi","AllPermission","AlphaComposite","AlreadyBound","AlreadyBoundException","AlreadyBoundHelper","AlreadyBoundHolder","AlreadyConnectedException","AncestorEvent","AncestorListener","AnnotatedElement","Annotation","Annotation","AnnotationFormatError","AnnotationTypeMismatchException","Any","AnyHolder","AnySeqHelper","AnySeqHelper","AnySeqHolder","AppConfigurationEntry","AppConfigurationEntry.LoginModuleControlFlag","Appendable","Applet","AppletContext","AppletInitializer","AppletStub","ApplicationException","Arc2D","Arc2D.Double","Arc2D.Float","Area","AreaAveragingScaleFilter","ArithmeticException","Array","Array","ArrayBlockingQueue","ArrayIndexOutOfBoundsException","ArrayList","ArrayStoreException","ArrayType","Arrays","AssertionError","AsyncBoxView","AsynchronousCloseException","AtomicBoolean","AtomicInteger","AtomicIntegerArray","AtomicIntegerFieldUpdater","AtomicLong","AtomicLongArray","AtomicLongFieldUpdater","AtomicMarkableReference","AtomicReference","AtomicReferenceArray","AtomicReferenceFieldUpdater","AtomicStampedReference","Attr","Attribute","Attribute","Attribute","AttributeChangeNotification","AttributeChangeNotificationFilter","AttributeException","AttributeInUseException","AttributeList","AttributeList","AttributeList","AttributeListImpl","AttributeModificationException","AttributeNotFoundException","AttributeSet","AttributeSet","AttributeSet.CharacterAttribute","AttributeSet.ColorAttribute","AttributeSet.FontAttribute","AttributeSet.ParagraphAttribute","AttributeSetUtilities","AttributeValueExp","AttributedCharacterIterator","AttributedCharacterIterator.Attribute","AttributedString","Attributes","Attributes","Attributes","Attributes.Name","Attributes2","Attributes2Impl","AttributesImpl","AudioClip","AudioFileFormat","AudioFileFormat.Type","AudioFileReader","AudioFileWriter","AudioFormat","AudioFormat.Encoding","AudioInputStream","AudioPermission","AudioSystem","AuthPermission","AuthProvider","AuthenticationException","AuthenticationException","AuthenticationNotSupportedException","Authenticator","Authenticator.RequestorType","AuthorizeCallback","Autoscroll","BAD_CONTEXT","BAD_INV_ORDER","BAD_OPERATION","BAD_PARAM","BAD_POLICY","BAD_POLICY_TYPE","BAD_POLICY_VALUE","BAD_QOS","BAD_TYPECODE","BMPImageWriteParam","BackingStoreException","BadAttributeValueExpException","BadBinaryOpValueExpException","BadKind","BadLocationException","BadPaddingException","BadStringOperationException","BandCombineOp","BandedSampleModel","BaseRowSet","BasicArrowButton","BasicAttribute","BasicAttributes","BasicBorders","BasicBorders.ButtonBorder","BasicBorders.FieldBorder","BasicBorders.MarginBorder","BasicBorders.MenuBarBorder","BasicBorders.RadioButtonBorder","BasicBorders.RolloverButtonBorder","BasicBorders.SplitPaneBorder","BasicBorders.ToggleButtonBorder","BasicButtonListener","BasicButtonUI","BasicCheckBoxMenuItemUI","BasicCheckBoxUI","BasicColorChooserUI","BasicComboBoxEditor","BasicComboBoxEditor.UIResource","BasicComboBoxRenderer","BasicComboBoxRenderer.UIResource","BasicComboBoxUI","BasicComboPopup","BasicControl","BasicDesktopIconUI","BasicDesktopPaneUI","BasicDirectoryModel","BasicEditorPaneUI","BasicFileChooserUI","BasicFormattedTextFieldUI","BasicGraphicsUtils","BasicHTML","BasicIconFactory","BasicInternalFrameTitlePane","BasicInternalFrameUI","BasicLabelUI","BasicListUI","BasicLookAndFeel","BasicMenuBarUI","BasicMenuItemUI","BasicMenuUI","BasicOptionPaneUI","BasicOptionPaneUI.ButtonAreaLayout","BasicPanelUI","BasicPasswordFieldUI","BasicPermission","BasicPopupMenuSeparatorUI","BasicPopupMenuUI","BasicProgressBarUI","BasicRadioButtonMenuItemUI","BasicRadioButtonUI","BasicRootPaneUI","BasicScrollBarUI","BasicScrollPaneUI","BasicSeparatorUI","BasicSliderUI","BasicSpinnerUI","BasicSplitPaneDivider","BasicSplitPaneUI","BasicStroke","BasicTabbedPaneUI","BasicTableHeaderUI","BasicTableUI","BasicTextAreaUI","BasicTextFieldUI","BasicTextPaneUI","BasicTextUI","BasicTextUI.BasicCaret","BasicTextUI.BasicHighlighter","BasicToggleButtonUI","BasicToolBarSeparatorUI","BasicToolBarUI","BasicToolTipUI","BasicTreeUI","BasicViewportUI","BatchUpdateException","BeanContext","BeanContextChild","BeanContextChildComponentProxy","BeanContextChildSupport","BeanContextContainerProxy","BeanContextEvent","BeanContextMembershipEvent","BeanContextMembershipListener","BeanContextProxy","BeanContextServiceAvailableEvent","BeanContextServiceProvider","BeanContextServiceProviderBeanInfo","BeanContextServiceRevokedEvent","BeanContextServiceRevokedListener","BeanContextServices","BeanContextServicesListener","BeanContextServicesSupport","BeanContextServicesSupport.BCSSServiceProvider","BeanContextSupport","BeanContextSupport.BCSIterator","BeanDescriptor","BeanInfo","Beans","BevelBorder","Bidi","BigDecimal","BigInteger","BinaryRefAddr","BindException","Binding","Binding","BindingHelper","BindingHolder","BindingIterator","BindingIteratorHelper","BindingIteratorHolder","BindingIteratorOperations","BindingIteratorPOA","BindingListHelper","BindingListHolder","BindingType","BindingTypeHelper","BindingTypeHolder","BitSet","Blob","BlockView","BlockingQueue","Book","Boolean","BooleanControl","BooleanControl.Type","BooleanHolder","BooleanSeqHelper","BooleanSeqHolder","Border","BorderFactory","BorderLayout","BorderUIResource","BorderUIResource.BevelBorderUIResource","BorderUIResource.CompoundBorderUIResource","BorderUIResource.EmptyBorderUIResource","BorderUIResource.EtchedBorderUIResource","BorderUIResource.LineBorderUIResource","BorderUIResource.MatteBorderUIResource","BorderUIResource.TitledBorderUIResource","BoundedRangeModel","Bounds","Bounds","Box","Box.Filler","BoxLayout","BoxView","BoxedValueHelper","BreakIterator","BrokenBarrierException","Buffer","BufferCapabilities","BufferCapabilities.FlipContents","BufferOverflowException","BufferStrategy","BufferUnderflowException","BufferedImage","BufferedImageFilter","BufferedImageOp","BufferedInputStream","BufferedOutputStream","BufferedReader","BufferedWriter","Button","ButtonGroup","ButtonModel","ButtonUI","Byte","ByteArrayInputStream","ByteArrayOutputStream","ByteBuffer","ByteChannel","ByteHolder","ByteLookupTable","ByteOrder","CDATASection","CMMException","CODESET_INCOMPATIBLE","COMM_FAILURE","CRC32","CRL","CRLException","CRLSelector","CSS","CSS.Attribute","CTX_RESTRICT_SCOPE","CacheRequest","CacheResponse","CachedRowSet","Calendar","Callable","CallableStatement","Callback","CallbackHandler","CancelablePrintJob","CancellationException","CancelledKeyException","CannotProceed","CannotProceedException","CannotProceedHelper","CannotProceedHolder","CannotRedoException","CannotUndoException","Canvas","CardLayout","Caret","CaretEvent","CaretListener","CellEditor","CellEditorListener","CellRendererPane","CertPath","CertPath.CertPathRep","CertPathBuilder","CertPathBuilderException","CertPathBuilderResult","CertPathBuilderSpi","CertPathParameters","CertPathTrustManagerParameters","CertPathValidator","CertPathValidatorException","CertPathValidatorResult","CertPathValidatorSpi","CertSelector","CertStore","CertStoreException","CertStoreParameters","CertStoreSpi","Certificate","Certificate","Certificate","Certificate.CertificateRep","CertificateEncodingException","CertificateEncodingException","CertificateException","CertificateException","CertificateExpiredException","CertificateExpiredException","CertificateFactory","CertificateFactorySpi","CertificateNotYetValidException","CertificateNotYetValidException","CertificateParsingException","CertificateParsingException","ChangeEvent","ChangeListener","ChangedCharSetException","Channel","ChannelBinding","Channels","CharArrayReader","CharArrayWriter","CharBuffer","CharConversionException","CharHolder","CharSeqHelper","CharSeqHolder","CharSequence","Character","Character.Subset","Character.UnicodeBlock","CharacterCodingException","CharacterData","CharacterIterator","Charset","CharsetDecoder","CharsetEncoder","CharsetProvider","Checkbox","CheckboxGroup","CheckboxMenuItem","CheckedInputStream","CheckedOutputStream","Checksum","Choice","ChoiceCallback","ChoiceFormat","Chromaticity","Cipher","CipherInputStream","CipherOutputStream","CipherSpi","Class","ClassCastException","ClassCircularityError","ClassDefinition","ClassDesc","ClassFileTransformer","ClassFormatError","ClassLoader","ClassLoaderRepository","ClassLoadingMXBean","ClassNotFoundException","ClientRequestInfo","ClientRequestInfoOperations","ClientRequestInterceptor","ClientRequestInterceptorOperations","Clip","Clipboard","ClipboardOwner","Clob","CloneNotSupportedException","Cloneable","Closeable","ClosedByInterruptException","ClosedChannelException","ClosedSelectorException","CodeSets","CodeSigner","CodeSource","Codec","CodecFactory","CodecFactoryHelper","CodecFactoryOperations","CodecOperations","CoderMalfunctionError","CoderResult","CodingErrorAction","CollationElementIterator","CollationKey","Collator","Collection","CollectionCertStoreParameters","Collections","Color","ColorChooserComponentFactory","ColorChooserUI","ColorConvertOp","ColorModel","ColorSelectionModel","ColorSpace","ColorSupported","ColorType","ColorUIResource","ComboBoxEditor","ComboBoxModel","ComboBoxUI","ComboPopup","Comment","CommunicationException","Comparable","Comparator","CompilationMXBean","Compiler","CompletionService","CompletionStatus","CompletionStatusHelper","Component","ComponentAdapter","ComponentColorModel","ComponentEvent","ComponentIdHelper","ComponentInputMap","ComponentInputMapUIResource","ComponentListener","ComponentOrientation","ComponentSampleModel","ComponentUI","ComponentView","Composite","CompositeContext","CompositeData","CompositeDataSupport","CompositeName","CompositeType","CompositeView","CompoundBorder","CompoundControl","CompoundControl.Type","CompoundEdit","CompoundName","Compression","ConcurrentHashMap","ConcurrentLinkedQueue","ConcurrentMap","ConcurrentModificationException","Condition","Configuration","ConfigurationException","ConfirmationCallback","ConnectException","ConnectException","ConnectIOException","Connection","ConnectionEvent","ConnectionEventListener","ConnectionPendingException","ConnectionPoolDataSource","ConsoleHandler","Constructor","Container","ContainerAdapter","ContainerEvent","ContainerListener","ContainerOrderFocusTraversalPolicy","ContentHandler","ContentHandler","ContentHandlerFactory","ContentModel","Context","Context","ContextList","ContextNotEmptyException","ContextualRenderedImageFactory","Control","Control","Control.Type","ControlFactory","ControllerEventListener","ConvolveOp","CookieHandler","CookieHolder","Copies","CopiesSupported","CopyOnWriteArrayList","CopyOnWriteArraySet","CountDownLatch","CounterMonitor","CounterMonitorMBean","CredentialException","CredentialExpiredException","CredentialNotFoundException","CropImageFilter","CubicCurve2D","CubicCurve2D.Double","CubicCurve2D.Float","Currency","Current","Current","Current","CurrentHelper","CurrentHelper","CurrentHelper","CurrentHolder","CurrentOperations","CurrentOperations","CurrentOperations","Cursor","CustomMarshal","CustomValue","Customizer","CyclicBarrier","DATA_CONVERSION","DESKeySpec","DESedeKeySpec","DGC","DHGenParameterSpec","DHKey","DHParameterSpec","DHPrivateKey","DHPrivateKeySpec","DHPublicKey","DHPublicKeySpec","DISCARDING","DOMConfiguration","DOMError","DOMErrorHandler","DOMException","DOMImplementation","DOMImplementationLS","DOMImplementationList","DOMImplementationRegistry","DOMImplementationSource","DOMLocator","DOMLocator","DOMResult","DOMSource","DOMStringList","DSAKey","DSAKeyPairGenerator","DSAParameterSpec","DSAParams","DSAPrivateKey","DSAPrivateKeySpec","DSAPublicKey","DSAPublicKeySpec","DTD","DTDConstants","DTDHandler","DataBuffer","DataBufferByte","DataBufferDouble","DataBufferFloat","DataBufferInt","DataBufferShort","DataBufferUShort","DataFlavor","DataFormatException","DataInput","DataInputStream","DataInputStream","DataLine","DataLine.Info","DataOutput","DataOutputStream","DataOutputStream","DataSource","DataTruncation","DatabaseMetaData","DatagramChannel","DatagramPacket","DatagramSocket","DatagramSocketImpl","DatagramSocketImplFactory","DatatypeConfigurationException","DatatypeConstants","DatatypeConstants.Field","DatatypeFactory","Date","Date","DateFormat","DateFormat.Field","DateFormatSymbols","DateFormatter","DateTimeAtCompleted","DateTimeAtCreation","DateTimeAtProcessing","DateTimeSyntax","DebugGraphics","DecimalFormat","DecimalFormatSymbols","DeclHandler","DefaultBoundedRangeModel","DefaultButtonModel","DefaultCaret","DefaultCellEditor","DefaultColorSelectionModel","DefaultComboBoxModel","DefaultDesktopManager","DefaultEditorKit","DefaultEditorKit.BeepAction","DefaultEditorKit.CopyAction","DefaultEditorKit.CutAction","DefaultEditorKit.DefaultKeyTypedAction","DefaultEditorKit.InsertBreakAction","DefaultEditorKit.InsertContentAction","DefaultEditorKit.InsertTabAction","DefaultEditorKit.PasteAction","DefaultFocusManager","DefaultFocusTraversalPolicy","DefaultFormatter","DefaultFormatterFactory","DefaultHandler","DefaultHandler2","DefaultHighlighter","DefaultHighlighter.DefaultHighlightPainter","DefaultKeyboardFocusManager","DefaultListCellRenderer","DefaultListCellRenderer.UIResource","DefaultListModel","DefaultListSelectionModel","DefaultLoaderRepository","DefaultLoaderRepository","DefaultMenuLayout","DefaultMetalTheme","DefaultMutableTreeNode","DefaultPersistenceDelegate","DefaultSingleSelectionModel","DefaultStyledDocument","DefaultStyledDocument.AttributeUndoableEdit","DefaultStyledDocument.ElementSpec","DefaultTableCellRenderer","DefaultTableCellRenderer.UIResource","DefaultTableColumnModel","DefaultTableModel","DefaultTextUI","DefaultTreeCellEditor","DefaultTreeCellRenderer","DefaultTreeModel","DefaultTreeSelectionModel","DefinitionKind","DefinitionKindHelper","Deflater","DeflaterOutputStream","DelayQueue","Delayed","Delegate","Delegate","Delegate","DelegationPermission","Deprecated","Descriptor","DescriptorAccess","DescriptorSupport","DesignMode","DesktopIconUI","DesktopManager","DesktopPaneUI","Destination","DestroyFailedException","Destroyable","Dialog","Dictionary","DigestException","DigestInputStream","DigestOutputStream","Dimension","Dimension2D","DimensionUIResource","DirContext","DirObjectFactory","DirStateFactory","DirStateFactory.Result","DirectColorModel","DirectoryManager","DisplayMode","DnDConstants","Doc","DocAttribute","DocAttributeSet","DocFlavor","DocFlavor.BYTE_ARRAY","DocFlavor.CHAR_ARRAY","DocFlavor.INPUT_STREAM","DocFlavor.READER","DocFlavor.SERVICE_FORMATTED","DocFlavor.STRING","DocFlavor.URL","DocPrintJob","Document","Document","DocumentBuilder","DocumentBuilderFactory","DocumentEvent","DocumentEvent.ElementChange","DocumentEvent.EventType","DocumentFilter","DocumentFilter.FilterBypass","DocumentFragment","DocumentHandler","DocumentListener","DocumentName","DocumentParser","DocumentType","Documented","DomainCombiner","DomainManager","DomainManagerOperations","Double","DoubleBuffer","DoubleHolder","DoubleSeqHelper","DoubleSeqHolder","DragGestureEvent","DragGestureListener","DragGestureRecognizer","DragSource","DragSourceAdapter","DragSourceContext","DragSourceDragEvent","DragSourceDropEvent","DragSourceEvent","DragSourceListener","DragSourceMotionListener","Driver","DriverManager","DriverPropertyInfo","DropTarget","DropTarget.DropTargetAutoScroller","DropTargetAdapter","DropTargetContext","DropTargetDragEvent","DropTargetDropEvent","DropTargetEvent","DropTargetListener","DuplicateFormatFlagsException","DuplicateName","DuplicateNameHelper","Duration","DynAny","DynAny","DynAnyFactory","DynAnyFactoryHelper","DynAnyFactoryOperations","DynAnyHelper","DynAnyOperations","DynAnySeqHelper","DynArray","DynArray","DynArrayHelper","DynArrayOperations","DynEnum","DynEnum","DynEnumHelper","DynEnumOperations","DynFixed","DynFixed","DynFixedHelper","DynFixedOperations","DynSequence","DynSequence","DynSequenceHelper","DynSequenceOperations","DynStruct","DynStruct","DynStructHelper","DynStructOperations","DynUnion","DynUnion","DynUnionHelper","DynUnionOperations","DynValue","DynValue","DynValueBox","DynValueBoxOperations","DynValueCommon","DynValueCommonOperations","DynValueHelper","DynValueOperations","DynamicImplementation","DynamicImplementation","DynamicMBean","ECField","ECFieldF2m","ECFieldFp","ECGenParameterSpec","ECKey","ECParameterSpec","ECPoint","ECPrivateKey","ECPrivateKeySpec","ECPublicKey","ECPublicKeySpec","ENCODING_CDR_ENCAPS","EOFException","EditorKit","Element","Element","Element","ElementIterator","ElementType","Ellipse2D","Ellipse2D.Double","Ellipse2D.Float","EllipticCurve","EmptyBorder","EmptyStackException","EncodedKeySpec","Encoder","Encoding","EncryptedPrivateKeyInfo","Entity","Entity","EntityReference","EntityResolver","EntityResolver2","Enum","EnumConstantNotPresentException","EnumControl","EnumControl.Type","EnumMap","EnumSet","EnumSyntax","Enumeration","Environment","Error","ErrorHandler","ErrorListener","ErrorManager","EtchedBorder","Event","EventContext","EventDirContext","EventHandler","EventListener","EventListenerList","EventListenerProxy","EventObject","EventQueue","EventSetDescriptor","Exception","ExceptionDetailMessage","ExceptionInInitializerError","ExceptionList","ExceptionListener","Exchanger","ExecutionException","Executor","ExecutorCompletionService","ExecutorService","Executors","ExemptionMechanism","ExemptionMechanismException","ExemptionMechanismSpi","ExpandVetoException","ExportException","Expression","ExtendedRequest","ExtendedResponse","Externalizable","FREE_MEM","FactoryConfigurationError","FailedLoginException","FeatureDescriptor","Fidelity","Field","FieldNameHelper","FieldNameHelper","FieldPosition","FieldView","File","FileCacheImageInputStream","FileCacheImageOutputStream","FileChannel","FileChannel.MapMode","FileChooserUI","FileDescriptor","FileDialog","FileFilter","FileFilter","FileHandler","FileImageInputStream","FileImageOutputStream","FileInputStream","FileLock","FileLockInterruptionException","FileNameMap","FileNotFoundException","FileOutputStream","FilePermission","FileReader","FileSystemView","FileView","FileWriter","FilenameFilter","Filter","FilterInputStream","FilterOutputStream","FilterReader","FilterWriter","FilteredImageSource","FilteredRowSet","Finishings","FixedHeightLayoutCache","FixedHolder","FlatteningPathIterator","FlavorEvent","FlavorException","FlavorListener","FlavorMap","FlavorTable","Float","FloatBuffer","FloatControl","FloatControl.Type","FloatHolder","FloatSeqHelper","FloatSeqHolder","FlowLayout","FlowView","FlowView.FlowStrategy","Flushable","FocusAdapter","FocusEvent","FocusListener","FocusManager","FocusTraversalPolicy","Font","FontFormatException","FontMetrics","FontRenderContext","FontUIResource","FormSubmitEvent","FormSubmitEvent.MethodType","FormView","Format","Format.Field","FormatConversionProvider","FormatFlagsConversionMismatchException","FormatMismatch","FormatMismatchHelper","Formattable","FormattableFlags","Formatter","Formatter","FormatterClosedException","ForwardRequest","ForwardRequest","ForwardRequestHelper","ForwardRequestHelper","Frame","Future","FutureTask","GSSContext","GSSCredential","GSSException","GSSManager","GSSName","GZIPInputStream","GZIPOutputStream","GapContent","GarbageCollectorMXBean","GatheringByteChannel","GaugeMonitor","GaugeMonitorMBean","GeneralPath","GeneralSecurityException","GenericArrayType","GenericDeclaration","GenericSignatureFormatError","GlyphJustificationInfo","GlyphMetrics","GlyphVector","GlyphView","GlyphView.GlyphPainter","GradientPaint","GraphicAttribute","Graphics","Graphics2D","GraphicsConfigTemplate","GraphicsConfiguration","GraphicsDevice","GraphicsEnvironment","GrayFilter","GregorianCalendar","GridBagConstraints","GridBagLayout","GridLayout","Group","Guard","GuardedObject","HOLDING","HTML","HTML.Attribute","HTML.Tag","HTML.UnknownTag","HTMLDocument","HTMLDocument.Iterator","HTMLEditorKit","HTMLEditorKit.HTMLFactory","HTMLEditorKit.HTMLTextAction","HTMLEditorKit.InsertHTMLTextAction","HTMLEditorKit.LinkController","HTMLEditorKit.Parser","HTMLEditorKit.ParserCallback","HTMLFrameHyperlinkEvent","HTMLWriter","Handler","HandlerBase","HandshakeCompletedEvent","HandshakeCompletedListener","HasControls","HashAttributeSet","HashDocAttributeSet","HashMap","HashPrintJobAttributeSet","HashPrintRequestAttributeSet","HashPrintServiceAttributeSet","HashSet","Hashtable","HeadlessException","HierarchyBoundsAdapter","HierarchyBoundsListener","HierarchyEvent","HierarchyListener","Highlighter","Highlighter.Highlight","Highlighter.HighlightPainter","HostnameVerifier","HttpRetryException","HttpURLConnection","HttpsURLConnection","HyperlinkEvent","HyperlinkEvent.EventType","HyperlinkListener","ICC_ColorSpace","ICC_Profile","ICC_ProfileGray","ICC_ProfileRGB","IDLEntity","IDLType","IDLTypeHelper","IDLTypeOperations","ID_ASSIGNMENT_POLICY_ID","ID_UNIQUENESS_POLICY_ID","IIOByteBuffer","IIOException","IIOImage","IIOInvalidTreeException","IIOMetadata","IIOMetadataController","IIOMetadataFormat","IIOMetadataFormatImpl","IIOMetadataNode","IIOParam","IIOParamController","IIOReadProgressListener","IIOReadUpdateListener","IIOReadWarningListener","IIORegistry","IIOServiceProvider","IIOWriteProgressListener","IIOWriteWarningListener","IMPLICIT_ACTIVATION_POLICY_ID","IMP_LIMIT","INACTIVE","INITIALIZE","INTERNAL","INTF_REPOS","INVALID_ACTIVITY","INVALID_TRANSACTION","INV_FLAG","INV_IDENT","INV_OBJREF","INV_POLICY","IOException","IOR","IORHelper","IORHolder","IORInfo","IORInfoOperations","IORInterceptor","IORInterceptorOperations","IORInterceptor_3_0","IORInterceptor_3_0Helper","IORInterceptor_3_0Holder","IORInterceptor_3_0Operations","IRObject","IRObjectOperations","Icon","IconUIResource","IconView","IdAssignmentPolicy","IdAssignmentPolicyOperations","IdAssignmentPolicyValue","IdUniquenessPolicy","IdUniquenessPolicyOperations","IdUniquenessPolicyValue","IdentifierHelper","Identity","IdentityHashMap","IdentityScope","IllegalAccessError","IllegalAccessException","IllegalArgumentException","IllegalBlockSizeException","IllegalBlockingModeException","IllegalCharsetNameException","IllegalClassFormatException","IllegalComponentStateException","IllegalFormatCodePointException","IllegalFormatConversionException","IllegalFormatException","IllegalFormatFlagsException","IllegalFormatPrecisionException","IllegalFormatWidthException","IllegalMonitorStateException","IllegalPathStateException","IllegalSelectorException","IllegalStateException","IllegalThreadStateException","Image","ImageCapabilities","ImageConsumer","ImageFilter","ImageGraphicAttribute","ImageIO","ImageIcon","ImageInputStream","ImageInputStreamImpl","ImageInputStreamSpi","ImageObserver","ImageOutputStream","ImageOutputStreamImpl","ImageOutputStreamSpi","ImageProducer","ImageReadParam","ImageReader","ImageReaderSpi","ImageReaderWriterSpi","ImageTranscoder","ImageTranscoderSpi","ImageTypeSpecifier","ImageView","ImageWriteParam","ImageWriter","ImageWriterSpi","ImagingOpException","ImplicitActivationPolicy","ImplicitActivationPolicyOperations","ImplicitActivationPolicyValue","IncompatibleClassChangeError","IncompleteAnnotationException","InconsistentTypeCode","InconsistentTypeCode","InconsistentTypeCodeHelper","IndexColorModel","IndexOutOfBoundsException","IndexedPropertyChangeEvent","IndexedPropertyDescriptor","IndirectionException","Inet4Address","Inet6Address","InetAddress","InetSocketAddress","Inflater","InflaterInputStream","InheritableThreadLocal","Inherited","InitialContext","InitialContextFactory","InitialContextFactoryBuilder","InitialDirContext","InitialLdapContext","InlineView","InputContext","InputEvent","InputMap","InputMapUIResource","InputMethod","InputMethodContext","InputMethodDescriptor","InputMethodEvent","InputMethodHighlight","InputMethodListener","InputMethodRequests","InputMismatchException","InputSource","InputStream","InputStream","InputStream","InputStreamReader","InputSubset","InputVerifier","Insets","InsetsUIResource","InstanceAlreadyExistsException","InstanceNotFoundException","InstantiationError","InstantiationException","Instrument","Instrumentation","InsufficientResourcesException","IntBuffer","IntHolder","Integer","IntegerSyntax","Interceptor","InterceptorOperations","InternalError","InternalFrameAdapter","InternalFrameEvent","InternalFrameFocusTraversalPolicy","InternalFrameListener","InternalFrameUI","InternationalFormatter","InterruptedException","InterruptedIOException","InterruptedNamingException","InterruptibleChannel","IntrospectionException","IntrospectionException","Introspector","Invalid","InvalidActivityException","InvalidAddress","InvalidAddressHelper","InvalidAddressHolder","InvalidAlgorithmParameterException","InvalidApplicationException","InvalidAttributeIdentifierException","InvalidAttributeValueException","InvalidAttributeValueException","InvalidAttributesException","InvalidClassException","InvalidDnDOperationException","InvalidKeyException","InvalidKeyException","InvalidKeySpecException","InvalidMarkException","InvalidMidiDataException","InvalidName","InvalidName","InvalidName","InvalidNameException","InvalidNameHelper","InvalidNameHelper","InvalidNameHolder","InvalidObjectException","InvalidOpenTypeException","InvalidParameterException","InvalidParameterSpecException","InvalidPolicy","InvalidPolicyHelper","InvalidPreferencesFormatException","InvalidPropertiesFormatException","InvalidRelationIdException","InvalidRelationServiceException","InvalidRelationTypeException","InvalidRoleInfoException","InvalidRoleValueException","InvalidSearchControlsException","InvalidSearchFilterException","InvalidSeq","InvalidSlot","InvalidSlotHelper","InvalidTargetObjectTypeException","InvalidTransactionException","InvalidTypeForEncoding","InvalidTypeForEncodingHelper","InvalidValue","InvalidValue","InvalidValueHelper","InvocationEvent","InvocationHandler","InvocationTargetException","InvokeHandler","IstringHelper","ItemEvent","ItemListener","ItemSelectable","Iterable","Iterator","IvParameterSpec","JApplet","JButton","JCheckBox","JCheckBoxMenuItem","JColorChooser","JComboBox","JComboBox.KeySelectionManager","JComponent","JDesktopPane","JDialog","JEditorPane","JFileChooser","JFormattedTextField","JFormattedTextField.AbstractFormatter","JFormattedTextField.AbstractFormatterFactory","JFrame","JInternalFrame","JInternalFrame.JDesktopIcon","JLabel","JLayeredPane","JList","JMException","JMRuntimeException","JMXAuthenticator","JMXConnectionNotification","JMXConnector","JMXConnectorFactory","JMXConnectorProvider","JMXConnectorServer","JMXConnectorServerFactory","JMXConnectorServerMBean","JMXConnectorServerProvider","JMXPrincipal","JMXProviderException","JMXServerErrorException","JMXServiceURL","JMenu","JMenuBar","JMenuItem","JOptionPane","JPEGHuffmanTable","JPEGImageReadParam","JPEGImageWriteParam","JPEGQTable","JPanel","JPasswordField","JPopupMenu","JPopupMenu.Separator","JProgressBar","JRadioButton","JRadioButtonMenuItem","JRootPane","JScrollBar","JScrollPane","JSeparator","JSlider","JSpinner","JSpinner.DateEditor","JSpinner.DefaultEditor","JSpinner.ListEditor","JSpinner.NumberEditor","JSplitPane","JTabbedPane","JTable","JTable.PrintMode","JTableHeader","JTextArea","JTextComponent","JTextComponent.KeyBinding","JTextField","JTextPane","JToggleButton","JToggleButton.ToggleButtonModel","JToolBar","JToolBar.Separator","JToolTip","JTree","JTree.DynamicUtilTreeNode","JTree.EmptySelectionModel","JViewport","JWindow","JarEntry","JarException","JarFile","JarInputStream","JarOutputStream","JarURLConnection","JdbcRowSet","JobAttributes","JobAttributes.DefaultSelectionType","JobAttributes.DestinationType","JobAttributes.DialogType","JobAttributes.MultipleDocumentHandlingType","JobAttributes.SidesType","JobHoldUntil","JobImpressions","JobImpressionsCompleted","JobImpressionsSupported","JobKOctets","JobKOctetsProcessed","JobKOctetsSupported","JobMediaSheets","JobMediaSheetsCompleted","JobMediaSheetsSupported","JobMessageFromOperator","JobName","JobOriginatingUserName","JobPriority","JobPrioritySupported","JobSheets","JobState","JobStateReason","JobStateReasons","JoinRowSet","Joinable","KerberosKey","KerberosPrincipal","KerberosTicket","Kernel","Key","KeyAdapter","KeyAgreement","KeyAgreementSpi","KeyAlreadyExistsException","KeyEvent","KeyEventDispatcher","KeyEventPostProcessor","KeyException","KeyFactory","KeyFactorySpi","KeyGenerator","KeyGeneratorSpi","KeyListener","KeyManagementException","KeyManager","KeyManagerFactory","KeyManagerFactorySpi","KeyPair","KeyPairGenerator","KeyPairGeneratorSpi","KeyRep","KeyRep.Type","KeySpec","KeyStore","KeyStore.Builder","KeyStore.CallbackHandlerProtection","KeyStore.Entry","KeyStore.LoadStoreParameter","KeyStore.PasswordProtection","KeyStore.PrivateKeyEntry","KeyStore.ProtectionParameter","KeyStore.SecretKeyEntry","KeyStore.TrustedCertificateEntry","KeyStoreBuilderParameters","KeyStoreException","KeyStoreSpi","KeyStroke","KeyboardFocusManager","Keymap","LDAPCertStoreParameters","LIFESPAN_POLICY_ID","LOCATION_FORWARD","LSException","LSInput","LSLoadEvent","LSOutput","LSParser","LSParserFilter","LSProgressEvent","LSResourceResolver","LSSerializer","LSSerializerFilter","Label","LabelUI","LabelView","LanguageCallback","LastOwnerException","LayeredHighlighter","LayeredHighlighter.LayerPainter","LayoutFocusTraversalPolicy","LayoutManager","LayoutManager2","LayoutQueue","LdapContext","LdapName","LdapReferralException","Lease","Level","LexicalHandler","LifespanPolicy","LifespanPolicyOperations","LifespanPolicyValue","LimitExceededException","Line","Line.Info","Line2D","Line2D.Double","Line2D.Float","LineBorder","LineBreakMeasurer","LineEvent","LineEvent.Type","LineListener","LineMetrics","LineNumberInputStream","LineNumberReader","LineUnavailableException","LinkException","LinkLoopException","LinkRef","LinkageError","LinkedBlockingQueue","LinkedHashMap","LinkedHashSet","LinkedList","List","List","ListCellRenderer","ListDataEvent","ListDataListener","ListIterator","ListModel","ListResourceBundle","ListSelectionEvent","ListSelectionListener","ListSelectionModel","ListUI","ListView","ListenerNotFoundException","LoaderHandler","LocalObject","Locale","LocateRegistry","Locator","Locator2","Locator2Impl","LocatorImpl","Lock","LockSupport","LogManager","LogRecord","LogStream","Logger","LoggingMXBean","LoggingPermission","LoginContext","LoginException","LoginModule","Long","LongBuffer","LongHolder","LongLongSeqHelper","LongLongSeqHolder","LongSeqHelper","LongSeqHolder","LookAndFeel","LookupOp","LookupTable","MARSHAL","MBeanAttributeInfo","MBeanConstructorInfo","MBeanException","MBeanFeatureInfo","MBeanInfo","MBeanNotificationInfo","MBeanOperationInfo","MBeanParameterInfo","MBeanPermission","MBeanRegistration","MBeanRegistrationException","MBeanServer","MBeanServerBuilder","MBeanServerConnection","MBeanServerDelegate","MBeanServerDelegateMBean","MBeanServerFactory","MBeanServerForwarder","MBeanServerInvocationHandler","MBeanServerNotification","MBeanServerNotificationFilter","MBeanServerPermission","MBeanTrustPermission","MGF1ParameterSpec","MLet","MLetMBean","Mac","MacSpi","MalformedInputException","MalformedLinkException","MalformedObjectNameException","MalformedParameterizedTypeException","MalformedURLException","ManageReferralControl","ManagementFactory","ManagementPermission","ManagerFactoryParameters","Manifest","Map","Map.Entry","MappedByteBuffer","MarshalException","MarshalledObject","MaskFormatter","MatchResult","Matcher","Math","MathContext","MatteBorder","Media","MediaName","MediaPrintableArea","MediaSize","MediaSize.Engineering","MediaSize.ISO","MediaSize.JIS","MediaSize.NA","MediaSize.Other","MediaSizeName","MediaTracker","MediaTray","Member","MemoryCacheImageInputStream","MemoryCacheImageOutputStream","MemoryHandler","MemoryImageSource","MemoryMXBean","MemoryManagerMXBean","MemoryNotificationInfo","MemoryPoolMXBean","MemoryType","MemoryUsage","Menu","MenuBar","MenuBarUI","MenuComponent","MenuContainer","MenuDragMouseEvent","MenuDragMouseListener","MenuElement","MenuEvent","MenuItem","MenuItemUI","MenuKeyEvent","MenuKeyListener","MenuListener","MenuSelectionManager","MenuShortcut","MessageDigest","MessageDigestSpi","MessageFormat","MessageFormat.Field","MessageProp","MetaEventListener","MetaMessage","MetalBorders","MetalBorders.ButtonBorder","MetalBorders.Flush3DBorder","MetalBorders.InternalFrameBorder","MetalBorders.MenuBarBorder","MetalBorders.MenuItemBorder","MetalBorders.OptionDialogBorder","MetalBorders.PaletteBorder","MetalBorders.PopupMenuBorder","MetalBorders.RolloverButtonBorder","MetalBorders.ScrollPaneBorder","MetalBorders.TableHeaderBorder","MetalBorders.TextFieldBorder","MetalBorders.ToggleButtonBorder","MetalBorders.ToolBarBorder","MetalButtonUI","MetalCheckBoxIcon","MetalCheckBoxUI","MetalComboBoxButton","MetalComboBoxEditor","MetalComboBoxEditor.UIResource","MetalComboBoxIcon","MetalComboBoxUI","MetalDesktopIconUI","MetalFileChooserUI","MetalIconFactory","MetalIconFactory.FileIcon16","MetalIconFactory.FolderIcon16","MetalIconFactory.PaletteCloseIcon","MetalIconFactory.TreeControlIcon","MetalIconFactory.TreeFolderIcon","MetalIconFactory.TreeLeafIcon","MetalInternalFrameTitlePane","MetalInternalFrameUI","MetalLabelUI","MetalLookAndFeel","MetalMenuBarUI","MetalPopupMenuSeparatorUI","MetalProgressBarUI","MetalRadioButtonUI","MetalRootPaneUI","MetalScrollBarUI","MetalScrollButton","MetalScrollPaneUI","MetalSeparatorUI","MetalSliderUI","MetalSplitPaneUI","MetalTabbedPaneUI","MetalTextFieldUI","MetalTheme","MetalToggleButtonUI","MetalToolBarUI","MetalToolTipUI","MetalTreeUI","Method","MethodDescriptor","MidiChannel","MidiDevice","MidiDevice.Info","MidiDeviceProvider","MidiEvent","MidiFileFormat","MidiFileReader","MidiFileWriter","MidiMessage","MidiSystem","MidiUnavailableException","MimeTypeParseException","MinimalHTMLWriter","MissingFormatArgumentException","MissingFormatWidthException","MissingResourceException","Mixer","Mixer.Info","MixerProvider","ModelMBean","ModelMBeanAttributeInfo","ModelMBeanConstructorInfo","ModelMBeanInfo","ModelMBeanInfoSupport","ModelMBeanNotificationBroadcaster","ModelMBeanNotificationInfo","ModelMBeanOperationInfo","ModificationItem","Modifier","Monitor","MonitorMBean","MonitorNotification","MonitorSettingException","MouseAdapter","MouseDragGestureRecognizer","MouseEvent","MouseInfo","MouseInputAdapter","MouseInputListener","MouseListener","MouseMotionAdapter","MouseMotionListener","MouseWheelEvent","MouseWheelListener","MultiButtonUI","MultiColorChooserUI","MultiComboBoxUI","MultiDesktopIconUI","MultiDesktopPaneUI","MultiDoc","MultiDocPrintJob","MultiDocPrintService","MultiFileChooserUI","MultiInternalFrameUI","MultiLabelUI","MultiListUI","MultiLookAndFeel","MultiMenuBarUI","MultiMenuItemUI","MultiOptionPaneUI","MultiPanelUI","MultiPixelPackedSampleModel","MultiPopupMenuUI","MultiProgressBarUI","MultiRootPaneUI","MultiScrollBarUI","MultiScrollPaneUI","MultiSeparatorUI","MultiSliderUI","MultiSpinnerUI","MultiSplitPaneUI","MultiTabbedPaneUI","MultiTableHeaderUI","MultiTableUI","MultiTextUI","MultiToolBarUI","MultiToolTipUI","MultiTreeUI","MultiViewportUI","MulticastSocket","MultipleComponentProfileHelper","MultipleComponentProfileHolder","MultipleDocumentHandling","MultipleMaster","MutableAttributeSet","MutableComboBoxModel","MutableTreeNode","NON_EXISTENT","NO_IMPLEMENT","NO_MEMORY","NO_PERMISSION","NO_RESOURCES","NO_RESPONSE","NVList","Name","NameAlreadyBoundException","NameCallback","NameClassPair","NameComponent","NameComponentHelper","NameComponentHolder","NameDynAnyPair","NameDynAnyPairHelper","NameDynAnyPairSeqHelper","NameHelper","NameHolder","NameList","NameNotFoundException","NameParser","NameValuePair","NameValuePair","NameValuePairHelper","NameValuePairHelper","NameValuePairSeqHelper","NamedNodeMap","NamedValue","NamespaceChangeListener","NamespaceContext","NamespaceSupport","Naming","NamingContext","NamingContextExt","NamingContextExtHelper","NamingContextExtHolder","NamingContextExtOperations","NamingContextExtPOA","NamingContextHelper","NamingContextHolder","NamingContextOperations","NamingContextPOA","NamingEnumeration","NamingEvent","NamingException","NamingExceptionEvent","NamingListener","NamingManager","NamingSecurityException","NavigationFilter","NavigationFilter.FilterBypass","NegativeArraySizeException","NetPermission","NetworkInterface","NoClassDefFoundError","NoConnectionPendingException","NoContext","NoContextHelper","NoInitialContextException","NoPermissionException","NoRouteToHostException","NoServant","NoServantHelper","NoSuchAlgorithmException","NoSuchAttributeException","NoSuchElementException","NoSuchFieldError","NoSuchFieldException","NoSuchMethodError","NoSuchMethodException","NoSuchObjectException","NoSuchPaddingException","NoSuchProviderException","Node","NodeChangeEvent","NodeChangeListener","NodeList","NonReadableChannelException","NonWritableChannelException","NoninvertibleTransformException","NotActiveException","NotBoundException","NotCompliantMBeanException","NotContextException","NotEmpty","NotEmptyHelper","NotEmptyHolder","NotFound","NotFoundHelper","NotFoundHolder","NotFoundReason","NotFoundReasonHelper","NotFoundReasonHolder","NotOwnerException","NotSerializableException","NotYetBoundException","NotYetConnectedException","Notation","Notification","NotificationBroadcaster","NotificationBroadcasterSupport","NotificationEmitter","NotificationFilter","NotificationFilterSupport","NotificationListener","NotificationResult","NullCipher","NullPointerException","Number","NumberFormat","NumberFormat.Field","NumberFormatException","NumberFormatter","NumberOfDocuments","NumberOfInterveningJobs","NumberUp","NumberUpSupported","NumericShaper","OAEPParameterSpec","OBJECT_NOT_EXIST","OBJ_ADAPTER","OMGVMCID","ORB","ORB","ORBIdHelper","ORBInitInfo","ORBInitInfoOperations","ORBInitializer","ORBInitializerOperations","ObjID","Object","Object","ObjectAlreadyActive","ObjectAlreadyActiveHelper","ObjectChangeListener","ObjectFactory","ObjectFactoryBuilder","ObjectHelper","ObjectHolder","ObjectIdHelper","ObjectIdHelper","ObjectImpl","ObjectImpl","ObjectInput","ObjectInputStream","ObjectInputStream.GetField","ObjectInputValidation","ObjectInstance","ObjectName","ObjectNotActive","ObjectNotActiveHelper","ObjectOutput","ObjectOutputStream","ObjectOutputStream.PutField","ObjectReferenceFactory","ObjectReferenceFactoryHelper","ObjectReferenceFactoryHolder","ObjectReferenceTemplate","ObjectReferenceTemplateHelper","ObjectReferenceTemplateHolder","ObjectReferenceTemplateSeqHelper","ObjectReferenceTemplateSeqHolder","ObjectStreamClass","ObjectStreamConstants","ObjectStreamException","ObjectStreamField","ObjectView","Observable","Observer","OceanTheme","OctetSeqHelper","OctetSeqHolder","Oid","OpenDataException","OpenMBeanAttributeInfo","OpenMBeanAttributeInfoSupport","OpenMBeanConstructorInfo","OpenMBeanConstructorInfoSupport","OpenMBeanInfo","OpenMBeanInfoSupport","OpenMBeanOperationInfo","OpenMBeanOperationInfoSupport","OpenMBeanParameterInfo","OpenMBeanParameterInfoSupport","OpenType","OpenType","OperatingSystemMXBean","Operation","OperationNotSupportedException","OperationsException","Option","OptionPaneUI","OptionalDataException","OrientationRequested","OutOfMemoryError","OutputDeviceAssigned","OutputKeys","OutputStream","OutputStream","OutputStream","OutputStreamWriter","OverlappingFileLockException","OverlayLayout","Override","Owner","PBEKey","PBEKeySpec","PBEParameterSpec","PDLOverrideSupported","PERSIST_STORE","PKCS8EncodedKeySpec","PKIXBuilderParameters","PKIXCertPathBuilderResult","PKIXCertPathChecker","PKIXCertPathValidatorResult","PKIXParameters","POA","POAHelper","POAManager","POAManagerOperations","POAOperations","PRIVATE_MEMBER","PSSParameterSpec","PSource","PSource.PSpecified","PUBLIC_MEMBER","Pack200","Pack200.Packer","Pack200.Unpacker","Package","PackedColorModel","PageAttributes","PageAttributes.ColorType","PageAttributes.MediaType","PageAttributes.OrientationRequestedType","PageAttributes.OriginType","PageAttributes.PrintQualityType","PageFormat","PageRanges","Pageable","PagedResultsControl","PagedResultsResponseControl","PagesPerMinute","PagesPerMinuteColor","Paint","PaintContext","PaintEvent","Panel","PanelUI","Paper","ParagraphView","ParagraphView","Parameter","ParameterBlock","ParameterDescriptor","ParameterMetaData","ParameterMode","ParameterModeHelper","ParameterModeHolder","ParameterizedType","ParseException","ParsePosition","Parser","Parser","ParserAdapter","ParserConfigurationException","ParserDelegator","ParserFactory","PartialResultException","PasswordAuthentication","PasswordCallback","PasswordView","Patch","PathIterator","Pattern","PatternSyntaxException","Permission","Permission","PermissionCollection","Permissions","PersistenceDelegate","PersistentMBean","PhantomReference","Pipe","Pipe.SinkChannel","Pipe.SourceChannel","PipedInputStream","PipedOutputStream","PipedReader","PipedWriter","PixelGrabber","PixelInterleavedSampleModel","PlainDocument","PlainView","Point","Point2D","Point2D.Double","Point2D.Float","PointerInfo","Policy","Policy","Policy","PolicyError","PolicyErrorCodeHelper","PolicyErrorHelper","PolicyErrorHolder","PolicyFactory","PolicyFactoryOperations","PolicyHelper","PolicyHolder","PolicyListHelper","PolicyListHolder","PolicyNode","PolicyOperations","PolicyQualifierInfo","PolicyTypeHelper","Polygon","PooledConnection","Popup","PopupFactory","PopupMenu","PopupMenuEvent","PopupMenuListener","PopupMenuUI","Port","Port.Info","PortUnreachableException","PortableRemoteObject","PortableRemoteObjectDelegate","Position","Position.Bias","Predicate","PreferenceChangeEvent","PreferenceChangeListener","Preferences","PreferencesFactory","PreparedStatement","PresentationDirection","Principal","Principal","PrincipalHolder","PrintEvent","PrintException","PrintGraphics","PrintJob","PrintJobAdapter","PrintJobAttribute","PrintJobAttributeEvent","PrintJobAttributeListener","PrintJobAttributeSet","PrintJobEvent","PrintJobListener","PrintQuality","PrintRequestAttribute","PrintRequestAttributeSet","PrintService","PrintServiceAttribute","PrintServiceAttributeEvent","PrintServiceAttributeListener","PrintServiceAttributeSet","PrintServiceLookup","PrintStream","PrintWriter","Printable","PrinterAbortException","PrinterException","PrinterGraphics","PrinterIOException","PrinterInfo","PrinterIsAcceptingJobs","PrinterJob","PrinterLocation","PrinterMakeAndModel","PrinterMessageFromOperator","PrinterMoreInfo","PrinterMoreInfoManufacturer","PrinterName","PrinterResolution","PrinterState","PrinterStateReason","PrinterStateReasons","PrinterURI","PriorityBlockingQueue","PriorityQueue","PrivateClassLoader","PrivateCredentialPermission","PrivateKey","PrivateMLet","PrivilegedAction","PrivilegedActionException","PrivilegedExceptionAction","Process","ProcessBuilder","ProcessingInstruction","ProfileDataException","ProfileIdHelper","ProgressBarUI","ProgressMonitor","ProgressMonitorInputStream","Properties","PropertyChangeEvent","PropertyChangeListener","PropertyChangeListenerProxy","PropertyChangeSupport","PropertyDescriptor","PropertyEditor","PropertyEditorManager","PropertyEditorSupport","PropertyPermission","PropertyResourceBundle","PropertyVetoException","ProtectionDomain","ProtocolException","Provider","Provider.Service","ProviderException","Proxy","Proxy","Proxy.Type","ProxySelector","PublicKey","PushbackInputStream","PushbackReader","QName","QuadCurve2D","QuadCurve2D.Double","QuadCurve2D.Float","Query","QueryEval","QueryExp","Queue","QueuedJobCount","RC2ParameterSpec","RC5ParameterSpec","REBIND","REQUEST_PROCESSING_POLICY_ID","RGBImageFilter","RMIClassLoader","RMIClassLoaderSpi","RMIClientSocketFactory","RMIConnection","RMIConnectionImpl","RMIConnectionImpl_Stub","RMIConnector","RMIConnectorServer","RMICustomMaxStreamFormat","RMIFailureHandler","RMIIIOPServerImpl","RMIJRMPServerImpl","RMISecurityException","RMISecurityManager","RMIServer","RMIServerImpl","RMIServerImpl_Stub","RMIServerSocketFactory","RMISocketFactory","RSAKey","RSAKeyGenParameterSpec","RSAMultiPrimePrivateCrtKey","RSAMultiPrimePrivateCrtKeySpec","RSAOtherPrimeInfo","RSAPrivateCrtKey","RSAPrivateCrtKeySpec","RSAPrivateKey","RSAPrivateKeySpec","RSAPublicKey","RSAPublicKeySpec","RTFEditorKit","Random","RandomAccess","RandomAccessFile","Raster","RasterFormatException","RasterOp","Rdn","ReadOnlyBufferException","ReadWriteLock","Readable","ReadableByteChannel","Reader","RealmCallback","RealmChoiceCallback","Receiver","Rectangle","Rectangle2D","Rectangle2D.Double","Rectangle2D.Float","RectangularShape","ReentrantLock","ReentrantReadWriteLock","ReentrantReadWriteLock.ReadLock","ReentrantReadWriteLock.WriteLock","Ref","RefAddr","Reference","Reference","ReferenceQueue","ReferenceUriSchemesSupported","Referenceable","ReferralException","ReflectPermission","ReflectionException","RefreshFailedException","Refreshable","Region","RegisterableService","Registry","RegistryHandler","RejectedExecutionException","RejectedExecutionHandler","Relation","RelationException","RelationNotFoundException","RelationNotification","RelationService","RelationServiceMBean","RelationServiceNotRegisteredException","RelationSupport","RelationSupportMBean","RelationType","RelationTypeNotFoundException","RelationTypeSupport","RemarshalException","Remote","RemoteCall","RemoteException","RemoteObject","RemoteObjectInvocationHandler","RemoteRef","RemoteServer","RemoteStub","RenderContext","RenderableImage","RenderableImageOp","RenderableImageProducer","RenderedImage","RenderedImageFactory","Renderer","RenderingHints","RenderingHints.Key","RepaintManager","ReplicateScaleFilter","RepositoryIdHelper","Request","RequestInfo","RequestInfoOperations","RequestProcessingPolicy","RequestProcessingPolicyOperations","RequestProcessingPolicyValue","RequestingUserName","RequiredModelMBean","RescaleOp","ResolutionSyntax","ResolveResult","Resolver","ResourceBundle","ResponseCache","ResponseHandler","Result","ResultSet","ResultSetMetaData","Retention","RetentionPolicy","ReverbType","Robot","Role","RoleInfo","RoleInfoNotFoundException","RoleList","RoleNotFoundException","RoleResult","RoleStatus","RoleUnresolved","RoleUnresolvedList","RootPaneContainer","RootPaneUI","RoundRectangle2D","RoundRectangle2D.Double","RoundRectangle2D.Float","RoundingMode","RowMapper","RowSet","RowSetEvent","RowSetInternal","RowSetListener","RowSetMetaData","RowSetMetaDataImpl","RowSetReader","RowSetWarning","RowSetWriter","RuleBasedCollator","RunTime","RunTimeOperations","Runnable","Runtime","RuntimeErrorException","RuntimeException","RuntimeMBeanException","RuntimeMXBean","RuntimeOperationsException","RuntimePermission","SAXException","SAXNotRecognizedException","SAXNotSupportedException","SAXParseException","SAXParser","SAXParserFactory","SAXResult","SAXSource","SAXTransformerFactory","SERVANT_RETENTION_POLICY_ID","SQLData","SQLException","SQLInput","SQLInputImpl","SQLOutput","SQLOutputImpl","SQLPermission","SQLWarning","SSLContext","SSLContextSpi","SSLEngine","SSLEngineResult","SSLEngineResult.HandshakeStatus","SSLEngineResult.Status","SSLException","SSLHandshakeException","SSLKeyException","SSLPeerUnverifiedException","SSLPermission","SSLProtocolException","SSLServerSocket","SSLServerSocketFactory","SSLSession","SSLSessionBindingEvent","SSLSessionBindingListener","SSLSessionContext","SSLSocket","SSLSocketFactory","SUCCESSFUL","SYNC_WITH_TRANSPORT","SYSTEM_EXCEPTION","SampleModel","Sasl","SaslClient","SaslClientFactory","SaslException","SaslServer","SaslServerFactory","Savepoint","Scanner","ScatteringByteChannel","ScheduledExecutorService","ScheduledFuture","ScheduledThreadPoolExecutor","Schema","SchemaFactory","SchemaFactoryLoader","SchemaViolationException","ScrollBarUI","ScrollPane","ScrollPaneAdjustable","ScrollPaneConstants","ScrollPaneLayout","ScrollPaneLayout.UIResource","ScrollPaneUI","Scrollable","Scrollbar","SealedObject","SearchControls","SearchResult","SecretKey","SecretKeyFactory","SecretKeyFactorySpi","SecretKeySpec","SecureCacheResponse","SecureClassLoader","SecureRandom","SecureRandomSpi","Security","SecurityException","SecurityManager","SecurityPermission","Segment","SelectableChannel","SelectionKey","Selector","SelectorProvider","Semaphore","SeparatorUI","Sequence","SequenceInputStream","Sequencer","Sequencer.SyncMode","SerialArray","SerialBlob","SerialClob","SerialDatalink","SerialException","SerialJavaObject","SerialRef","SerialStruct","Serializable","SerializablePermission","Servant","ServantActivator","ServantActivatorHelper","ServantActivatorOperations","ServantActivatorPOA","ServantAlreadyActive","ServantAlreadyActiveHelper","ServantLocator","ServantLocatorHelper","ServantLocatorOperations","ServantLocatorPOA","ServantManager","ServantManagerOperations","ServantNotActive","ServantNotActiveHelper","ServantObject","ServantRetentionPolicy","ServantRetentionPolicyOperations","ServantRetentionPolicyValue","ServerCloneException","ServerError","ServerException","ServerIdHelper","ServerNotActiveException","ServerRef","ServerRequest","ServerRequestInfo","ServerRequestInfoOperations","ServerRequestInterceptor","ServerRequestInterceptorOperations","ServerRuntimeException","ServerSocket","ServerSocketChannel","ServerSocketFactory","ServiceContext","ServiceContextHelper","ServiceContextHolder","ServiceContextListHelper","ServiceContextListHolder","ServiceDetail","ServiceDetailHelper","ServiceIdHelper","ServiceInformation","ServiceInformationHelper","ServiceInformationHolder","ServiceNotFoundException","ServicePermission","ServiceRegistry","ServiceRegistry.Filter","ServiceUI","ServiceUIFactory","ServiceUnavailableException","Set","SetOfIntegerSyntax","SetOverrideType","SetOverrideTypeHelper","Severity","Shape","ShapeGraphicAttribute","SheetCollate","Short","ShortBuffer","ShortBufferException","ShortHolder","ShortLookupTable","ShortMessage","ShortSeqHelper","ShortSeqHolder","Sides","Signature","SignatureException","SignatureSpi","SignedObject","Signer","SimpleAttributeSet","SimpleBeanInfo","SimpleDateFormat","SimpleDoc","SimpleFormatter","SimpleTimeZone","SimpleType","SinglePixelPackedSampleModel","SingleSelectionModel","Size2DSyntax","SizeLimitExceededException","SizeRequirements","SizeSequence","Skeleton","SkeletonMismatchException","SkeletonNotFoundException","SliderUI","Socket","SocketAddress","SocketChannel","SocketException","SocketFactory","SocketHandler","SocketImpl","SocketImplFactory","SocketOptions","SocketPermission","SocketSecurityException","SocketTimeoutException","SoftBevelBorder","SoftReference","SortControl","SortKey","SortResponseControl","SortedMap","SortedSet","SortingFocusTraversalPolicy","Soundbank","SoundbankReader","SoundbankResource","Source","SourceDataLine","SourceLocator","SpinnerDateModel","SpinnerListModel","SpinnerModel","SpinnerNumberModel","SpinnerUI","SplitPaneUI","Spring","SpringLayout","SpringLayout.Constraints","SslRMIClientSocketFactory","SslRMIServerSocketFactory","Stack","StackOverflowError","StackTraceElement","StandardMBean","StartTlsRequest","StartTlsResponse","State","StateEdit","StateEditable","StateFactory","Statement","Statement","StreamCorruptedException","StreamHandler","StreamPrintService","StreamPrintServiceFactory","StreamResult","StreamSource","StreamTokenizer","Streamable","StreamableValue","StrictMath","String","StringBuffer","StringBufferInputStream","StringBuilder","StringCharacterIterator","StringContent","StringHolder","StringIndexOutOfBoundsException","StringMonitor","StringMonitorMBean","StringNameHelper","StringReader","StringRefAddr","StringSelection","StringSeqHelper","StringSeqHolder","StringTokenizer","StringValueExp","StringValueHelper","StringWriter","Stroke","Struct","StructMember","StructMemberHelper","Stub","StubDelegate","StubNotFoundException","Style","StyleConstants","StyleConstants.CharacterConstants","StyleConstants.ColorConstants","StyleConstants.FontConstants","StyleConstants.ParagraphConstants","StyleContext","StyleSheet","StyleSheet.BoxPainter","StyleSheet.ListPainter","StyledDocument","StyledEditorKit","StyledEditorKit.AlignmentAction","StyledEditorKit.BoldAction","StyledEditorKit.FontFamilyAction","StyledEditorKit.FontSizeAction","StyledEditorKit.ForegroundAction","StyledEditorKit.ItalicAction","StyledEditorKit.StyledTextAction","StyledEditorKit.UnderlineAction","Subject","SubjectDelegationPermission","SubjectDomainCombiner","SupportedValuesAttribute","SuppressWarnings","SwingConstants","SwingPropertyChangeSupport","SwingUtilities","SyncFactory","SyncFactoryException","SyncFailedException","SyncProvider","SyncProviderException","SyncResolver","SyncScopeHelper","SynchronousQueue","SynthConstants","SynthContext","SynthGraphicsUtils","SynthLookAndFeel","SynthPainter","SynthStyle","SynthStyleFactory","Synthesizer","SysexMessage","System","SystemColor","SystemException","SystemFlavorMap","TAG_ALTERNATE_IIOP_ADDRESS","TAG_CODE_SETS","TAG_INTERNET_IOP","TAG_JAVA_CODEBASE","TAG_MULTIPLE_COMPONENTS","TAG_ORB_TYPE","TAG_POLICIES","TAG_RMI_CUSTOM_MAX_STREAM_FORMAT","TCKind","THREAD_POLICY_ID","TIMEOUT","TRANSACTION_MODE","TRANSACTION_REQUIRED","TRANSACTION_ROLLEDBACK","TRANSACTION_UNAVAILABLE","TRANSIENT","TRANSPORT_RETRY","TabExpander","TabSet","TabStop","TabableView","TabbedPaneUI","TableCellEditor","TableCellRenderer","TableColumn","TableColumnModel","TableColumnModelEvent","TableColumnModelListener","TableHeaderUI","TableModel","TableModelEvent","TableModelListener","TableUI","TableView","TabularData","TabularDataSupport","TabularType","TagElement","TaggedComponent","TaggedComponentHelper","TaggedComponentHolder","TaggedProfile","TaggedProfileHelper","TaggedProfileHolder","Target","TargetDataLine","TargetedNotification","Templates","TemplatesHandler","Text","TextAction","TextArea","TextAttribute","TextComponent","TextEvent","TextField","TextHitInfo","TextInputCallback","TextLayout","TextLayout.CaretPolicy","TextListener","TextMeasurer","TextOutputCallback","TextSyntax","TextUI","TexturePaint","Thread","Thread.State","Thread.UncaughtExceptionHandler","ThreadDeath","ThreadFactory","ThreadGroup","ThreadInfo","ThreadLocal","ThreadMXBean","ThreadPolicy","ThreadPolicyOperations","ThreadPolicyValue","ThreadPoolExecutor","ThreadPoolExecutor.AbortPolicy","ThreadPoolExecutor.CallerRunsPolicy","ThreadPoolExecutor.DiscardOldestPolicy","ThreadPoolExecutor.DiscardPolicy","Throwable","Tie","TileObserver","Time","TimeLimitExceededException","TimeUnit","TimeZone","TimeoutException","Timer","Timer","Timer","TimerAlarmClockNotification","TimerMBean","TimerNotification","TimerTask","Timestamp","Timestamp","TitledBorder","TooManyListenersException","ToolBarUI","ToolTipManager","ToolTipUI","Toolkit","Track","TransactionRequiredException","TransactionRolledbackException","TransactionService","TransactionalWriter","TransferHandler","Transferable","TransformAttribute","Transformer","TransformerConfigurationException","TransformerException","TransformerFactory","TransformerFactoryConfigurationError","TransformerHandler","Transmitter","Transparency","TreeCellEditor","TreeCellRenderer","TreeExpansionEvent","TreeExpansionListener","TreeMap","TreeModel","TreeModelEvent","TreeModelListener","TreeNode","TreePath","TreeSelectionEvent","TreeSelectionListener","TreeSelectionModel","TreeSet","TreeUI","TreeWillExpandListener","TrustAnchor","TrustManager","TrustManagerFactory","TrustManagerFactorySpi","Type","TypeCode","TypeCodeHolder","TypeInfo","TypeInfoProvider","TypeMismatch","TypeMismatch","TypeMismatch","TypeMismatchHelper","TypeMismatchHelper","TypeNotPresentException","TypeVariable","Types","UID","UIDefaults","UIDefaults.ActiveValue","UIDefaults.LazyInputMap","UIDefaults.LazyValue","UIDefaults.ProxyLazyValue","UIManager","UIManager.LookAndFeelInfo","UIResource","ULongLongSeqHelper","ULongLongSeqHolder","ULongSeqHelper","ULongSeqHolder","UNKNOWN","UNKNOWN","UNSUPPORTED_POLICY","UNSUPPORTED_POLICY_VALUE","URI","URIException","URIResolver","URISyntax","URISyntaxException","URL","URLClassLoader","URLConnection","URLDecoder","URLEncoder","URLStreamHandler","URLStreamHandlerFactory","URLStringHelper","USER_EXCEPTION","UShortSeqHelper","UShortSeqHolder","UTFDataFormatException","UUID","UndeclaredThrowableException","UndoManager","UndoableEdit","UndoableEditEvent","UndoableEditListener","UndoableEditSupport","UnexpectedException","UnicastRemoteObject","UnionMember","UnionMemberHelper","UnknownEncoding","UnknownEncodingHelper","UnknownError","UnknownException","UnknownFormatConversionException","UnknownFormatFlagsException","UnknownGroupException","UnknownHostException","UnknownHostException","UnknownObjectException","UnknownServiceException","UnknownUserException","UnknownUserExceptionHelper","UnknownUserExceptionHolder","UnmappableCharacterException","UnmarshalException","UnmodifiableClassException","UnmodifiableSetException","UnrecoverableEntryException","UnrecoverableKeyException","Unreferenced","UnresolvedAddressException","UnresolvedPermission","UnsatisfiedLinkError","UnsolicitedNotification","UnsolicitedNotificationEvent","UnsolicitedNotificationListener","UnsupportedAddressTypeException","UnsupportedAudioFileException","UnsupportedCallbackException","UnsupportedCharsetException","UnsupportedClassVersionError","UnsupportedEncodingException","UnsupportedFlavorException","UnsupportedLookAndFeelException","UnsupportedOperationException","UserDataHandler","UserException","Util","UtilDelegate","Utilities","VMID","VM_ABSTRACT","VM_CUSTOM","VM_NONE","VM_TRUNCATABLE","Validator","ValidatorHandler","ValueBase","ValueBaseHelper","ValueBaseHolder","ValueExp","ValueFactory","ValueHandler","ValueHandlerMultiFormat","ValueInputStream","ValueMember","ValueMemberHelper","ValueOutputStream","VariableHeightLayoutCache","Vector","VerifyError","VersionSpecHelper","VetoableChangeListener","VetoableChangeListenerProxy","VetoableChangeSupport","View","ViewFactory","ViewportLayout","ViewportUI","VirtualMachineError","Visibility","VisibilityHelper","VoiceStatus","Void","VolatileImage","WCharSeqHelper","WCharSeqHolder","WStringSeqHelper","WStringSeqHolder","WStringValueHelper","WeakHashMap","WeakReference","WebRowSet","WildcardType","Window","WindowAdapter","WindowConstants","WindowEvent","WindowFocusListener","WindowListener","WindowStateListener","WrappedPlainView","WritableByteChannel","WritableRaster","WritableRenderedImage","WriteAbortedException","Writer","WrongAdapter","WrongAdapterHelper","WrongPolicy","WrongPolicyHelper","WrongTransaction","WrongTransactionHelper","WrongTransactionHolder","X500Principal","X500PrivateCredential","X509CRL","X509CRLEntry","X509CRLSelector","X509CertSelector","X509Certificate","X509Certificate","X509EncodedKeySpec","X509ExtendedKeyManager","X509Extension","X509KeyManager","X509TrustManager","XAConnection","XADataSource","XAException","XAResource","XMLConstants","XMLDecoder","XMLEncoder","XMLFilter","XMLFilterImpl","XMLFormatter","XMLGregorianCalendar","XMLParseException","XMLReader","XMLReaderAdapter","XMLReaderFactory","XPath","XPathConstants","XPathException","XPathExpression","XPathExpressionException","XPathFactory","XPathFactoryConfigurationException","XPathFunction","XPathFunctionException","XPathFunctionResolver","XPathVariableResolver","Xid","XmlReader","XmlWriter","ZipEntry","ZipException","ZipFile","ZipInputStream","ZipOutputStream","ZoneView","_BindingIteratorImplBase","_BindingIteratorStub","_DynAnyFactoryStub","_DynAnyStub","_DynArrayStub","_DynEnumStub","_DynFixedStub","_DynSequenceStub","_DynStructStub","_DynUnionStub","_DynValueStub","_IDLTypeStub","_NamingContextExtStub","_NamingContextImplBase","_NamingContextStub","_PolicyStub","_Remote_Stub","_ServantActivatorStub","_ServantLocatorStub","AbstractAnnotationValueVisitor6","AbstractElementVisitor6","AbstractMarshallerImpl","AbstractOwnableSynchronizer","AbstractProcessor","AbstractQueuedLongSynchronizer","AbstractScriptEngine","AbstractTypeVisitor6","AbstractUnmarshallerImpl","ActivationDataFlavor","AlgorithmMethod","AnnotationMirror","AnnotationValue","AnnotationValueVisitor","ArrayDeque","AsyncHandler","AttachmentMarshaller","AttachmentPart","AttachmentUnmarshaller","Binder","BindingProvider","Bindings","BlockingDeque","BreakIteratorProvider","C14NMethodParameterSpec","CanonicalizationMethod","Characters","ClientInfoStatus","CollapsedStringAdapter","CollatorProvider","CommandInfo","CommandMap","CommandObject","CommonDataSource","Compilable","CompiledScript","Completion","Completions","CompositeDataInvocationHandler","CompositeDataView","ConcurrentNavigableMap","ConcurrentSkipListMap","ConcurrentSkipListSet","ConfigurationSpi","Console","ConstructorProperties","CookieManager","CookiePolicy","CookieStore","CurrencyNameProvider","Data","DataContentHandler","DataContentHandlerFactory","DataHandler","DatatypeConverter","DatatypeConverterInterface","DateFormatProvider","DateFormatSymbolsProvider","DecimalFormatSymbolsProvider","DeclaredType","DefaultRowSorter","DefaultValidationEventHandler","DeflaterInputStream","Deque","DescriptorKey","DescriptorRead","Desktop","Detail","DetailEntry","Diagnostic","DiagnosticCollector","DiagnosticListener","DigestMethod","DigestMethodParameterSpec","Dispatch","DOMCryptoContext","DomHandler","DOMSignContext","DOMStructure","DOMURIReference","DOMValidateContext","DropMode","ElementFilter","ElementKind","ElementKindVisitor6","Elements","ElementScanner6","ElementVisitor","EndDocument","EndElement","Endpoint","EntityDeclaration","ErrorType","EventException","EventFilter","EventReaderDelegate","EventTarget","ExcC14NParameterSpec","ExecutableElement","ExecutableType","FileDataSource","FileNameExtensionFilter","FileObject","Filer","FilerException","FileTypeMap","ForwardingFileObject","ForwardingJavaFileManager","ForwardingJavaFileObject","Generated","GridBagLayoutInfo","GroupLayout","HandlerChain","HandlerResolver","HexBinaryAdapter","HMACParameterSpec","Holder","HTTPBinding","HttpCookie","HTTPException","IDN","ImmutableDescriptor","InflaterOutputStream","InitParam","InterfaceAddress","Invocable","IOError","JavaCompiler","JavaFileManager","JavaFileObject","JAXBContext","JAXBElement","JAXBException","JAXBIntrospector","JAXBResult","JAXBSource","JMX","JMXAddressable","KeyInfo","KeyInfoFactory","KeyName","KeySelector","KeySelectorException","KeySelectorResult","KeyValue","LayoutPath","LayoutStyle","LinearGradientPaint","LinkedBlockingDeque","LocaleNameProvider","LocaleServiceProvider","Location","LockInfo","LogicalHandler","LogicalMessage","LogicalMessageContext","MailcapCommandMap","Marshaller","MessageContext","MessageFactory","Messager","MimeHeader","MimeHeaders","MimeType","MimeTypeParameterList","MimetypesFileTypeMap","MirroredTypeException","MirroredTypesException","MLetContent","MonitorInfo","MultipleGradientPaint","MutationEvent","MXBean","Namespace","NavigableMap","NavigableSet","NClob","NestingKind","NodeSetData","NormalizedStringAdapter","Normalizer","NoSuchMechanismException","NotationDeclaration","NotIdentifiableEvent","NotIdentifiableEventImpl","NoType","NullType","NumberFormatProvider","OctetStreamData","Oneway","OptionChecker","PackageElement","ParseConversionEvent","ParseConversionEventImpl","Path2D","PGPData","PolicySpi","PortInfo","PostConstruct","PreDestroy","PrimitiveType","PrintConversionEvent","PrintConversionEventImpl","ProcessingEnvironment","Processor","PropertyException","RadialGradientPaint","ReferenceType","RequestWrapper","Resource","Resources","Response","ResponseWrapper","RetrievalMethod","RoundEnvironment","RowFilter","RowId","RowIdLifetime","RowSorter","RowSorterEvent","RowSorterListener","RunnableFuture","RunnableScheduledFuture","SAAJMetaFactory","SAAJResult","SchemaOutputResolver","ScriptContext","ScriptEngine","ScriptEngineFactory","ScriptEngineManager","ScriptException","Service","ServiceConfigurationError","ServiceDelegate","ServiceLoader","ServiceMode","SignatureMethod","SignatureMethodParameterSpec","SignatureProperties","SignatureProperty","SignedInfo","SimpleAnnotationValueVisitor6","SimpleBindings","SimpleElementVisitor6","SimpleJavaFileObject","SimpleScriptContext","SimpleTypeVisitor6","SOAPBinding","SOAPBinding","SOAPBody","SOAPBodyElement","SOAPConnection","SOAPConnectionFactory","SOAPConstants","SOAPElement","SOAPElementFactory","SOAPEnvelope","SOAPException","SOAPFactory","SOAPFault","SOAPFaultElement","SOAPFaultException","SOAPHandler","SOAPHeader","SOAPHeaderElement","SOAPMessage","SOAPMessageContext","SOAPMessageHandler","SOAPMessageHandlers","SOAPPart","SortOrder","SourceVersion","SplashScreen","SQLClientInfoException","SQLDataException","SQLFeatureNotSupportedException","SQLIntegrityConstraintViolationException","SQLInvalidAuthorizationSpecException","SQLNonTransientConnectionException","SQLNonTransientException","SQLRecoverableException","SQLSyntaxErrorException","SQLTimeoutException","SQLTransactionRollbackException","SQLTransientConnectionException","SQLTransientException","SQLXML","SSLParameters","StandardEmitterMBean","StandardJavaFileManager","StandardLocation","StartDocument","StartElement","StatementEvent","StatementEventListener","StAXResult","StAXSource","StreamFilter","StreamReaderDelegate","SupportedAnnotationTypes","SupportedOptions","SupportedSourceVersion","SwingWorker","SystemTray","TableRowSorter","TableStringConverter","TimeZoneNameProvider","Tool","ToolProvider","Transform","TransformException","TransformParameterSpec","TransformService","TrayIcon","TypeConstraintException","TypeElement","TypeKind","TypeKindVisitor6","TypeMirror","TypeParameterElement","TypeVisitor","UIEvent","UnknownAnnotationValueException","UnknownElementException","UnknownTypeException","Unmarshaller","UnmarshallerHandler","UnsupportedDataTypeException","URIDereferencer","URIParameter","URIReference","URIReferenceException","URLDataSource","ValidationEvent","ValidationEventCollector","ValidationEventHandler","ValidationEventImpl","ValidationEventLocator","ValidationEventLocatorImpl","ValidationException","VariableElement","W3CDomHandler","WebEndpoint","WebFault","WebMethod","WebParam","WebResult","WebService","WebServiceClient","WebServiceContext","WebServiceException","WebServicePermission","WebServiceProvider","WebServiceRef","WebServiceRefs","Wrapper","X509Data","X509IssuerSerial","XmlAccessOrder","XmlAccessorOrder","XmlAccessorType","XmlAccessType","XmlAdapter","XmlAnyAttribute","XmlAnyElement","XmlAttachmentRef","XmlAttribute","XMLCryptoContext","XmlElement","XmlElementDecl","XmlElementRef","XmlElementRefs","XmlElements","XmlElementWrapper","XmlEnum","XmlEnumValue","XMLEvent","XMLEventAllocator","XMLEventConsumer","XMLEventFactory","XMLEventReader","XMLEventWriter","XmlID","XmlIDREF","XmlInlineBinaryData","XMLInputFactory","XmlJavaTypeAdapter","XmlJavaTypeAdapters","XmlList","XmlMimeType","XmlMixed","XmlNs","XmlNsForm","XMLObject","XMLOutputFactory","XmlRegistry","XMLReporter","XMLResolver","XmlRootElement","XmlSchema","XmlSchemaType","XmlSchemaTypes","XMLSignature","XMLSignatureException","XMLSignatureFactory","XMLSignContext","XMLStreamConstants","XMLStreamException","XMLStreamReader","XMLStreamWriter","XMLStructure","XmlTransient","XmlType","XMLValidateContext","XmlValue","XPathFilter2ParameterSpec","XPathFilterParameterSpec","XPathType","XSLTTransformParameterSpec","ZipError"] >>= withAttribute "Java15"))
+                        <|>
+                        (withChildren (pFloat >>= withAttribute "Float") ((pAnyChar "fF" >>= withAttribute "Float")))
+                        <|>
+                        ((pHlCOct >>= withAttribute "Octal"))
+                        <|>
+                        ((pHlCHex >>= withAttribute "Hex"))
+                        <|>
+                        (withChildren (pInt >>= withAttribute "Decimal") (((pString False "ULL" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "LUL" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "LLU" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "UL" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "LU" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "LL" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "U" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "L" >>= withAttribute "Decimal"))))
+                        <|>
+                        ((pHlCChar >>= withAttribute "Char"))
+                        <|>
+                        ((pRegExpr (compileRegex "'\\\\u[0-9a-fA-F]{4}'") >>= withAttribute "Char"))
+                        <|>
+                        ((pRegExpr (compileRegex "//\\s*BEGIN.*$") >>= withAttribute "Decimal"))
+                        <|>
+                        ((pRegExpr (compileRegex "//\\s*END.*$") >>= withAttribute "Decimal"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((pRegExpr (compileRegex "\\.(format|printf)\\b") >>= withAttribute "Function") >>~ pushContext "EnterPrintf")
+                        <|>
+                        ((pDetect2Chars False '/' '/' >>= withAttribute "Comment") >>~ pushContext "Commentar 1")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "Commentar 2")
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Symbol"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Symbol"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\.{3,3}\\s+") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b(import\\s+static)\\b") >>= withAttribute "Keyword") >>~ pushContext "StaticImports")
+                        <|>
+                        ((pRegExpr (compileRegex "\\b(package|import)\\b") >>= withAttribute "Keyword") >>~ pushContext "Imports")
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[_\\w][_\\w\\d]*(?=[\\s]*(/\\*\\s*\\d+\\s*\\*/\\s*)?[(])") >>= withAttribute "Function"))
+                        <|>
+                        ((pRegExpr (compileRegex "[.]{1,1}") >>= withAttribute "Symbol") >>~ pushContext "Member")
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Symbol") >>~ pushContext "InFunctionCall")
+                        <|>
+                        ((pAnyChar ":!%&+,-/.*<=>?[]|~^;" >>= withAttribute "Symbol")))
+     return (attr, result)
+
+parseRules "InFunctionCall" = 
+  do (attr, result) <- (((parseRules "Normal"))
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Symbol") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "String" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "String"))
+                        <|>
+                        ((pHlCStringChar >>= withAttribute "String Char"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\u[0-9a-fA-F]{4}") >>= withAttribute "String Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "EnterPrintf" = 
+  do (attr, result) <- (((pDetectChar False '(' >>= withAttribute "Symbol") >>~ pushContext "Printf")
+                        <|>
+                        ((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "Printf" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "PrintfString")
+                        <|>
+                        ((parseRules "InFunctionCall")))
+     return (attr, result)
+
+parseRules "PrintfString" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "String"))
+                        <|>
+                        ((pHlCStringChar >>= withAttribute "String Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "%(\\d+\\$)?(-|#|\\+|\\ |0|,|\\()*\\d*(\\.\\d+)?[a-hosxA-CEGHSX]") >>= withAttribute "String Char"))
+                        <|>
+                        ((pRegExpr (compileRegex "%(\\d+\\$)?(-|#|\\+|\\ |0|,|\\()*\\d*(t|T)(a|A|b|B|c|C|d|D|e|F|h|H|I|j|k|l|L|m|M|N|p|P|Q|r|R|s|S|T|y|Y|z|Z)") >>= withAttribute "String Char"))
+                        <|>
+                        ((pRegExpr (compileRegex "%(%|n)") >>= withAttribute "String Char")))
+     return (attr, result)
+
+parseRules "Member" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\b[_a-zA-Z]\\w*(?=[\\s]*)") >>= withAttribute "Function") >>~ (popContext >> return ()))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "StaticImports" = 
+  do (attr, result) <- ((pRegExpr (compileRegex "\\s*.*;") >>= withAttribute "StaticImports") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Imports" = 
+  do (attr, result) <- ((pRegExpr (compileRegex "\\s*.*;") >>= withAttribute "Imports") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Commentar 1" = 
+  pzero
+
+parseRules "Commentar 2" = 
+  do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Javadoc.hs b/Text/Highlighting/Kate/Syntax/Javadoc.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Javadoc.hs
@@ -0,0 +1,241 @@
+{- This module was generated from data in the Kate syntax highlighting file javadoc.xml, version 1.03,
+   by  Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br) -}
+
+module Text.Highlighting.Kate.Syntax.Javadoc ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Html
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Javadoc"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = ""
+
+-- | 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 = "Javadoc" }
+  context <- currentContext <|> (pushContext "Start" >> 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 [("Javadoc",["Start"])], synStLanguage = "Javadoc", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Start" -> return ()
+    "FindJavadoc" -> return ()
+    "JavadocFSar" -> return ()
+    "Javadocar" -> return ()
+    "JavadocParam" -> (popContext >> return ())
+    "InlineTagar" -> (popContext >> return ())
+    "LiteralTagar" -> (popContext >> return ())
+    "SeeTag" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("BlockTag","Keyword"),("InlineTag","Keyword"),("JavadocParam","Keyword"),("SeeTag","Keyword"),("JavadocFS","Comment"),("Javadoc","Comment")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Start","Normal Text"),("FindJavadoc","Normal Text"),("JavadocFSar","JavadocFS"),("Javadocar","Javadoc"),("JavadocParam","Javadoc"),("InlineTagar","InlineTag"),("LiteralTagar","InlineTag"),("SeeTag","SeeTag")]
+
+parseRules "Start" = 
+  do (attr, result) <- ((parseRules "FindJavadoc"))
+     return (attr, result)
+
+parseRules "FindJavadoc" = 
+  do (attr, result) <- ((pString False "/**" >>= withAttribute "JavadocFS") >>~ pushContext "JavadocFSar")
+     return (attr, result)
+
+parseRules "JavadocFSar" = 
+  do (attr, result) <- (((pDetect2Chars False '*' '/' >>= withAttribute "JavadocFS") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "(!|\\?)") >>= withAttribute "JavadocFS") >>~ pushContext "Javadocar")
+                        <|>
+                        ((pRegExpr (compileRegex "(\\.\\s*$)") >>= withAttribute "JavadocFS") >>~ pushContext "Javadocar")
+                        <|>
+                        ((pRegExpr (compileRegex "(\\.\\s)(?![\\da-z])") >>= withAttribute "JavadocFS") >>~ pushContext "Javadocar")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "\\**\\s*(?=@(author|deprecated|exception|param|return|see|serial|serialData|serialField|since|throws|version)(\\s|$))") >>= withAttribute "JavadocFS") >>~ pushContext "Javadocar")
+                        <|>
+                        ((pString False "{@code " >>= withAttribute "InlineTag") >>~ pushContext "LiteralTagar")
+                        <|>
+                        ((pString False "{@code\t" >>= withAttribute "InlineTag") >>~ pushContext "LiteralTagar")
+                        <|>
+                        ((pString False "{@docRoot}" >>= withAttribute "InlineTag"))
+                        <|>
+                        ((pString False "{@inheritDoc}" >>= withAttribute "InlineTag"))
+                        <|>
+                        ((pString False "{@link " >>= withAttribute "InlineTag") >>~ pushContext "InlineTagar")
+                        <|>
+                        ((pString False "{@link\t" >>= withAttribute "InlineTag") >>~ pushContext "InlineTagar")
+                        <|>
+                        ((pString False "{@linkplain " >>= withAttribute "InlineTag") >>~ pushContext "InlineTagar")
+                        <|>
+                        ((pString False "{@linkplain\t" >>= withAttribute "InlineTag") >>~ pushContext "InlineTagar")
+                        <|>
+                        ((pString False "{@literal " >>= withAttribute "InlineTag") >>~ pushContext "LiteralTagar")
+                        <|>
+                        ((pString False "{@literal\t" >>= withAttribute "InlineTag") >>~ pushContext "LiteralTagar")
+                        <|>
+                        ((pString False "{@value}" >>= withAttribute "InlineTag"))
+                        <|>
+                        ((pString False "{@value " >>= withAttribute "InlineTag") >>~ pushContext "InlineTagar")
+                        <|>
+                        ((pString False "{@value\t" >>= withAttribute "InlineTag") >>~ pushContext "InlineTagar")
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Html.parseExpression >>= ((withAttribute "") . snd))))
+     return (attr, result)
+
+parseRules "Javadocar" = 
+  do (attr, result) <- (((pDetect2Chars False '*' '/' >>= withAttribute "JavadocFS") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "\\*+(?!/)") >>= withAttribute "JavadocFS"))
+                        <|>
+                        ((pString False "@author " >>= withAttribute "BlockTag"))
+                        <|>
+                        ((pString False "@deprecated " >>= withAttribute "BlockTag"))
+                        <|>
+                        ((pString False "@exception " >>= withAttribute "BlockTag") >>~ pushContext "JavadocParam")
+                        <|>
+                        ((pString False "@param " >>= withAttribute "BlockTag") >>~ pushContext "JavadocParam")
+                        <|>
+                        ((pString False "@return " >>= withAttribute "BlockTag"))
+                        <|>
+                        ((pString False "@see " >>= withAttribute "BlockTag") >>~ pushContext "SeeTag")
+                        <|>
+                        ((pString False "@serial " >>= withAttribute "BlockTag"))
+                        <|>
+                        ((pString False "@serialData " >>= withAttribute "BlockTag"))
+                        <|>
+                        ((pString False "@serialField " >>= withAttribute "BlockTag"))
+                        <|>
+                        ((pString False "@since " >>= withAttribute "BlockTag"))
+                        <|>
+                        ((pString False "@throws " >>= withAttribute "BlockTag") >>~ pushContext "JavadocParam")
+                        <|>
+                        ((pString False "@version " >>= withAttribute "BlockTag"))
+                        <|>
+                        ((pString False "@author\t" >>= withAttribute "BlockTag"))
+                        <|>
+                        ((pString False "@deprecated\t" >>= withAttribute "BlockTag"))
+                        <|>
+                        ((pString False "@exception\t" >>= withAttribute "BlockTag") >>~ pushContext "JavadocParam")
+                        <|>
+                        ((pString False "@param\t" >>= withAttribute "BlockTag") >>~ pushContext "JavadocParam")
+                        <|>
+                        ((pString False "@return\t" >>= withAttribute "BlockTag"))
+                        <|>
+                        ((pString False "@see\t" >>= withAttribute "BlockTag") >>~ pushContext "SeeTag")
+                        <|>
+                        ((pString False "@serial\t" >>= withAttribute "BlockTag"))
+                        <|>
+                        ((pString False "@serialData\t" >>= withAttribute "BlockTag"))
+                        <|>
+                        ((pString False "@serialField\t" >>= withAttribute "BlockTag"))
+                        <|>
+                        ((pString False "@since\t" >>= withAttribute "BlockTag"))
+                        <|>
+                        ((pString False "@throws\t" >>= withAttribute "BlockTag") >>~ pushContext "JavadocParam")
+                        <|>
+                        ((pString False "@version\t" >>= withAttribute "BlockTag"))
+                        <|>
+                        ((pString False "{@code " >>= withAttribute "InlineTag") >>~ pushContext "LiteralTagar")
+                        <|>
+                        ((pString False "{@code\t" >>= withAttribute "InlineTag") >>~ pushContext "LiteralTagar")
+                        <|>
+                        ((pString False "{@docRoot}" >>= withAttribute "InlineTag"))
+                        <|>
+                        ((pString False "{@inheritDoc}" >>= withAttribute "InlineTag"))
+                        <|>
+                        ((pString False "{@link " >>= withAttribute "InlineTag") >>~ pushContext "InlineTagar")
+                        <|>
+                        ((pString False "{@link\t" >>= withAttribute "InlineTag") >>~ pushContext "InlineTagar")
+                        <|>
+                        ((pString False "{@linkplain " >>= withAttribute "InlineTag") >>~ pushContext "InlineTagar")
+                        <|>
+                        ((pString False "{@linkplain\t" >>= withAttribute "InlineTag") >>~ pushContext "InlineTagar")
+                        <|>
+                        ((pString False "{@literal " >>= withAttribute "InlineTag") >>~ pushContext "LiteralTagar")
+                        <|>
+                        ((pString False "{@literal\t" >>= withAttribute "InlineTag") >>~ pushContext "LiteralTagar")
+                        <|>
+                        ((pString False "{@value}" >>= withAttribute "InlineTag"))
+                        <|>
+                        ((pString False "{@value " >>= withAttribute "InlineTag") >>~ pushContext "InlineTagar")
+                        <|>
+                        ((pString False "{@value\t" >>= withAttribute "InlineTag") >>~ pushContext "InlineTagar")
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Html.parseExpression >>= ((withAttribute "") . snd))))
+     return (attr, result)
+
+parseRules "JavadocParam" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Javadoc"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S*(?=\\*/)") >>= withAttribute "JavadocParam") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S*(\\s|$)") >>= withAttribute "JavadocParam") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "InlineTagar" = 
+  do (attr, result) <- (((pDetectChar False '}' >>= withAttribute "InlineTag") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetect2Chars False '*' '/' >>= withAttribute "JavadocFS") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Html.parseExpression >>= ((withAttribute "") . snd))))
+     return (attr, result)
+
+parseRules "LiteralTagar" = 
+  do (attr, result) <- (((pDetectChar False '}' >>= withAttribute "InlineTag") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetect2Chars False '*' '/' >>= withAttribute "JavadocFS") >>~ (popContext >> popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "SeeTag" = 
+  do (attr, result) <- (((pDetect2Chars False '*' '/' >>= withAttribute "JavadocFS") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Html.parseExpression >>= ((withAttribute "") . snd))))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Javascript.hs b/Text/Highlighting/Kate/Syntax/Javascript.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Javascript.hs
@@ -0,0 +1,216 @@
+{- This module was generated from data in the Kate syntax highlighting file javascript.xml, version 1.11,
+   by  Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net) -}
+
+module Text.Highlighting.Kate.Syntax.Javascript ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Alert
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "JavaScript"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.js"
+
+-- | 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 = "JavaScript" }
+  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 [("JavaScript",["Normal"])], synStLanguage = "JavaScript", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "String" -> (popContext >> return ())
+    "String 1" -> (popContext >> return ())
+    "Comment" -> (popContext >> return ())
+    "Multi/inline Comment" -> return ()
+    "Regular Expression" -> return ()
+    "(Internal regex catch)" -> return ()
+    "Regular Expression Character Class" -> return ()
+    "(regex caret first check)" -> (popContext >> return ())
+    "(charclass caret first check)" -> (popContext >> return ())
+    "region_marker" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Function","Function"),("Objects","Keyword"),("Math","Keyword"),("Events","Keyword"),("Data Type","DataType"),("Decimal","DecVal"),("Float","Float"),("Char","Char"),("String","String"),("String Char","Char"),("Comment","Comment"),("Symbol","Normal"),("Regular Expression","Others"),("Pattern Internal Operator","Float"),("Pattern Character Class","BaseN"),("Region Marker","RegionMarker")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal Text"),("String","String"),("String 1","String Char"),("Comment","Comment"),("Multi/inline Comment","Comment"),("Regular Expression","Regular Expression"),("(Internal regex catch)","Normal Text"),("Regular Expression Character Class","Pattern Character Class"),("(regex caret first check)","Pattern Internal Operator"),("(charclass caret first check)","Pattern Internal Operator"),("region_marker","Region Marker")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pString False "//BEGIN" >>= withAttribute "Region Marker") >>~ pushContext "region_marker")
+                        <|>
+                        ((pRegExpr (compileRegex "//END") >>= withAttribute "Region Marker") >>~ pushContext "region_marker")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["if","else","for","in","while","do","continue","break","with","try","catch","finally","switch","case","new","var","function","return","delete","true","false","void","throw","typeof","const","default"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["escape","isFinite","isNaN","Number","parseFloat","parseInt","reload","taint","unescape","untaint","write"] >>= withAttribute "Function"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["Anchor","Applet","Area","Array","Boolean","Button","Checkbox","Date","document","window","Image","FileUpload","Form","Frame","Function","Hidden","Link","MimeType","Math","Max","Min","Layer","navigator","Object","Password","Plugin","Radio","RegExp","Reset","Screen","Select","String","Text","Textarea","this","Window"] >>= withAttribute "Objects"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["abs","acos","asin","atan","atan2","ceil","cos","ctg","E","exp","floor","LN2","LN10","log","LOG2E","LOG10E","PI","pow","round","sin","sqrt","SQRT1_2","SQRT2","tan"] >>= withAttribute "Math"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["onAbort","onBlur","onChange","onClick","onError","onFocus","onLoad","onMouseOut","onMouseOver","onReset","onSelect","onSubmit","onUnload"] >>= withAttribute "Events"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["above","action","alinkColor","alert","anchor","anchors","appCodeName","applets","apply","appName","appVersion","argument","arguments","arity","availHeight","availWidth","back","background","below","bgColor","border","big","blink","blur","bold","border","call","caller","charAt","charCodeAt","checked","clearInterval","clearTimeout","click","clip","close","closed","colorDepth","complete","compile","constructor","confirm","cookie","current","cursor","data","defaultChecked","defaultSelected","defaultStatus","defaultValue","description","disableExternalCapture","domain","elements","embeds","enabledPlugin","enableExternalCapture","encoding","eval","exec","fgColor","filename","find","fixed","focus","fontcolor","fontsize","form","forms","formName","forward","frames","fromCharCode","getDate","getDay","getHours","getMiliseconds","getMinutes","getMonth","getSeconds","getSelection","getTime","getTimezoneOffset","getUTCDate","getUTCDay","getUTCFullYear","getUTCHours","getUTCMilliseconds","getUTCMinutes","getUTCMonth","getUTCSeconds","getYear","global","go","hash","height","history","home","host","hostname","href","hspace","ignoreCase","images","index","indexOf","innerHeight","innerWidth","input","italics","javaEnabled","join","language","lastIndex","lastIndexOf","lastModified","lastParen","layers","layerX","layerY","left","leftContext","length","link","linkColor","links","location","locationbar","load","lowsrc","match","MAX_VALUE","menubar","method","mimeTypes","MIN_VALUE","modifiers","moveAbove","moveBelow","moveBy","moveTo","moveToAbsolute","multiline","name","NaN","NEGATIVE_INFINITY","negative_infinity","next","open","opener","options","outerHeight","outerWidth","pageX","pageY","pageXoffset","pageYoffset","parent","parse","pathname","personalbar","pixelDepth","platform","plugins","pop","port","POSITIVE_INFINITY","positive_infinity","preference","previous","print","prompt","protocol","prototype","push","referrer","refresh","releaseEvents","reload","replace","reset","resizeBy","resizeTo","reverse","rightContext","screenX","screenY","scroll","scrollbar","scrollBy","scrollTo","search","select","selected","selectedIndex","self","setDate","setHours","setMinutes","setMonth","setSeconds","setTime","setTimeout","setUTCDate","setUTCDay","setUTCFullYear","setUTCHours","setUTCMilliseconds","setUTCMinutes","setUTCMonth","setUTCSeconds","setYear","shift","siblingAbove","siblingBelow","small","sort","source","splice","split","src","status","statusbar","strike","sub","submit","substr","substring","suffixes","sup","taintEnabled","target","test","text","title","toGMTString","toLocaleString","toLowerCase","toolbar","toSource","toString","top","toUpperCase","toUTCString","type","URL","unshift","unwatch","userAgent","UTC","value","valueOf","visibility","vlinkColor","vspace","width","watch","which","width","write","writeln","x","y","zIndex"] >>= withAttribute "Data Type"))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pFloat >>= withAttribute "Float"))
+                        <|>
+                        ((pInt >>= withAttribute "Decimal"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "String") >>~ pushContext "String 1")
+                        <|>
+                        ((pDetect2Chars False '/' '/' >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "Multi/inline Comment")
+                        <|>
+                        ((pRegExpr (compileRegex "[=?:]") >>= withAttribute "Normal Text") >>~ pushContext "(Internal regex catch)")
+                        <|>
+                        ((pRegExpr (compileRegex "\\(") >>= withAttribute "Normal Text") >>~ pushContext "(Internal regex catch)")
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Symbol"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Symbol"))
+                        <|>
+                        ((pAnyChar ":!%&+,-/.*<=>?[]|~^;" >>= withAttribute "Symbol")))
+     return (attr, result)
+
+parseRules "String" = 
+  do (attr, result) <- (((pDetectIdentifier >>= withAttribute "String"))
+                        <|>
+                        ((pHlCStringChar >>= withAttribute "String Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "String 1" = 
+  do (attr, result) <- (((pDetectIdentifier >>= withAttribute "String Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "String Char") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Comment" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Comment")))
+     return (attr, result)
+
+parseRules "Multi/inline Comment" = 
+  do (attr, result) <- (((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Regular Expression" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "/[ig]{0,2}") >>= withAttribute "Regular Expression") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\{[\\d, ]+\\}") >>= withAttribute "Pattern Internal Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\[bB]") >>= withAttribute "Pattern Internal Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\[nrtvfDdSsWw]") >>= withAttribute "Pattern Character Class"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Pattern Character Class") >>~ pushContext "(charclass caret first check)")
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\.") >>= withAttribute "Pattern Internal Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$(?=/)") >>= withAttribute "Pattern Internal Operator"))
+                        <|>
+                        ((pAnyChar "?+*()|" >>= withAttribute "Pattern Internal Operator")))
+     return (attr, result)
+
+parseRules "(Internal regex catch)" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "//(?=;)") >>= withAttribute "Regular Expression") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetect2Chars False '/' '/' >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "Multi/inline Comment")
+                        <|>
+                        ((pDetectChar False '/' >>= withAttribute "Regular Expression") >>~ pushContext "(regex caret first check)")
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "Regular Expression Character Class" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\[\\[\\]]") >>= withAttribute "Pattern Character Class"))
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "Pattern Character Class") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "(regex caret first check)" = 
+  do (attr, result) <- (((pDetectChar False '^' >>= withAttribute "Pattern Internal Operator") >>~ pushContext "Regular Expression")
+                        <|>
+                        (pushContext "Regular Expression" >> return ([], "")))
+     return (attr, result)
+
+parseRules "(charclass caret first check)" = 
+  do (attr, result) <- (((pDetectChar False '^' >>= withAttribute "Pattern Internal Operator") >>~ pushContext "Regular Expression Character Class")
+                        <|>
+                        (pushContext "Regular Expression Character Class" >> return ([], "")))
+     return (attr, result)
+
+parseRules "region_marker" = 
+  do (attr, result) <- (((pDetectIdentifier >>= withAttribute "Region Marker"))
+                        <|>
+                        ((pDetectSpaces >>= withAttribute "Region Marker")))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Json.hs b/Text/Highlighting/Kate/Syntax/Json.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Json.hs
@@ -0,0 +1,146 @@
+{- This module was generated from data in the Kate syntax highlighting file json.xml, version 1.00,
+   by  Sebastian Pipping (webmaster@hartwork.org) -}
+
+module Text.Highlighting.Kate.Syntax.Json ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "JSON"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.json"
+
+-- | 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 = "JSON" }
+  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 [("JSON",["Normal"])], synStLanguage = "JSON", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "Pair" -> return ()
+    "String_Key" -> return ()
+    "Value" -> return ()
+    "String_Value" -> return ()
+    "Array" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Style_Normal","Normal"),("Style_Seperator_Pair","Normal"),("Style_Seperator_Array","Normal"),("Style_Decimal","DecVal"),("Style_Float","Float"),("Style_String_Key","DataType"),("Style_String_Value","String"),("Style_String_Key_Char","DataType"),("Style_String_Value_Char","String"),("Style_Keyword","DecVal"),("Style_Error","Error")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Style_Error"),("Pair","Style_Error"),("String_Key","Style_String_Key"),("Value","Style_Error"),("String_Value","Style_String_Value"),("Array","Style_Error")]
+
+parseRules "Normal" = 
+  do (attr, result) <- ((pDetectChar False '{' >>= withAttribute "Style_Seperator_Pair") >>~ pushContext "Pair")
+     return (attr, result)
+
+parseRules "Pair" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "Style_String_Key") >>~ pushContext "String_Key")
+                        <|>
+                        ((pDetectChar False ':' >>= withAttribute "Style_Seperator_Pair") >>~ pushContext "Value")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Style_Seperator_Pair") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False ',' >>= withAttribute "Style_Seperator_Pair"))
+                        <|>
+                        ((pDetectSpaces >>= withAttribute "Style_Normal")))
+     return (attr, result)
+
+parseRules "String_Key" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "Style_String_Key") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\(?:[\"\\\\/bfnrt]|u[0-9a-fA-f]{4})") >>= withAttribute "Style_String_Key_Char")))
+     return (attr, result)
+
+parseRules "Value" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "Style_String_Value") >>~ pushContext "String_Value")
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Style_Seperator_Pair") >>~ pushContext "Pair")
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Style_Seperator_Array") >>~ pushContext "Array")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Style_Error") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False ',' >>= withAttribute "Style_Error") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectSpaces >>= withAttribute "Style_Normal"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["null","true","false"] >>= withAttribute "Style_Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "-?(?:[0-9]|[1-9][0-9]+)\\.[0-9]+(?:[eE][+-]?[0-9]+)?") >>= withAttribute "Style_Float"))
+                        <|>
+                        ((pRegExpr (compileRegex "-?(?:[0-9]|[1-9][0-9]+)(?:[eE][+-]?[0-9]+)?") >>= withAttribute "Style_Decimal")))
+     return (attr, result)
+
+parseRules "String_Value" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "Style_String_Value") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\(?:[\"\\\\/bfnrt]|u[0-9a-fA-f]{4})") >>= withAttribute "Style_String_Value_Char")))
+     return (attr, result)
+
+parseRules "Array" = 
+  do (attr, result) <- (((pDetectChar False ',' >>= withAttribute "Style_Seperator_Array"))
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "Style_Seperator_Array") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Style_Seperator_Pair") >>~ pushContext "Pair")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Style_String_Value") >>~ pushContext "String_Value")
+                        <|>
+                        ((pDetectSpaces >>= withAttribute "Style_Normal"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["null","true","false"] >>= withAttribute "Style_Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "-?(?:[0-9]|[1-9][0-9]+)\\.[0-9]+(?:[eE][+-]?[0-9]+)?") >>= withAttribute "Style_Float"))
+                        <|>
+                        ((pRegExpr (compileRegex "-?(?:[0-9]|[1-9][0-9]+)(?:[eE][+-]?[0-9]+)?") >>= withAttribute "Style_Decimal")))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Latex.hs b/Text/Highlighting/Kate/Syntax/Latex.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Latex.hs
@@ -0,0 +1,531 @@
+{- This module was generated from data in the Kate syntax highlighting file latex.xml, version 1.26,
+   by  Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net) -}
+
+module Text.Highlighting.Kate.Syntax.Latex ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "LaTeX"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.tex; *.ltx; *.dtx; *.sty; *.cls;"
+
+-- | 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 = "LaTeX" }
+  context <- currentContext <|> (pushContext "Normal Text" >> 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 [("LaTeX",["Normal Text"])], synStLanguage = "LaTeX", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal Text" -> return ()
+    "Sectioning" -> return ()
+    "SectioningInside" -> return ()
+    "SectioningContrSeq" -> (popContext >> return ())
+    "SectioningMathMode" -> return ()
+    "SectioningMathContrSeq" -> (popContext >> return ())
+    "NewCommand" -> return ()
+    "DefCommand" -> return ()
+    "CommandParameterStart" -> return ()
+    "CommandParameter" -> return ()
+    "ContrSeq" -> (popContext >> return ())
+    "ToEndOfLine" -> (popContext >> return ())
+    "Verb" -> (popContext >> popContext >> return ())
+    "VerbEnd" -> (popContext >> popContext >> popContext >> return ())
+    "Label" -> return ()
+    "LabelOption" -> return ()
+    "LabelParameter" -> return ()
+    "FindEnvironment" -> return ()
+    "Environment" -> return ()
+    "LatexEnv" -> return ()
+    "VerbatimEnv" -> return ()
+    "VerbatimEnvParam" -> return ()
+    "Verbatim" -> return ()
+    "VerbFindEnd" -> (popContext >> return ())
+    "MathEnv" -> return ()
+    "MathEnvParam" -> return ()
+    "EnvCommon" -> return ()
+    "MathModeEnv" -> return ()
+    "MathFindEnd" -> (popContext >> return ())
+    "MathMode" -> return ()
+    "MathModeDisplay" -> return ()
+    "MathModeEquation" -> return ()
+    "MathModeCommon" -> return ()
+    "MathContrSeq" -> (popContext >> return ())
+    "MathModeText" -> return ()
+    "MathModeTextParameterStart" -> return ()
+    "MathModeTextParameter" -> return ()
+    "Comment" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Normal"),("Comment","Comment"),("Error","Alert"),("Math","Normal"),("Structure","Normal"),("Keyword Mathmode","Normal"),("Environment","Normal"),("Verbatim","Normal"),("Region Marker","RegionMarker"),("Bullet","Normal"),("Alert","Alert"),("Structure Text","Normal"),("Structure Keyword","Normal"),("Structure Math","Normal"),("Structure Keyword Mathmode","Normal")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal Text","Normal Text"),("Sectioning","Normal Text"),("SectioningInside","Structure Text"),("SectioningContrSeq","Keyword"),("SectioningMathMode","Structure Math"),("SectioningMathContrSeq","Structure Keyword Mathmode"),("NewCommand","Normal Text"),("DefCommand","Normal Text"),("CommandParameterStart","Normal Text"),("CommandParameter","Normal Text"),("ContrSeq","Keyword"),("ToEndOfLine","Normal Text"),("Verb","Verbatim"),("VerbEnd","Verbatim"),("Label","Normal Text"),("LabelOption","Normal Text"),("LabelParameter","Environment"),("FindEnvironment","Normal Text"),("Environment","Environment"),("LatexEnv","Environment"),("VerbatimEnv","Environment"),("VerbatimEnvParam","Normal Text"),("Verbatim","Verbatim"),("VerbFindEnd","Normal Text"),("MathEnv","Environment"),("MathEnvParam","Normal Text"),("EnvCommon","Environment"),("MathModeEnv","Math"),("MathFindEnd","Normal Text"),("MathMode","Math"),("MathModeDisplay","Math"),("MathModeEquation","Math"),("MathModeCommon","Math"),("MathContrSeq","Keyword Mathmode"),("MathModeText","Normal Text"),("MathModeTextParameterStart","Normal Text"),("MathModeTextParameter","Normal Text"),("Comment","Comment")]
+
+parseRules "Normal Text" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\begin(?=[^a-zA-Z])") >>= withAttribute "Structure") >>~ pushContext "FindEnvironment")
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\end(?=[^a-zA-Z])") >>= withAttribute "Structure") >>~ pushContext "FindEnvironment")
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\(label|pageref|ref|vpageref|vref|cite)(?=[^a-zA-Z])") >>= withAttribute "Structure") >>~ pushContext "Label")
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\(part|chapter|section|subsection|subsubsection|paragraph|subparagraph)\\*?\\s*(?=[\\{\\[])") >>= withAttribute "Structure") >>~ pushContext "Sectioning")
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\(re)?newcommand(?=[^a-zA-Z])") >>= withAttribute "Keyword") >>~ pushContext "NewCommand")
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\(e|g|x)?def(?=[^a-zA-Z])") >>= withAttribute "Keyword") >>~ pushContext "DefCommand")
+                        <|>
+                        ((pString False "\\(" >>= withAttribute "Math") >>~ pushContext "MathMode")
+                        <|>
+                        ((pString False "\\[" >>= withAttribute "Math") >>~ pushContext "MathModeEquation")
+                        <|>
+                        ((pDetectChar False '\\' >>= withAttribute "Keyword") >>~ pushContext "ContrSeq")
+                        <|>
+                        ((pString False "$$" >>= withAttribute "Math") >>~ pushContext "MathModeDisplay")
+                        <|>
+                        ((pDetectChar False '$' >>= withAttribute "Math") >>~ pushContext "MathMode")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "%\\s*BEGIN.*$") >>= withAttribute "Region Marker"))
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "%\\s*END.*$") >>= withAttribute "Region Marker"))
+                        <|>
+                        ((pDetectChar False '%' >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pDetectChar False '\215' >>= withAttribute "Bullet")))
+     return (attr, result)
+
+parseRules "Sectioning" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\[[^\\]]*\\]") >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False ' ' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Normal Text") >>~ pushContext "SectioningInside")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '%' >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "SectioningInside" = 
+  do (attr, result) <- (((pDetectChar False '{' >>= withAttribute "Normal Text") >>~ pushContext "SectioningInside")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((pString False "\\(" >>= withAttribute "Structure Math") >>~ pushContext "SectioningMathMode")
+                        <|>
+                        ((pDetectChar False '\\' >>= withAttribute "Structure Keyword") >>~ pushContext "SectioningContrSeq")
+                        <|>
+                        ((pDetectChar False '$' >>= withAttribute "Structure Math") >>~ pushContext "SectioningMathMode")
+                        <|>
+                        ((pDetectChar False '%' >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pDetectChar False '\215' >>= withAttribute "Bullet")))
+     return (attr, result)
+
+parseRules "SectioningContrSeq" = 
+  do (attr, result) <- (((pDetectChar False '\215' >>= withAttribute "Bullet"))
+                        <|>
+                        ((pRegExpr (compileRegex "[a-zA-Z]+(\\+?|\\*{0,3})") >>= withAttribute "Structure Keyword") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[^a-zA-Z]") >>= withAttribute "Structure Keyword") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "SectioningMathMode" = 
+  do (attr, result) <- (((pString False "$$" >>= withAttribute "Error"))
+                        <|>
+                        ((pDetectChar False '$' >>= withAttribute "Structure Math") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetect2Chars False '\\' ')' >>= withAttribute "Structure Math") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetect2Chars False '\\' ']' >>= withAttribute "Error"))
+                        <|>
+                        ((pDetectChar False '\\' >>= withAttribute "Structure Keyword Mathmode") >>~ pushContext "SectioningMathContrSeq")
+                        <|>
+                        ((pDetectChar False '%' >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pDetectChar False '\215' >>= withAttribute "Bullet")))
+     return (attr, result)
+
+parseRules "SectioningMathContrSeq" = 
+  do (attr, result) <- (((pDetectChar False '\215' >>= withAttribute "Bullet"))
+                        <|>
+                        ((pRegExpr (compileRegex "[a-zA-Z]+\\*?") >>= withAttribute "Structure Keyword Mathmode") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[^a-zA-Z]") >>= withAttribute "Structure Keyword Mathmode") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "NewCommand" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\s*\\{\\s*\\\\[a-zA-Z]+\\s*\\}(\\[\\d\\](\\[[^\\]]+\\])?)?\\{") >>= withAttribute "Normal Text") >>~ pushContext "CommandParameterStart")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Error") >>~ (popContext >> return ()))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "DefCommand" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\s*\\\\[a-zA-Z]+[^\\{]*\\{") >>= withAttribute "Normal Text") >>~ pushContext "CommandParameterStart")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Error") >>~ (popContext >> return ()))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "CommandParameterStart" = 
+  do (attr, result) <- (((pDetectChar False '{' >>= withAttribute "Normal Text") >>~ pushContext "CommandParameter")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\.") >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '%' >>= withAttribute "Comment") >>~ pushContext "Comment"))
+     return (attr, result)
+
+parseRules "CommandParameter" = 
+  do (attr, result) <- (((pDetectChar False '{' >>= withAttribute "Normal Text") >>~ pushContext "CommandParameter")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\.") >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '%' >>= withAttribute "Comment") >>~ pushContext "Comment"))
+     return (attr, result)
+
+parseRules "ContrSeq" = 
+  do (attr, result) <- (((pString False "verb*" >>= withAttribute "Keyword") >>~ pushContext "Verb")
+                        <|>
+                        ((pRegExpr (compileRegex "verb(?=[^a-zA-Z])") >>= withAttribute "Keyword") >>~ pushContext "Verb")
+                        <|>
+                        ((pDetectChar False '\215' >>= withAttribute "Bullet"))
+                        <|>
+                        ((pRegExpr (compileRegex "[a-zA-Z]+(\\+?|\\*{0,3})") >>= withAttribute "Keyword") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[^a-zA-Z]") >>= withAttribute "Keyword") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "ToEndOfLine" = 
+  pzero
+
+parseRules "Verb" = 
+  do (attr, result) <- ((pRegExprDynamic "(.)" >>= withAttribute "Normal Text") >>~ pushContext "VerbEnd")
+     return (attr, result)
+
+parseRules "VerbEnd" = 
+  do (attr, result) <- (((pString True "%1" >>= withAttribute "Normal Text") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '\215' >>= withAttribute "Bullet"))
+                        <|>
+                        ((pRegExprDynamic "[^%1\\xd7]*" >>= withAttribute "Verbatim")))
+     return (attr, result)
+
+parseRules "Label" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\s*\\{\\s*") >>= withAttribute "Normal Text") >>~ pushContext "LabelParameter")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*\\[\\s*") >>= withAttribute "Normal Text") >>~ pushContext "LabelOption")
+                        <|>
+                        ((pRegExpr (compileRegex "[^\\[\\{]+") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "LabelOption" = 
+  do (attr, result) <- (((pString False "\\(" >>= withAttribute "Math") >>~ pushContext "MathMode")
+                        <|>
+                        ((pDetectChar False '\\' >>= withAttribute "Keyword") >>~ pushContext "ContrSeq")
+                        <|>
+                        ((pDetectChar False '$' >>= withAttribute "Math") >>~ pushContext "MathMode")
+                        <|>
+                        ((pDetectChar False '%' >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pDetectChar False '\215' >>= withAttribute "Bullet"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*\\]\\s*") >>= withAttribute "Normal Text") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "LabelParameter" = 
+  do (attr, result) <- (((pDetectChar False '\215' >>= withAttribute "Bullet"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*\\}\\s*") >>= withAttribute "Normal Text") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "FindEnvironment" = 
+  do (attr, result) <- (((pDetectChar False '{' >>= withAttribute "Normal Text") >>~ pushContext "Environment")
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Normal Text") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Environment" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "(lstlisting|(B|L)?Verbatim)") >>= withAttribute "Environment") >>~ pushContext "VerbatimEnvParam")
+                        <|>
+                        ((pRegExpr (compileRegex "(verbatim|boxedverbatim)") >>= withAttribute "Environment") >>~ pushContext "VerbatimEnv")
+                        <|>
+                        ((pRegExpr (compileRegex "(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|flalign)") >>= withAttribute "Environment") >>~ pushContext "MathEnv")
+                        <|>
+                        ((pRegExpr (compileRegex "(alignat|xalignat|xxalignat)") >>= withAttribute "Environment") >>~ pushContext "MathEnvParam")
+                        <|>
+                        ((pDetectChar False '\215' >>= withAttribute "Bullet"))
+                        <|>
+                        ((pRegExpr (compileRegex "[a-zA-Z]") >>= withAttribute "Environment") >>~ pushContext "LatexEnv")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s+") >>= withAttribute "Error") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[^a-zA-Z\\xd7]") >>= withAttribute "Error") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "LatexEnv" = 
+  do (attr, result) <- (((pDetectChar False '}' >>= withAttribute "Normal Text") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[a-zA-Z]+") >>= withAttribute "Environment"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s+") >>= withAttribute "Error"))
+                        <|>
+                        ((parseRules "EnvCommon")))
+     return (attr, result)
+
+parseRules "VerbatimEnv" = 
+  do (attr, result) <- (((pDetectChar False '}' >>= withAttribute "Normal Text") >>~ pushContext "Verbatim")
+                        <|>
+                        ((pRegExpr (compileRegex "[a-zA-Z]") >>= withAttribute "Environment") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "EnvCommon"))
+                        <|>
+                        ((popContext >> popContext >> popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "VerbatimEnvParam" = 
+  do (attr, result) <- (((pDetect2Chars False '}' '[' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text") >>~ pushContext "Verbatim")
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "Normal Text") >>~ pushContext "Verbatim"))
+     return (attr, result)
+
+parseRules "Verbatim" = 
+  do (attr, result) <- (((pDetectChar False '\215' >>= withAttribute "Bullet"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\end(?=\\s*\\{(verbatim|lstlisting|boxedverbatim|(B|L)?Verbatim)\\*?\\})") >>= withAttribute "Structure") >>~ pushContext "VerbFindEnd"))
+     return (attr, result)
+
+parseRules "VerbFindEnd" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\s*\\{") >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "(verbatim|lstlisting|boxedverbatim|(B|L)?Verbatim)\\*?") >>= withAttribute "Environment"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text") >>~ (popContext >> popContext >> popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "MathEnv" = 
+  do (attr, result) <- (((pDetectChar False '}' >>= withAttribute "Normal Text") >>~ pushContext "MathModeEnv")
+                        <|>
+                        ((pRegExpr (compileRegex "[a-zA-Z]") >>= withAttribute "Environment") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "EnvCommon")))
+     return (attr, result)
+
+parseRules "MathEnvParam" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\}\\{[^\\}]*\\}") >>= withAttribute "Normal Text") >>~ pushContext "MathModeEnv")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text") >>~ pushContext "MathModeEnv")
+                        <|>
+                        ((pRegExpr (compileRegex "[a-zA-Z]") >>= withAttribute "Environment") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "EnvCommon")))
+     return (attr, result)
+
+parseRules "EnvCommon" = 
+  do (attr, result) <- (((pDetectChar False '\215' >>= withAttribute "Bullet"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\*(?=\\})") >>= withAttribute "Environment"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\*[^\\}]*") >>= withAttribute "Error") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[^a-zA-Z\\xd7][^\\}]*") >>= withAttribute "Error") >>~ (popContext >> popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "MathModeEnv" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\end(?=\\s*\\{(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|flalign|alignat|xalignat|xxalignat)\\*?\\})") >>= withAttribute "Structure") >>~ pushContext "MathFindEnd")
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\begin(?=[^a-zA-Z])") >>= withAttribute "Keyword Mathmode"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\end(?=[^a-zA-Z])") >>= withAttribute "Keyword Mathmode"))
+                        <|>
+                        ((pString False "\\(" >>= withAttribute "Error"))
+                        <|>
+                        ((pString False "\\[" >>= withAttribute "Error"))
+                        <|>
+                        ((pString False "\\)" >>= withAttribute "Error"))
+                        <|>
+                        ((pString False "\\]" >>= withAttribute "Error"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\(text|intertext|mbox)\\s*(?=\\{)") >>= withAttribute "Keyword Mathmode") >>~ pushContext "MathModeText")
+                        <|>
+                        ((pDetectChar False '\\' >>= withAttribute "Keyword Mathmode") >>~ pushContext "MathContrSeq")
+                        <|>
+                        ((pString False "$$" >>= withAttribute "Error"))
+                        <|>
+                        ((pDetectChar False '$' >>= withAttribute "Error"))
+                        <|>
+                        ((pDetectChar False '%' >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "%\\s*BEGIN.*$") >>= withAttribute "Region Marker"))
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "%\\s*END.*$") >>= withAttribute "Region Marker")))
+     return (attr, result)
+
+parseRules "MathFindEnd" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\s*\\{") >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|flalign|alignat|xalignat|xxalignat)\\*?") >>= withAttribute "Environment"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text") >>~ (popContext >> popContext >> popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "MathMode" = 
+  do (attr, result) <- (((pString False "$$" >>= withAttribute "Error"))
+                        <|>
+                        ((pDetectChar False '$' >>= withAttribute "Math") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetect2Chars False '\\' ')' >>= withAttribute "Math") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetect2Chars False '\\' ']' >>= withAttribute "Error"))
+                        <|>
+                        ((parseRules "MathModeCommon")))
+     return (attr, result)
+
+parseRules "MathModeDisplay" = 
+  do (attr, result) <- (((pString False "$$" >>= withAttribute "Math") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '$' >>= withAttribute "Error"))
+                        <|>
+                        ((pDetect2Chars False '\\' ']' >>= withAttribute "Error"))
+                        <|>
+                        ((pDetect2Chars False '\\' ')' >>= withAttribute "Error"))
+                        <|>
+                        ((parseRules "MathModeCommon")))
+     return (attr, result)
+
+parseRules "MathModeEquation" = 
+  do (attr, result) <- (((pDetect2Chars False '\\' ']' >>= withAttribute "Math") >>~ (popContext >> return ()))
+                        <|>
+                        ((pString False "$$" >>= withAttribute "Error"))
+                        <|>
+                        ((pDetectChar False '$' >>= withAttribute "Error"))
+                        <|>
+                        ((pDetect2Chars False '\\' ')' >>= withAttribute "Error"))
+                        <|>
+                        ((parseRules "MathModeCommon")))
+     return (attr, result)
+
+parseRules "MathModeCommon" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\(begin|end)\\s*\\{(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|flalign|alignat|xalignat|xxalignat)\\*?\\}") >>= withAttribute "Error"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\begin(?=[^a-zA-Z])") >>= withAttribute "Keyword Mathmode"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\end(?=[^a-zA-Z])") >>= withAttribute "Keyword Mathmode"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\(text|intertext|mbox)\\s*(?=\\{)") >>= withAttribute "Keyword Mathmode") >>~ pushContext "MathModeText")
+                        <|>
+                        ((pDetectChar False '\\' >>= withAttribute "Keyword Mathmode") >>~ pushContext "MathContrSeq")
+                        <|>
+                        ((pDetectChar False '%' >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "%\\s*BEGIN.*$") >>= withAttribute "Region Marker"))
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "%\\s*END.*$") >>= withAttribute "Region Marker"))
+                        <|>
+                        ((pDetectChar False '\215' >>= withAttribute "Bullet")))
+     return (attr, result)
+
+parseRules "MathContrSeq" = 
+  do (attr, result) <- (((pDetectChar False '\215' >>= withAttribute "Bullet"))
+                        <|>
+                        ((pRegExpr (compileRegex "[a-zA-Z]+\\*?") >>= withAttribute "Keyword Mathmode") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[^a-zA-Z]") >>= withAttribute "Keyword Mathmode") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "MathModeText" = 
+  do (attr, result) <- ((pDetectChar False '{' >>= withAttribute "Normal Text") >>~ pushContext "MathModeTextParameterStart")
+     return (attr, result)
+
+parseRules "MathModeTextParameterStart" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\.") >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '\215' >>= withAttribute "Bullet"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Normal Text") >>~ pushContext "MathModeTextParameter")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '%' >>= withAttribute "Comment") >>~ pushContext "Comment"))
+     return (attr, result)
+
+parseRules "MathModeTextParameter" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\.") >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Normal Text") >>~ pushContext "MathModeTextParameter")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '\215' >>= withAttribute "Bullet"))
+                        <|>
+                        ((pDetectChar False '%' >>= withAttribute "Comment") >>~ pushContext "Comment"))
+     return (attr, result)
+
+parseRules "Comment" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "(FIXME|TODO):?") >>= withAttribute "Alert"))
+                        <|>
+                        ((pDetectChar False '\215' >>= withAttribute "Bullet")))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Lex.hs b/Text/Highlighting/Kate/Syntax/Lex.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Lex.hs
@@ -0,0 +1,247 @@
+{- This module was generated from data in the Kate syntax highlighting file lex.xml, version 1.01,
+   by  Jan Villat (jan.villat@net2000.ch) -}
+
+module Text.Highlighting.Kate.Syntax.Lex ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Cpp
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Lex/Flex"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.l;*.lex;*.flex"
+
+-- | 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 = "Lex/Flex" }
+  context <- currentContext <|> (pushContext "Pre Start" >> 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 [("Lex/Flex",["Pre Start"])], synStLanguage = "Lex/Flex", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Pre Start" -> return ()
+    "Definitions" -> return ()
+    "Rules" -> return ()
+    "User Code" -> return ()
+    "Percent Command" -> (popContext >> return ())
+    "Comment" -> return ()
+    "Definition RegExpr" -> (popContext >> return ())
+    "Rule RegExpr" -> (popContext >> return ())
+    "RegExpr (" -> return ()
+    "RegExpr [" -> return ()
+    "RegExpr {" -> return ()
+    "RegExpr Q" -> return ()
+    "RegExpr Base" -> return ()
+    "Start Conditions Scope" -> return ()
+    "Action" -> (popContext >> return ())
+    "Detect C" -> return ()
+    "Indented C" -> (popContext >> return ())
+    "Lex C Bloc" -> return ()
+    "Lex Rule C Bloc" -> return ()
+    "Normal C Bloc" -> return ()
+    "Action C" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Definition","DataType"),("Comment","Comment"),("Content-Type Delimiter","BaseN"),("Directive","Keyword"),("RegExpr","String"),("Backslash Code","String"),("Alert","Alert")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Pre Start","Normal Text"),("Definitions","Normal Text"),("Rules","Normal Text"),("User Code","Normal Text"),("Percent Command","Directive"),("Comment","Comment"),("Definition RegExpr","RegExpr"),("Rule RegExpr","RegExpr"),("RegExpr (","RegExpr"),("RegExpr [","RegExpr"),("RegExpr {","RegExpr"),("RegExpr Q","RegExpr"),("RegExpr Base","RegExpr"),("Start Conditions Scope","Normal Text"),("Action","Normal Text"),("Detect C","Normal Text"),("Indented C","Normal Text"),("Lex C Bloc","Normal Text"),("Lex Rule C Bloc","Normal Text"),("Normal C Bloc","Normal Text"),("Action C","Normal Text")]
+
+parseRules "Pre Start" = 
+  do (attr, result) <- ((pRegExpr (compileRegex ".") >>= withAttribute "Normal Text") >>~ pushContext "Definitions")
+     return (attr, result)
+
+parseRules "Definitions" = 
+  do (attr, result) <- (((parseRules "Detect C"))
+                        <|>
+                        ((pDetect2Chars False '%' '%' >>= withAttribute "Content-Type Delimiter") >>~ pushContext "Rules")
+                        <|>
+                        ((pDetectChar False '%' >>= withAttribute "Directive") >>~ pushContext "Percent Command")
+                        <|>
+                        ((pColumn 0 >> pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "[A-Za-z_]\\w*\\s+") >>= withAttribute "Definition") >>~ pushContext "Definition RegExpr"))
+     return (attr, result)
+
+parseRules "Rules" = 
+  do (attr, result) <- (((parseRules "Detect C"))
+                        <|>
+                        ((pDetect2Chars False '%' '%' >>= withAttribute "Content-Type Delimiter") >>~ pushContext "User Code")
+                        <|>
+                        (pushContext "Rule RegExpr" >> return ([], "")))
+     return (attr, result)
+
+parseRules "User Code" = 
+  do (attr, result) <- ((Text.Highlighting.Kate.Syntax.Cpp.parseExpression >>= ((withAttribute "") . snd)))
+     return (attr, result)
+
+parseRules "Percent Command" = 
+  pzero
+
+parseRules "Comment" = 
+  do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Definition RegExpr" = 
+  do (attr, result) <- (((parseRules "RegExpr Base"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "RegExpr"))
+                        <|>
+                        ((pRegExpr (compileRegex ".*") >>= withAttribute "Alert")))
+     return (attr, result)
+
+parseRules "Rule RegExpr" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\{$") >>= withAttribute "Content-Type Delimiter") >>~ pushContext "Start Conditions Scope")
+                        <|>
+                        ((parseRules "RegExpr Base"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "RegExpr"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s+") >>= withAttribute "Normal Text") >>~ pushContext "Action"))
+     return (attr, result)
+
+parseRules "RegExpr (" = 
+  do (attr, result) <- (((parseRules "RegExpr Base"))
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "RegExpr") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex ".") >>= withAttribute "RegExpr")))
+     return (attr, result)
+
+parseRules "RegExpr [" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\.") >>= withAttribute "Backslash Code"))
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "RegExpr") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex ".") >>= withAttribute "RegExpr")))
+     return (attr, result)
+
+parseRules "RegExpr {" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\.") >>= withAttribute "Backslash Code"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "RegExpr") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex ".") >>= withAttribute "RegExpr")))
+     return (attr, result)
+
+parseRules "RegExpr Q" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\.") >>= withAttribute "Backslash Code"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "RegExpr") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex ".") >>= withAttribute "RegExpr")))
+     return (attr, result)
+
+parseRules "RegExpr Base" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\.") >>= withAttribute "Backslash Code"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "RegExpr") >>~ pushContext "RegExpr (")
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "RegExpr") >>~ pushContext "RegExpr [")
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "RegExpr") >>~ pushContext "RegExpr {")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "RegExpr") >>~ pushContext "RegExpr Q"))
+     return (attr, result)
+
+parseRules "Start Conditions Scope" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\s*\\}") >>= withAttribute "Content-Type Delimiter") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*") >>= withAttribute "Normal Text") >>~ pushContext "Rule RegExpr")
+                        <|>
+                        (pushContext "Rule RegExpr" >> return ([], "")))
+     return (attr, result)
+
+parseRules "Action" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\|\\s*$") >>= withAttribute "Directive"))
+                        <|>
+                        ((pDetect2Chars False '%' '{' >>= withAttribute "Content-Type Delimiter") >>~ pushContext "Lex Rule C Bloc")
+                        <|>
+                        (pushContext "Action C" >> return ([], "")))
+     return (attr, result)
+
+parseRules "Detect C" = 
+  do (attr, result) <- (((pColumn 0 >> pRegExpr (compileRegex "\\s") >>= withAttribute "Normal Text") >>~ pushContext "Indented C")
+                        <|>
+                        ((pColumn 0 >> pDetect2Chars False '%' '{' >>= withAttribute "Content-Type Delimiter") >>~ pushContext "Lex C Bloc"))
+     return (attr, result)
+
+parseRules "Indented C" = 
+  do (attr, result) <- ((Text.Highlighting.Kate.Syntax.Cpp.parseExpression >>= ((withAttribute "") . snd)))
+     return (attr, result)
+
+parseRules "Lex C Bloc" = 
+  do (attr, result) <- (((pColumn 0 >> pDetect2Chars False '%' '}' >>= withAttribute "Content-Type Delimiter") >>~ (popContext >> return ()))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Cpp.parseExpression >>= ((withAttribute "") . snd))))
+     return (attr, result)
+
+parseRules "Lex Rule C Bloc" = 
+  do (attr, result) <- (((pDetect2Chars False '%' '}' >>= withAttribute "Content-Type Delimiter") >>~ (popContext >> return ()))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Cpp.parseExpression >>= ((withAttribute "") . snd))))
+     return (attr, result)
+
+parseRules "Normal C Bloc" = 
+  do (attr, result) <- (((pDetectChar False '{' >>= withAttribute "Normal Text") >>~ pushContext "Normal C Bloc")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Cpp.parseExpression >>= ((withAttribute "") . snd))))
+     return (attr, result)
+
+parseRules "Action C" = 
+  do (attr, result) <- (((pDetectChar False '{' >>= withAttribute "Normal Text") >>~ pushContext "Normal C Bloc")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Alert"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Cpp.parseExpression >>= ((withAttribute "") . snd))))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/LiterateHaskell.hs b/Text/Highlighting/Kate/Syntax/LiterateHaskell.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/LiterateHaskell.hs
@@ -0,0 +1,143 @@
+{- This module was generated from data in the Kate syntax highlighting file literate-haskell.xml, version 1.04,
+   by  Marcel Martin (mmar@freenet.de) -}
+
+module Text.Highlighting.Kate.Syntax.LiterateHaskell ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Literate Haskell"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.lhs"
+
+-- | 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 = "Literate Haskell" }
+  context <- currentContext <|> (pushContext "literate-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 [("Literate Haskell",["literate-normal"])], synStLanguage = "Literate Haskell", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "literate-normal" -> return ()
+    "normal" -> pushContext "literate-normal"
+    "comment_single_line" -> (popContext >> return ())
+    "comment_multi_line" -> return ()
+    "string" -> return ()
+    "infix" -> return ()
+    "single_char" -> (popContext >> return ())
+    "function_definition" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Function","Function"),("Function Definition","Function"),("Class","Keyword"),("Decimal","DecVal"),("Float","Float"),("Char","Char"),("String","String"),("Constructor","Others"),("Comment","Comment"),("Data Constructor","Keyword"),("Type Constructor","DataType"),("Infix Operator","Others"),("Special","Char")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("literate-normal","Comment"),("normal","Normal Text"),("comment_single_line","Comment"),("comment_multi_line","Comment"),("string","String"),("infix","Infix Operator"),("single_char","Char"),("function_definition","Function Definition")]
+
+parseRules "literate-normal" = 
+  do (attr, result) <- ((pColumn 0 >> pDetectChar False '>' >>= withAttribute "Special") >>~ pushContext "normal")
+     return (attr, result)
+
+parseRules "normal" = 
+  do (attr, result) <- (((pDetect2Chars False '{' '-' >>= withAttribute "Comment") >>~ pushContext "comment_multi_line")
+                        <|>
+                        ((pDetect2Chars False '-' '-' >>= withAttribute "Comment") >>~ pushContext "comment_single_line")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["case","class","data","deriving","do","else","if","in","infixl","infixr","instance","let","module","of","primitive","then","type","where"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["Bounded","Enum","Eq","Floating","Fractional","Functor","Integral","Ix","Monad","Num","Ord","Read","RealFloat","RealFrac","Real","Show"] >>= withAttribute "Class"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["Bool","Char","Double","Either","Float","IO","Integer","Int","Maybe","Ordering","Rational","Ratio","ReadS","ShowS","String"] >>= withAttribute "Type Constructor"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["FilePath","IOError","abs","acos","acosh","all","and","any","appendFile","approxRational","asTypeOf","asin","asinh","atan","atan2","atanh","basicIORun","break","catch","ceiling","chr","compare","concat","concatMap","const","cos","cosh","curry","cycle","decodeFloat","denominator","digitToInt","div","divMod","drop","dropWhile","either","elem","encodeFloat","enumFrom","enumFromThen","enumFromThenTo","enumFromTo","error","even","exp","exponent","fail","filter","flip","floatDigits","floatRadix","floatRange","floor","fmap","foldl","foldl1","foldr","foldr1","fromDouble","fromEnum","fromInt","fromInteger","fromIntegral","fromRational","fst","gcd","getChar","getContents","getLine","head","id","inRange","index","init","intToDigit","interact","ioError","isAlpha","isAlphaNum","isAscii","isControl","isDenormalized","isDigit","isHexDigit","isIEEE","isInfinite","isLower","isNaN","isNegativeZero","isOctDigit","isPrint","isSpace","isUpper","iterate","last","lcm","length","lex","lexDigits","lexLitChar","lines","log","logBase","lookup","map","mapM","mapM_","max","maxBound","maximum","maybe","min","minBound","minimum","mod","negate","not","notElem","null","numerator","odd","or","ord","otherwise","pi","pred","primExitWith","print","product","properFraction","putChar","putStr","putStrLn","quot","quotRem","range","rangeSize","read","readDec","readFile","readFloat","readHex","readIO","readInt","readList","readLitChar","readLn","readOct","readParen","readSigned","reads","readsPrec","realToFrac","recip","rem","repeat","replicate","return","reverse","round","scaleFloat","scanl","scanl1","scanr","scanr1","seq","sequence","sequence_","show","showChar","showInt","showList","showLitChar","showParen","showSigned","showString","shows","showsPrec","significand","signum","sin","sinh","snd","span","splitAt","sqrt","subtract","succ","sum","tail","take","takeWhile","tan","tanh","threadToIOResult","toEnum","toInt","toInteger","toLower","toRational","toUpper","truncate","uncurry","undefined","unlines","until","unwords","unzip","unzip3","userError","words","writeFile","zip","zip3","zipWith","zipWith3"] >>= withAttribute "Function"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["EQ","False","GT","Just","LT","Left","Nothing","Right","True"] >>= withAttribute "Data Constructor"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "string")
+                        <|>
+                        ((pDetectChar False '`' >>= withAttribute "Infix Operator") >>~ pushContext "infix")
+                        <|>
+                        ((pRegExpr (compileRegex "\\w[']+") >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Char") >>~ pushContext "single_char")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*[a-z_]+\\w*'*\\s*::") >>= withAttribute "Function Definition"))
+                        <|>
+                        ((pFloat >>= withAttribute "Float"))
+                        <|>
+                        ((pInt >>= withAttribute "Decimal")))
+     return (attr, result)
+
+parseRules "comment_single_line" = 
+  pzero
+
+parseRules "comment_multi_line" = 
+  do (attr, result) <- ((pDetect2Chars False '-' '}' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "string" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\.") >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "infix" = 
+  do (attr, result) <- ((pDetectChar False '`' >>= withAttribute "Infix Operator") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "single_char" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\.") >>= withAttribute "Char"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Char") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "function_definition" = 
+  do (attr, result) <- ((pDetectChar False ';' >>= withAttribute "Function Definition") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Lua.hs b/Text/Highlighting/Kate/Syntax/Lua.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Lua.hs
@@ -0,0 +1,181 @@
+{- This module was generated from data in the Kate syntax highlighting file lua.xml, version 1.02,
+   by   -}
+
+module Text.Highlighting.Kate.Syntax.Lua ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Doxygen
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Lua"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.lua"
+
+-- | 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 = "Lua" }
+  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 [("Lua",["Normal"])], synStLanguage = "Lua", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "Comment" -> (popContext >> return ())
+    "Block Comment" -> return ()
+    "String_single" -> pushContext "Error"
+    "String_double" -> pushContext "Error"
+    "String_block" -> return ()
+    "Error" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Alerts","Alert"),("BFunc","Function"),("Comment","Comment"),("Constant","Keyword"),("Control","Keyword"),("Error","Error"),("Keyword","Keyword"),("Normal Text","Normal"),("Numbers","DecVal"),("Strings","String"),("Symbols","Others"),("Variable","Keyword")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal Text"),("Comment","Comment"),("Block Comment","Comment"),("String_single","Strings"),("String_double","Strings"),("String_block","Strings"),("Error","Error")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((Text.Highlighting.Kate.Syntax.Doxygen.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pKeyword " \n\t():!+,-<=>%&*/;?[]^{|}~\\\"" ["table.foreach","table.foreachi","foreach","foreachi"] >>= withAttribute "Error"))
+                        <|>
+                        ((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetect2Chars False '-' '-' >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pDetect2Chars False '[' '[' >>= withAttribute "Strings") >>~ pushContext "String_block")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Strings") >>~ pushContext "String_single")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Strings") >>~ pushContext "String_double")
+                        <|>
+                        ((pKeyword " \n\t():!+,-<=>%&*/;?[]^{|}~\\\"" ["string.byte","string.char","string.find","string.len","string.lower","string.rep","string.sub","string.upper","string.format","string.gfind","string.gsub","table.concat","table.getn","table.sort","table.insert","table.remove","table.setn","math.abs","math.sin","math.cos","math.tan","math.asin","math.acos","math.atan","math.atan2","math.ceil","math.floor","math.mod","math.frexp","math.ldexp","math.squrt","math.min","math.max","math.log","math.log10","math.exp","math.deg","math.rad","math.random","math.randomseed","io.close","io.flush","io.input","io.lines","io.open","io.output","io.read","io.stderr","io.stdin","io.stdout","io.tmpfile","io.write","os.clock","os.date","os.difftime","os.execute","os.exit","os.getenv","os.remove","os.rename","os.setlocale","os.time","os.tmpname","debug.getinfo","debug.getlocal","debug.setlocal","debug.sethook","debug.gethook","assert","collectgarbage","dofile","error","next","print","rawget","rawset","tonumber","tostring","type","_ALERT","_ERRORMESSAGE","call","getmetatable","gcinfo","ipairs","loadfile","loadstring","pairs","pcall","require","LUA_PATH","setmetatable","_LOADED","_VERSION","gettagmethod","globals","newtag","setglobal","settag","settagmethod","setlinehook","getglobals","copytagmethods","dostring","getglobal","tag","setglobals","unpack","exit","readfrom","writeto","appendto","read","write","getinfo","getlocal","setlocal","setcallhook","tinsert","tremove","flush","seek","setlocale","execute","remove","rename","tmpname","getenv","getn","sort","table.foreach","table.foreachi","foreach","foreachi","abs","sin","cos","tan","asin","acos","atan","atan2","ceil","floor","mod","frexp","ldexp","squrt","min","max","log","log10","exp","deg","rad","random","randomseed","strlen","strsub","strlower","strupper","strchar","strrep","ascii","strbyte","format","strfind","gsub","openfile","closefile","date","clock","cgilua","cgilua.lp.translate","cgilua.contentheader","cgilua.script_file","cgilua.header","cgilua.script_path","cgilua.htmlheader","cgilua.script_pdir","cgilua.redirect","cgilua.script_vdir","cgilua.mkabsoluteurl","cgilua.script_vpath","cgilua.mkurlpath","cgilua.servervariable","cgilua.put","cgilua.urlpath","cgilua.handlelp","cgilua.errorlog","cgilua.lp.compile","cgilua.seterrorhandler","cgilua.lp.include","cgilua.seterroroutput","cgilua.lp.setcompatmode","cgilua.addclosefunction","cgilua.lp.setoutfunc","cgilua.addopenfunction","cgilua.addscripthandler","cgilua.addscripthandler","cgilua.buildprocesshandler","cgilua.setmaxfilesize","cgilua.setmaxinput","cgilua.urlcode.encodetable","cgilua.urlcode.escape","cgilua.urlcode.parsequery","cgilua.urlcode.unescape","cgilua.urlcode.insertfield","cgilua.setoutfunc","cgilua.addopenfunction","cgilua.doif","cgilua.doscript","cgilua.pack","cgilua.splitpath","cgilua.cookies.get","cgilua.cookies.set","cgilua.cookies.sethtml","cgilua.cookies.delete","cgilua.serialize","cgilua.session.close","cgilua.session.data","cgilua.session.load","cgilua.session.new","cgilua.session.open","cgilua.session.save","cgilua.session.setsessiondir","cgilua.session.delete","cgilua.session","cgilua.cookies","numrows","connect","close","fetch","getcolnames","getcoltypes","commit","rollback","setautocommit","lfs","lfs.attributes","lfs.chdir","lfs.currentdir","lfs.dir","lfs.lock","lfs.mkdir","lfs.rmdir","lfs.touch","lfs.unlock","zip","zip.open","zip.openfile","files","seek","close","lines"] >>= withAttribute "BFunc"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bfunction\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t():!+,-<=>%&*/;?[]^{|}~\\\"" ["and","function","in","local","not","or"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t():!+,-<=>%&*/;?[]^{|}~\\\"" ["nil","false","true"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\belse\\b") >>= withAttribute "Control"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\belseif\\b") >>= withAttribute "Control"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bdo\\b") >>= withAttribute "Control"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bif\\b") >>= withAttribute "Control"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bend\\b") >>= withAttribute "Control"))
+                        <|>
+                        ((pKeyword " \n\t():!+,-<=>%&*/;?[]^{|}~\\\"" ["break","do","else","elseif","end","for","if","repeat","return","then","until","while"] >>= withAttribute "Control"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Symbols"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Symbols"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b\\d*\\.?\\d*(e|e\\-|e\\+)?\\d+\\b") >>= withAttribute "Numbers"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b-?0[xX][0-9a-fA-F]+\\b") >>= withAttribute "Numbers"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[a-zA-Z_][a-zA-Z0-9_]*(?=\\s*([({'\"]|\\[\\[))\\b") >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[A-Z_][A-Z0-9_]*\\b") >>= withAttribute "Constant"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[a-zA-Z_][a-zA-Z0-9_]*\\b") >>= withAttribute "Variable"))
+                        <|>
+                        ((pDetect2Chars False '!' '=' >>= withAttribute "Error"))
+                        <|>
+                        ((pDetect2Chars False '-' '=' >>= withAttribute "Error"))
+                        <|>
+                        ((pDetect2Chars False '+' '=' >>= withAttribute "Error"))
+                        <|>
+                        ((pDetect2Chars False '+' '+' >>= withAttribute "Error"))
+                        <|>
+                        ((pDetect2Chars False '.' '=' >>= withAttribute "Error"))
+                        <|>
+                        ((pAnyChar "[]().=~+-*/^><#;" >>= withAttribute "Symbols")))
+     return (attr, result)
+
+parseRules "Comment" = 
+  do (attr, result) <- (((pDetect2Chars False '[' '[' >>= withAttribute "Comment") >>~ pushContext "Block Comment")
+                        <|>
+                        ((pDetect2Chars False '-' '-' >>= withAttribute "Alerts"))
+                        <|>
+                        ((pKeyword " \n\t():!+,-<=>%&*/;?[]^{|}~\\\"" ["TODO","FIXME","NOTE"] >>= withAttribute "Alerts")))
+     return (attr, result)
+
+parseRules "Block Comment" = 
+  do (attr, result) <- (((pDetect2Chars False ']' ']' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetect2Chars False '-' '-' >>= withAttribute "Alerts"))
+                        <|>
+                        ((pKeyword " \n\t():!+,-<=>%&*/;?[]^{|}~\\\"" ["TODO","FIXME","NOTE"] >>= withAttribute "Alerts")))
+     return (attr, result)
+
+parseRules "String_single" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\(a|b|f|n|r|t|v|\\\\|\"|\\'|[|])") >>= withAttribute "Symbols"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Strings") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "String_double" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\[abfnrtv'\"\\\\\\[\\]]") >>= withAttribute "Symbols"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Strings") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "String_block" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\(a|b|f|n|r|t|v|\\\\|\"|\\'|[|])") >>= withAttribute "Symbols"))
+                        <|>
+                        ((pDetect2Chars False ']' ']' >>= withAttribute "Strings") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Error" = 
+  pzero
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Makefile.hs b/Text/Highlighting/Kate/Syntax/Makefile.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Makefile.hs
@@ -0,0 +1,140 @@
+{- This module was generated from data in the Kate syntax highlighting file makefile.xml, version 1.09,
+   by  Per Wigren (wigren@home.se) -}
+
+module Text.Highlighting.Kate.Syntax.Makefile ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Makefile"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "GNUmakefile;Makefile*;makefile*"
+
+-- | 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 = "Makefile" }
+  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 [("Makefile",["Normal"])], synStLanguage = "Makefile", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "String" -> (popContext >> return ())
+    "Value" -> return ()
+    "VarFromValue" -> return ()
+    "VarFromNormal" -> return ()
+    "Commands" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Comment","Comment"),("String","String"),("Variable","DataType"),("Target","DecVal"),("Section","Others"),("Operator","Char"),("Commands","BaseN"),("Special","Float")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal Text"),("String","String"),("Value","String"),("VarFromValue","Variable"),("VarFromNormal","Variable"),("Commands","Normal Text")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["include","define","else","endef","endif","ifdef","ifeq","ifndef","ifneq"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "[_\\w\\d]*\\s*(?=:=|=)") >>= withAttribute "Variable") >>~ pushContext "Value")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "[_\\w\\d-]*\\s*:") >>= withAttribute "Target"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "[.].*:") >>= withAttribute "Section"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((pRegExpr (compileRegex "[$][\\({]") >>= withAttribute "Operator") >>~ pushContext "VarFromNormal")
+                        <|>
+                        ((pDetect2Chars False '\\' '#' >>= withAttribute "Special"))
+                        <|>
+                        ((pDetect2Chars False '\\' '\\' >>= withAttribute "Special"))
+                        <|>
+                        ((pAnyChar "+*=%$():\\;" >>= withAttribute "Operator"))
+                        <|>
+                        ((pFirstNonSpace >> pAnyChar "@-" >>= withAttribute "Operator") >>~ pushContext "Commands")
+                        <|>
+                        ((pRegExpr (compileRegex "#.*$") >>= withAttribute "Comment")))
+     return (attr, result)
+
+parseRules "String" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Value" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\$") >>= withAttribute "Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "[^\\\\]?$") >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[$][\\({]") >>= withAttribute "Operator") >>~ pushContext "VarFromValue")
+                        <|>
+                        ((pRegExpr (compileRegex "@[-_\\d\\w]*@") >>= withAttribute "Special") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False ';' >>= withAttribute "Operator") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "VarFromValue" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "[\\)}](?=/)") >>= withAttribute "Operator") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[\\)}][^$]") >>= withAttribute "Operator") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[\\)}]$") >>= withAttribute "Operator") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "VarFromNormal" = 
+  do (attr, result) <- ((pAnyChar ")}" >>= withAttribute "Operator") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Commands" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "[$][\\({]") >>= withAttribute "Operator") >>~ pushContext "VarFromNormal")
+                        <|>
+                        ((pRegExpr (compileRegex "[_\\w-]*\\b") >>= withAttribute "Commands") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Matlab.hs b/Text/Highlighting/Kate/Syntax/Matlab.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Matlab.hs
@@ -0,0 +1,130 @@
+{- This module was generated from data in the Kate syntax highlighting file matlab.xml, version 1.20,
+   by   -}
+
+module Text.Highlighting.Kate.Syntax.Matlab ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Matlab"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.m;*.M"
+
+-- | 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 = "Matlab" }
+  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 [("Matlab",["_normal"])], synStLanguage = "Matlab", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "_normal" -> (popContext >> return ())
+    "_adjoint" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Variable","Normal"),("Operator","Normal"),("Number","Float"),("Delimiter","Normal"),("String","String"),("System","BaseN"),("Incomplete String","Char"),("Keyword","Normal"),("Comment","Comment")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("_normal","Normal Text"),("_adjoint","Operator")]
+
+parseRules "_normal" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "[a-zA-Z]\\w*(?=')") >>= withAttribute "Variable") >>~ pushContext "_adjoint")
+                        <|>
+                        ((pRegExpr (compileRegex "(\\d+(\\.\\d+)?|\\.\\d+)([eE][+-]?\\d+)?[ij]?(?=')") >>= withAttribute "Number") >>~ pushContext "_adjoint")
+                        <|>
+                        ((pRegExpr (compileRegex "[\\)\\]}](?=')") >>= withAttribute "Delimiter") >>~ pushContext "_adjoint")
+                        <|>
+                        ((pRegExpr (compileRegex "\\.'(?=')") >>= withAttribute "Operator") >>~ pushContext "_adjoint")
+                        <|>
+                        ((pRegExpr (compileRegex "'[^']*(''[^']*)*'(?=[^']|$)") >>= withAttribute "String"))
+                        <|>
+                        ((pRegExpr (compileRegex "'[^']*(''[^']*)*") >>= withAttribute "Incomplete String"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["break","case","catch","continue","else","elseif","end","for","function","global","if","otherwise","persistent","return","switch","try","while"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "%.*$") >>= withAttribute "Comment"))
+                        <|>
+                        ((pRegExpr (compileRegex "!.*$") >>= withAttribute "System"))
+                        <|>
+                        ((pRegExpr (compileRegex "[a-zA-Z]\\w*") >>= withAttribute "Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "(\\d+(\\.\\d+)?|\\.\\d+)([eE][+-]?\\d+)?[ij]?") >>= withAttribute "Number"))
+                        <|>
+                        ((pAnyChar "()[]{}" >>= withAttribute "Delimiter"))
+                        <|>
+                        ((pString False "..." >>= withAttribute "Operator"))
+                        <|>
+                        ((pString False "==" >>= withAttribute "Operator"))
+                        <|>
+                        ((pString False "~=" >>= withAttribute "Operator"))
+                        <|>
+                        ((pString False "<=" >>= withAttribute "Operator"))
+                        <|>
+                        ((pString False ">=" >>= withAttribute "Operator"))
+                        <|>
+                        ((pString False "&&" >>= withAttribute "Operator"))
+                        <|>
+                        ((pString False "||" >>= withAttribute "Operator"))
+                        <|>
+                        ((pString False ".*" >>= withAttribute "Operator"))
+                        <|>
+                        ((pString False ".^" >>= withAttribute "Operator"))
+                        <|>
+                        ((pString False "./" >>= withAttribute "Operator"))
+                        <|>
+                        ((pString False ".'" >>= withAttribute "Operator"))
+                        <|>
+                        ((pAnyChar "*+-/\\&|<>~^=,;:@" >>= withAttribute "Operator")))
+     return (attr, result)
+
+parseRules "_adjoint" = 
+  do (attr, result) <- ((pRegExpr (compileRegex "'+") >>= withAttribute "Operator") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Mediawiki.hs b/Text/Highlighting/Kate/Syntax/Mediawiki.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Mediawiki.hs
@@ -0,0 +1,210 @@
+{- This module was generated from data in the Kate syntax highlighting file mediawiki.xml, version 1.02,
+   by   -}
+
+module Text.Highlighting.Kate.Syntax.Mediawiki ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "MediaWiki"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = ""
+
+-- | 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 = "MediaWiki" }
+  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 [("MediaWiki",["normal"])], synStLanguage = "MediaWiki", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = False, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "normal" -> return ()
+    "Table" -> return ()
+    "comment" -> return ()
+    "URL" -> return ()
+    "WikiLink" -> return ()
+    "WikiLinkDescription" -> return ()
+    "Link" -> return ()
+    "Error" -> (popContext >> return ())
+    "Template" -> return ()
+    "NoWiki" -> return ()
+    "Unformatted" -> (popContext >> return ())
+    "Pre" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal","Normal"),("Link","Others"),("URL","Others"),("Comment","Comment"),("Section","Keyword"),("HTML-Entity","DecVal"),("HTML-Tag","Keyword"),("Wiki-Tag","DecVal"),("Error","Error"),("NoWiki","Normal"),("Unformatted","Normal")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("normal","Normal"),("Table","Normal"),("comment","Comment"),("URL","Link"),("WikiLink","Link"),("WikiLinkDescription","Link"),("Link","Template"),("Error","Error"),("Template","Link"),("NoWiki","NoWiki"),("Unformatted","Unformatted"),("Pre","NoWiki")]
+
+parseRules "normal" = 
+  do (attr, result) <- (((pString False "<!--" >>= withAttribute "Comment") >>~ pushContext "comment")
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "([=]{2,2}[^=]+[=]{2,2}|[=]{3,3}[^=]+[=]{3,3}|[=]{4,4}[^=]+[=]{4,4}|[=]{5,5}[^=]+[=]{5,5})") >>= withAttribute "Section"))
+                        <|>
+                        ((pRegExpr (compileRegex "[~]{3,4}") >>= withAttribute "Wiki-Tag"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "[*#;:\\s]*[*#:]+") >>= withAttribute "Wiki-Tag"))
+                        <|>
+                        ((pRegExpr (compileRegex "[[](?![[])") >>= withAttribute "Wiki-Tag") >>~ pushContext "URL")
+                        <|>
+                        ((pRegExpr (compileRegex "(http:|ftp:|mailto:)[\\S]*($|[\\s])") >>= withAttribute "URL"))
+                        <|>
+                        ((pRegExpr (compileRegex "[']{2,}") >>= withAttribute "Wiki-Tag"))
+                        <|>
+                        ((pColumn 0 >> pDetect2Chars False '{' '|' >>= withAttribute "Wiki-Tag") >>~ pushContext "Table")
+                        <|>
+                        ((pDetect2Chars False '{' '{' >>= withAttribute "Wiki-Tag") >>~ pushContext "Template")
+                        <|>
+                        ((pDetect2Chars False '[' '[' >>= withAttribute "Wiki-Tag") >>~ pushContext "WikiLink")
+                        <|>
+                        ((pRangeDetect '&' ';' >>= withAttribute "HTML-Entity"))
+                        <|>
+                        ((pString False "<nowiki>" >>= withAttribute "Wiki-Tag") >>~ pushContext "NoWiki")
+                        <|>
+                        ((pString False "<pre>" >>= withAttribute "HTML-Tag") >>~ pushContext "Pre")
+                        <|>
+                        ((pRegExpr (compileRegex "[<][^>]+[>]") >>= withAttribute "HTML-Tag"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "[\\s]") >>= withAttribute "Normal") >>~ pushContext "Unformatted"))
+     return (attr, result)
+
+parseRules "Table" = 
+  do (attr, result) <- (((pString False "<!--" >>= withAttribute "Comment") >>~ pushContext "comment")
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "([=]{2,2}[^=]+[=]{2,2}|[=]{3,3}[^=]+[=]{3,3}|[=]{4,4}[^=]+[=]{4,4}|[=]{5,5}[^=]+[=]{5,5})") >>= withAttribute "Section"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "[*#;:\\s]*[*#:]+") >>= withAttribute "Wiki-Tag"))
+                        <|>
+                        ((pRegExpr (compileRegex "[[](?![[])") >>= withAttribute "Wiki-Tag") >>~ pushContext "URL")
+                        <|>
+                        ((pRegExpr (compileRegex "(http:|ftp:|mailto:)[\\S]*($|[\\s])") >>= withAttribute "URL"))
+                        <|>
+                        ((pRegExpr (compileRegex "[']{2,}") >>= withAttribute "Wiki-Tag"))
+                        <|>
+                        ((pColumn 0 >> pDetect2Chars False '|' '}' >>= withAttribute "Wiki-Tag") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '|' >>= withAttribute "Wiki-Tag"))
+                        <|>
+                        ((pDetect2Chars False '{' '{' >>= withAttribute "Wiki-Tag") >>~ pushContext "Template")
+                        <|>
+                        ((pDetect2Chars False '[' '[' >>= withAttribute "Wiki-Tag") >>~ pushContext "WikiLink")
+                        <|>
+                        ((pRangeDetect '&' ';' >>= withAttribute "HTML-Entity"))
+                        <|>
+                        ((pString False "<nowiki>" >>= withAttribute "Wiki-Tag") >>~ pushContext "NoWiki")
+                        <|>
+                        ((pString False "<pre>" >>= withAttribute "HTML-Tag") >>~ pushContext "Pre")
+                        <|>
+                        ((pRegExpr (compileRegex "[<][^>]+[>]") >>= withAttribute "HTML-Tag"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "[\\s]") >>= withAttribute "Normal") >>~ pushContext "Unformatted")
+                        <|>
+                        ((pRegExpr (compileRegex "[~]{3,4}") >>= withAttribute "Wiki-Tag"))
+                        <|>
+                        ((pRegExpr (compileRegex "[-]{4,}") >>= withAttribute "Wiki-Tag"))
+                        <|>
+                        ((pColumn 0 >> pDetectChar False '!' >>= withAttribute "Wiki-Tag")))
+     return (attr, result)
+
+parseRules "comment" = 
+  do (attr, result) <- ((pString False "-->" >>= withAttribute "Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "URL" = 
+  do (attr, result) <- (((pDetectChar False ']' >>= withAttribute "Wiki-Tag") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Error") >>~ pushContext "Error"))
+     return (attr, result)
+
+parseRules "WikiLink" = 
+  do (attr, result) <- (((pDetectChar False '|' >>= withAttribute "Wiki-Tag") >>~ pushContext "WikiLinkDescription")
+                        <|>
+                        ((pDetect2Chars False ']' ']' >>= withAttribute "Wiki-Tag") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Error") >>~ pushContext "Error"))
+     return (attr, result)
+
+parseRules "WikiLinkDescription" = 
+  do (attr, result) <- ((pDetect2Chars False ']' ']' >>= withAttribute "Wiki-Tag") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Link" = 
+  do (attr, result) <- (((pDetect2Chars False '}' '}' >>= withAttribute "Wiki-Tag") >>~ (popContext >> return ()))
+                        <|>
+                        ((pAnyChar "'[]" >>= withAttribute "Error") >>~ pushContext "Error"))
+     return (attr, result)
+
+parseRules "Error" = 
+  pzero
+
+parseRules "Template" = 
+  do (attr, result) <- (((pDetect2Chars False '}' '}' >>= withAttribute "Wiki-Tag") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Error") >>~ pushContext "Error"))
+     return (attr, result)
+
+parseRules "NoWiki" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "<!--[^-]*-->") >>= withAttribute "NoWiki"))
+                        <|>
+                        ((pString False "</nowiki>" >>= withAttribute "Wiki-Tag") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[<][^>]+[>]") >>= withAttribute "HTML-Tag"))
+                        <|>
+                        ((pString False "<pre>" >>= withAttribute "HTML-Tag") >>~ pushContext "Pre"))
+     return (attr, result)
+
+parseRules "Unformatted" = 
+  pzero
+
+parseRules "Pre" = 
+  do (attr, result) <- ((pString False "</pre>" >>= withAttribute "Wiki-Tag") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Modula3.hs b/Text/Highlighting/Kate/Syntax/Modula3.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Modula3.hs
@@ -0,0 +1,126 @@
+{- This module was generated from data in the Kate syntax highlighting file modula-3.xml, version 1.01,
+   by   -}
+
+module Text.Highlighting.Kate.Syntax.Modula3 ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Modula-3"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.m3;*.i3;*.ig;*.mg;"
+
+-- | 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 = "Modula-3" }
+  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 [("Modula-3",["Normal"])], synStLanguage = "Modula-3", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "String1" -> (popContext >> return ())
+    "Comment2" -> return ()
+    "Prep1" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Operator","Keyword"),("Type","DataType"),("Integer","BaseN"),("Real","Float"),("Constant","DecVal"),("String","String"),("Char","Char"),("Pervasive","Function"),("StdLib","Function"),("Comment","Comment"),("Pragma","Others")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal Text"),("String1","String"),("Comment2","Comment"),("Prep1","Pragma")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "PROCEDURE[\\s].*\\(") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "END\\s*[A-Za-z][A-Za-z0-9_]*\\;") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b(RECORD|OBJECT|TRY|WHILE|FOR|REPEAT|LOOP|IF|CASE|WITH)\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b(END;|END)\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t():!+,-<=>%&*/;?[]^{|}~\\" ["ANY","ARRAY","AS","BEGIN","BITS","BRANDED","BY","CASE","CONST","DO","ELSE","ELSIF","END","EVAL","EXCEPT","EXCEPTION","EXIT","EXPORTS","FINALLY","FOR","FROM","GENERIC","IF","IMPORT","INTERFACE","LOCK","LOOP","METHODS","MODULE","OBJECT","OF","OVERRIDES","PROCEDURE","RAISE","RAISES","READONLY","RECORD","REF","REPEAT","RETURN","REVEAL","ROOT","SET","THEN","TO","TRY","TYPE","TYPECASE","UNSAFE","UNTIL","UNTRACED","VALUE","VAR","WHILE","WITH"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t():!+,-<=>%&*/;?[]^{|}~\\" ["AND","DIV","IN","MOD","NOT","OR","+","<","#","=",";","..",":","-",">","{","}","|",":=","<:","*","<=","(",")","^",",","=>","/",">=","[","]",".","&"] >>= withAttribute "Operator"))
+                        <|>
+                        ((pKeyword " \n\t():!+,-<=>%&*/;?[]^{|}~\\" ["ADDRESS","BOOLEAN","CARDINAL","CHAR","EXTENDED","INTEGER","LONGREAL","MUTEX","NULL","REAL","REFANY","T","TEXT"] >>= withAttribute "Type"))
+                        <|>
+                        ((pKeyword " \n\t():!+,-<=>%&*/;?[]^{|}~\\" ["FALSE","NIL","TRUE"] >>= withAttribute "Constant"))
+                        <|>
+                        ((pKeyword " \n\t():!+,-<=>%&*/;?[]^{|}~\\" ["ABS","ADR","ADRSIZE","BITSIZE","BYTESIZE","CEILING","DEC","DISPOSE","FIRST","FLOAT","FLOOR","INC","ISTYPE","LAST","LOOPHOLE","MAX","MIN","NARROW","NEW","NUMBER","ORD","ROUND","SUBARRAY","TRUNC","TYPECODE","VAL"] >>= withAttribute "Pervasive"))
+                        <|>
+                        ((pKeyword " \n\t():!+,-<=>%&*/;?[]^{|}~\\" ["Text","Text.Length","Text.Empty","Text.Equal","Text.Compare","Text.Cat","Text.Sub","Text.Hash","Text.HasWideChar","Text.GetChar","Text.GetWideChar","Text.SetChars","Text.SetWideChars","Text.FromChars","Text.FromWideChars","Text.FindChar","Text.FindWideChar","Text.FindCharR","Text.FindWideCharR","Fmt","Fmt.Bool","Fmt.Char","Fmt.Int","Fmt.Unsigned","Fmt.Real","Fmt.LongReal","Fmt.Extended","Fmt.Pad","Fmt.F","Fmt.FN","Scan","Scan.Bool","Scan.Int","Scan.Unsigned","Scan.Real","Scan.LongReal","Scan.Extended","IO","IO.Put","IO.PutChar","IO.PutWideChar","IO.PutInt","IO.PutReal","IO.EOF","IO.GetLine","IO.GetChar","IO.GetWideChar","IO.GetInt","IO.GetReal","IO.OpenRead","IO.OpenWrite","Rd","Rd.GetChar","Rd.GetWideChar","Rd.EOF","Rd.UnGetChar","Rd.CharsReady","Rd.GetSub","Rd.GetWideSub","Rd.GetSubLine","Rd.GetWideSubLine","Rd.GetText","Rd.GetWideText","Rd.GetLine","Rd.GetWideLine","Rd.Seek","Rd.Close","Rd.Index","Rd.Length","Rd.Intermittend","Rd.Seekable","Rd.Closed","Wr","Wr.PutChar","Wr.PutWideChar","Wr.PutText","Wr.PutWideText","Wr.PutString","Wr.PutWideString","Wr.Seek","Wr.Flush","Wr.Close","Wr.Length","Wr.Index","Wr.Seekable","Wr.Closed","Wr.Buffered","Lex","Lex.Scan","Lex.Skip","Lex.Match","Lex.Bool","Lex.Int","Lex.Unsigned","Lex.Real","Lex.LongReal","Lex.Extended","Params","Params.Count","Params.Get","Env","Env.Count","Env.Get","Env.GetNth"] >>= withAttribute "StdLib"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[\\+|\\-]{0,1}[0-9]{1,}\\.[0-9]{1,}([E|e|D|d|X|x][\\+|\\-]{0,1}[0-9]{1,}){0,1}\\b") >>= withAttribute "Real"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b([\\+|\\-]{0,1}[0-9]{1,}|([2-9]|1[0-6])\\_[0-9A-Fa-f]{1,})\\b") >>= withAttribute "Integer"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String1")
+                        <|>
+                        ((pRegExpr (compileRegex "\\'(.|\\\\[ntrf\\\\'\"]|\\\\[0-7]{3})\\'") >>= withAttribute "Char"))
+                        <|>
+                        ((pDetect2Chars False '<' '*' >>= withAttribute "Pragma") >>~ pushContext "Prep1")
+                        <|>
+                        ((pDetect2Chars False '(' '*' >>= withAttribute "Comment") >>~ pushContext "Comment2"))
+     return (attr, result)
+
+parseRules "String1" = 
+  do (attr, result) <- ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Comment2" = 
+  do (attr, result) <- (((pDetect2Chars False '(' '*' >>= withAttribute "Comment") >>~ pushContext "Comment2")
+                        <|>
+                        ((pDetect2Chars False '*' ')' >>= withAttribute "Comment") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Prep1" = 
+  do (attr, result) <- ((pDetect2Chars False '*' '>' >>= withAttribute "Pragma") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Nasm.hs b/Text/Highlighting/Kate/Syntax/Nasm.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Nasm.hs
@@ -0,0 +1,126 @@
+{- This module was generated from data in the Kate syntax highlighting file nasm.xml, version 1.30,
+   by  Nicola Gigante (nicola.gigante@gmail.com) -}
+
+module Text.Highlighting.Kate.Syntax.Nasm ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Intel x86 (NASM)"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.asm"
+
+-- | 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 = "Intel x86 (NASM)" }
+  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 [("Intel x86 (NASM)",["Normal"])], synStLanguage = "Intel x86 (NASM)", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = False, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "Comment" -> (popContext >> return ())
+    "Preprocessor" -> (popContext >> return ())
+    "String" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Registers","Keyword"),("Instructions","Keyword"),("NASM Keywords","Keyword"),("Comment","Comment"),("Label","Function"),("Data","DataType"),("BaseN","BaseN"),("Float","Float"),("Number","DecVal"),("Char","Char"),("String","String"),("Preprocessor","Others")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal Text"),("Comment","Comment"),("Preprocessor","Preprocessor"),("String","String")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["eax","ax","ah","al","ebx","bx","bh","bl","ecx","cx","ch","cl","edx","dx","dh","dl","ebp","bp","esi","si","edi","di","esp","sp","cs","ds","es","fs","gs","ss","cr0","cr2","cr3","cr4","dr0","dr1","dr2","dr3","dr6","dr7","st","mm0","mm1","mm2","mm3","mm4","mm5","mm6","mm7","xmm0","xmm1","xmm2","xmm3","xmm4","xmm5","xmm6","xmm7"] >>= withAttribute "Registers"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["times","equ","db","dw","dd","dq","dt","resb","resw","resd","resq","rest","incbin","byte","word","dword","qword","short","ptr"] >>= withAttribute "Data"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["aaa","aad","aam","aas","adc","add","addpd","addps","addsd","addss","addsubpd","addsubps","and","andnpd","andnps","andpd","andps","arpl","bound","bsf","bsr","bswap","bt","btc","btr","bts","call","cbw","cwde","cwd","cdq","cdqe","cqo","clc","cld","clgi","cli","clts","clflush","cmc","cmova","cmovae","cmovb","cmovbe","cmovc","cmove","cmovg","cmovge","cmovl","cmovle","cmovna","cmovnae","cmovnb","cmovnbe","cmovnc","cmovne","cmovng","cmovnge","cmovnl","cmovnle","cmovno","cmovnp","cmovns","cmovnz","cmovo","cmovp","cmovpe","cmovpo","cmovs","cmovz","cmp","cmpeqpd","cmpeqps","cmpeqsd","cmpeqss","cmplepd","cmpleps","cmplesd","cmpless","cmpltpd","cmpltps","cmpltsd","cmpltss","cmpneqpd","cmpneqps","cmpneqsd","cmpneqss","cmpnlepd","cmpnleps","cmpnlesd","cmpnless","cmpnltpd","cmpnltps","cmpnltsd","cmpnltss","cmpordpd","cmpordps","cmpordsd","cmpordss","cmppd","cmpps","cmps","cmpsb","cmpsd","cmpss","cmpsw","cmpunordpd","cmpunordps","cmpunordsd","cmpunordss","cmpxchg","cmpxchg486","cmpxchg8b","cmpxchg16b","comisd","comiss","cpuid","cvtdq2pd","cvtdq2ps","cvtpd2dq","cvtpd2pi","cvtpd2ps","cvtpi2pd","cvtpi2ps","cvtps2dq","cvtps2pd","cvtps2pi","cvtsd2si","cvtsd2ss","cvtsi2sd","cvtsi2ss","cvtss2sd","cvtss2si","cvttpd2dq","cvttpd2pi","cvttps2dq","cvttps2pi","cvttsd2si","cvttss2si","daa","das","dec","div","divpd","divps","divsd","divss","emms","enter","f2xm1","fabs","fadd","faddp","fbld","fbstp","fchs","fclex","fnclex","fcmovb","fcmovbe","fcmove","fcmovnb","fcmovnbe","fcmovne","fcmovnu","fcmovu","fcom","fcomp","fcompp","fcomi","fcomip","fcos","fdecstp","fdisi","feni","fdiv","fdivr","fdivp","fdivrp","femms","ffree","ffreep","fiadd","ficom","ficomp","fidiv","fidivr","fild","fimul","fincstp","finit","fist","fistp","fisttp","fisub","fisubr","fld","fld1","fldl2e","fldl2t","fldlg2","fldln2","fldcw","fldenv","fldpi","fldz","fmul","fmulp","fndisi","fneni","fninit","fnop","fnsave","fnstcw","fnstenv","fnstsw","fnwait","fpatan","fptan","fprem","fprem1","frndint","frstor","fsave","fscale","fsetpm","fsin","fsincos","fsqrt","fst","fstp","fstcw","fstenv","fstsw","fsub","fsubr","fsubp","fsubrp","ftst","fucom","fucomp","fucompp","fucomi","fucomip","fwait","fxam","fxch","fxrstor","fxsave","fxtract","fyl2x","fyl2xp1","haddpd","haddps","hlt","hsubpd","hsubps","ibts","idiv","imul","in","inc","ins","insb","insd","insw","int","int1","int3","into","invd","invlpg","invlpga","iret","iretd","iretq","iretw","ja","jae","jb","jbe","jc","je","jg","jge","jl","jle","jna","jnae","jnb","jnbe","jnc","jne","jng","jnge","jnl","jnle","jno","jnp","jns","jnz","jo","jp","jpe","jpo","js","jz","jcxz","jecxz","jrcxz","jmp","lahf","lar","lddqu","ldmxcsr","lds","les","lea","leave","lfence","lfs","lgdt","lgs","lidt","lldt","lmsw","loadall","loadall286","lods","lodsb","lodsd","lodsq","lodsw","loop","loope","loopne","loopnz","loopz","lsl","lss","ltr","maskmovdqu","maskmovq","maxpd","maxps","maxsd","maxss","mfence","minpd","minps","minsd","minss","monitor","mov","movapd","movaps","movd","movddup","movdq2q","movdqa","movdqu","movhlps","movhpd","movhps","movlhps","movlpd","movlps","movmskpd","movmskps","movntdq","movnti","movntpd","movntps","movntq","movq","movq2dq","movs","movsb","movsd","movshdup","movsldup","movsq","movss","movsx","movsxd","movsw","movupd","movups","movzx","mul","mulpd","mulps","mulsd","mulss","mwait","neg","nop","not","or","orpd","orps","out","outs","outsb","outsw","outsd","packssdw","packsswb","packuswb","paddb","paddd","paddq","paddsb","paddsw","paddusb","paddusw","paddw","pand","pandn","pause","pavgb","pavgusb","pavgw","pcmpeqb","pcmpeqw","pcmpeqd","pcmpgtb","pcmpgtw","pcmpgtd","pdistib","pextrw","pf2id","pf2iw","pfacc","pfadd","pfcmpeq","pfcmpge","pfcmpgt","pfmax","pfmin","pfmul","pfnacc","pfpnacc","pfrcp","pfrcpit1","pfrcpit2","pfrsqit1","pfrsqrt","pfsub","pfsubr","pi2fd","pi2fw","pinsrw","pmachriw","pmaddwd","pmagw","pmaxsw","pmaxub","pminsw","pminub","pmovmskb","pmulhrw","pmulhuw","pmulhw","pmullw","pmuludq","pmvgezb","pmvlzb","pmvnzb","pmvzb","pop","popa","popaw","popad","popf","popfw","popfd","popfq","por","prefetch","prefetchnta","prefetcht0","prefetcht1","prefetcht2","prefetchw","psadbw","pshufd","pshufhw","pshuflw","pshufw","pslld","pslldq","psllq","psllw","psrad","psraw","psrld","psrldq","psrlq","psrlw","psubb","psubd","psubq","psubsb","psubsiw","psubsw","psubusb","psubusw","psubw","pswapd","punpckhbw","punpckhdq","punpckhqdq","punpckhwd","punpcklbw","punpckldq","punpcklqdq","punpcklwd","push","pusha","pushad","pushaw","pushf","pushfd","pushfq","pushfw","pxor","rcl","rcr","rcpps","rcpss","rdmsr","rdpmc","rdshr","rdtsc","rdtscp","ret","retf","retn","rol","ror","rsdc","rsldt","rsm","rsqrtps","rsqrtss","rsts","sahf","sal","sar","salc","sbb","scas","scasb","scasd","scasq","scasw","seta","setae","setb","setbe","setc","sete","setg","setge","setl","setle","setna","setnae","setnb","setnbe","setnc","setne","setng","setnge","setnl","setnle","setno","setnp","setns","setnz","seto","setp","setpe","setpo","sets","setz","sfence","sgdt","shl","shld","shr","shrd","shufpd","shufps","sidt","skinit","sldt","smi","smint","smintold","smsw","sqrtpd","sqrtps","sqrtsd","sqrtss","stc","std","stgi","sti","stmxcsr","stos","stosb","stosd","stosq","stosw","str","sub","subpd","subps","subsd","subss","svdc","svldt","svts","swapgs","syscall","sysenter","sysexit","sysret","test","ucomisd","ucomiss","ud0","ud1","ud2","umov","unpckhpd","unpckhps","unpcklpd","unpcklps","verr","verw","vmload","vmmcall","vmrun","vmsave","wait","wbinvd","wrmsr","wrshr","xadd","xbts","xchg","xlat","xlatb","xor","xorpd","xorps"] >>= withAttribute "Instructions"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["absolute","bits","common","extern","global","org","section","seg","segment","strict","use16","use32","wrt","struc","endstruc","istruc","at","iend","align","alignb","__SECT__","__NASM_MAJOR__","__NASM_MINOR__","__NASM_SUBMINOR__","___NASM_PATCHLEVEL__","__NASM_VERSION_ID__","__NASM_VER__","__FILE__","__LINE__"] >>= withAttribute "NASM Keywords"))
+                        <|>
+                        ((pDetectChar False ';' >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pDetectChar False '%' >>= withAttribute "Preprocessor") >>~ pushContext "Preprocessor")
+                        <|>
+                        ((pAnyChar "\"'" >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "\\s*[A-Za-z0-9_.$]+:") >>= withAttribute "Label"))
+                        <|>
+                        ((pRegExpr (compileRegex "(cmov|fcmov|j|loop|set)(a|ae|b|be|c|e|g|ge|l|le|na|nae|nb|nbe|nc|ne|ng|nge|nl|nle|no|np|ns|nz|o|p|pe|po|s|z)") >>= withAttribute "Instructions"))
+                        <|>
+                        ((pRegExpr (compileRegex "cpu (pentium|ppro|p2|p3|katmai|p4|willamette|prescott|ia64)*") >>= withAttribute "NASM Keywords"))
+                        <|>
+                        ((pRegExpr (compileRegex "(^|[ \\t,]+)((\\$|0x){1}[0-9]+[a-f0-9]*|[a-f0-9]+h)([ \\t,]+|$)") >>= withAttribute "BaseN"))
+                        <|>
+                        ((pRegExpr (compileRegex "(^|[ \\t,]+)([0-7]+(q|o)|[01]+b)([ \\t,]+|$)") >>= withAttribute "BaseN"))
+                        <|>
+                        ((pDetectChar False '$' >>= withAttribute "Number"))
+                        <|>
+                        ((pHlCOct >>= withAttribute "BaseN"))
+                        <|>
+                        ((pHlCHex >>= withAttribute "BaseN"))
+                        <|>
+                        ((pFloat >>= withAttribute "Float"))
+                        <|>
+                        ((pInt >>= withAttribute "Number"))
+                        <|>
+                        ((pHlCChar >>= withAttribute "Char")))
+     return (attr, result)
+
+parseRules "Comment" = 
+  pzero
+
+parseRules "Preprocessor" = 
+  pzero
+
+parseRules "String" = 
+  do (attr, result) <- ((pAnyChar "\"'" >>= withAttribute "String") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Objectivec.hs b/Text/Highlighting/Kate/Syntax/Objectivec.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Objectivec.hs
@@ -0,0 +1,160 @@
+{- This module was generated from data in the Kate syntax highlighting file objectivec.xml, version 1.07,
+   by   -}
+
+module Text.Highlighting.Kate.Syntax.Objectivec ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Doxygen
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Objective-C"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.m;*.h"
+
+-- | 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 = "Objective-C" }
+  context <- currentContext <|> (pushContext "Default" >> 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 [("Objective-C",["Default"])], synStLanguage = "Objective-C", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Default" -> return ()
+    "String" -> (popContext >> return ())
+    "SingleLineComment" -> (popContext >> return ())
+    "MultiLineComment" -> return ()
+    "Preprocessor" -> pushContext "Default"
+    "MultiLineCommentPrep" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Data Type","DataType"),("Decimal","DecVal"),("Octal","BaseN"),("Hex","BaseN"),("Float","Float"),("Char","Char"),("String","String"),("String Char","Char"),("Comment","Comment"),("Symbol","Normal"),("Preprocessor","Others"),("Prep. Lib","Others")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Default","Normal Text"),("String","String"),("SingleLineComment","Comment"),("MultiLineComment","Comment"),("Preprocessor","Preprocessor"),("MultiLineCommentPrep","Comment")]
+
+parseRules "Default" = 
+  do (attr, result) <- (((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["break","case","continue","default","do","else","enum","extern","for","goto","if","return","sizeof","struct","switch","typedef","union","while","@class","@defs","@encode","@end","@implementation","@interface","@private","@protected","@protocol","@public","@selector","self","super"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["auto","char","const","double","float","int","long","register","short","signed","static","unsigned","void","volatile"] >>= withAttribute "Data Type"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Symbol"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Symbol"))
+                        <|>
+                        (withChildren (pFloat >>= withAttribute "Float") ((pAnyChar "fF" >>= withAttribute "Float")))
+                        <|>
+                        ((pHlCOct >>= withAttribute "Octal"))
+                        <|>
+                        ((pHlCHex >>= withAttribute "Hex"))
+                        <|>
+                        (withChildren (pInt >>= withAttribute "Decimal") (((pString False "ULL" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "LUL" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "LLU" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "UL" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "LU" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "LL" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "U" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "L" >>= withAttribute "Decimal"))))
+                        <|>
+                        ((pHlCChar >>= withAttribute "Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((pDetect2Chars False '/' '/' >>= withAttribute "Comment") >>~ pushContext "SingleLineComment")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "MultiLineComment")
+                        <|>
+                        ((pAnyChar ":!%&()+,-/.*<=>?[]|~^;" >>= withAttribute "Symbol"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "#") >>= withAttribute "Preprocessor") >>~ pushContext "Preprocessor")
+                        <|>
+                        ((pDetect2Chars False '@' '"' >>= withAttribute "String") >>~ pushContext "String"))
+     return (attr, result)
+
+parseRules "String" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "String"))
+                        <|>
+                        ((pHlCStringChar >>= withAttribute "String Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "SingleLineComment" = 
+  pzero
+
+parseRules "MultiLineComment" = 
+  do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Preprocessor" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "Preprocessor"))
+                        <|>
+                        ((pRangeDetect '"' '"' >>= withAttribute "Prep. Lib"))
+                        <|>
+                        ((pRangeDetect '<' '>' >>= withAttribute "Prep. Lib"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Doxygen.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetect2Chars False '/' '/' >>= withAttribute "Comment") >>~ pushContext "SingleLineComment")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "MultiLineCommentPrep"))
+     return (attr, result)
+
+parseRules "MultiLineCommentPrep" = 
+  do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> popContext >> return ()))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Ocaml.hs b/Text/Highlighting/Kate/Syntax/Ocaml.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Ocaml.hs
@@ -0,0 +1,136 @@
+{- This module was generated from data in the Kate syntax highlighting file ocaml.xml, version 1.04,
+   by  Glyn Webster (glyn@wave.co.nz) -}
+
+module Text.Highlighting.Kate.Syntax.Ocaml ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Objective Caml"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.ml;*.mli"
+
+-- | 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 = "Objective Caml" }
+  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 [("Objective Caml",["Normal"])], synStLanguage = "Objective Caml", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "Multiline Comment" -> return ()
+    "String Constant" -> return ()
+    "Camlp4 Quotation Constant" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Identifier","Normal"),("Keyword","Keyword"),("Revised Syntax Keyword","Normal"),("Core Data Type","DataType"),("Decimal","DecVal"),("Hexadecimal","BaseN"),("Octal","BaseN"),("Binary","BaseN"),("Float","Float"),("Character","Char"),("String","String"),("Escaped characters","Char"),("Comment","Comment"),("Camlp4 Quotation","String"),("Directive","Others")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal Text"),("Multiline Comment","Comment"),("String Constant","String"),("Camlp4 Quotation Constant","Camlp4 Quotation")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((pDetect2Chars False '(' '*' >>= withAttribute "Comment") >>~ pushContext "Multiline Comment")
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#[A-Za-z\\0300-\\0326\\0330-\\0366\\0370-\\0377_][A-Za-z\\0300-\\0326\\0330-\\0366\\0370-\\03770-9_']*.*$") >>= withAttribute "Directive"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String Constant")
+                        <|>
+                        ((pRegExpr (compileRegex "'((\\\\[ntbr'\"\\\\]|\\\\[0-9]{3}|\\\\x[0-9A-Fa-f]{2})|[^'])'") >>= withAttribute "Character"))
+                        <|>
+                        ((pDetect2Chars False '<' '<' >>= withAttribute "Camlp4 Quotation") >>~ pushContext "Camlp4 Quotation Constant")
+                        <|>
+                        ((pRegExpr (compileRegex "<:[A-Za-z\\0300-\\0326\\0330-\\0366\\0370-\\0377_][A-Za-z\\0300-\\0326\\0330-\\0366\\0370-\\03770-9_']*<") >>= withAttribute "Camlp4 Quotation") >>~ pushContext "Camlp4 Quotation Constant")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["and","as","assert","asr","begin","class","closed","constraint","do","done","downto","else","end","exception","external","false","for","fun","function","functor","if","in","include","inherit","land","lazy","let","lor","lsl","lsr","lxor","match","method","mod","module","mutable","new","of","open","or","parser","private","rec","sig","struct","then","to","true","try","type","val","virtual","when","while","with"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["declare","value","where"] >>= withAttribute "Revised Syntax Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["exn","lazy_t","format","unit","int","real","char","string","ref","array","bool","list","option"] >>= withAttribute "Core Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "[A-Za-z\\0300-\\0326\\0330-\\0366\\0370-\\0377_][A-Za-z\\0300-\\0326\\0330-\\0366\\0370-\\03770-9_']*") >>= withAttribute "Identifier"))
+                        <|>
+                        ((pRegExpr (compileRegex "-?0[xX][0-9A-Fa-f_]+") >>= withAttribute "Hexadecimal"))
+                        <|>
+                        ((pRegExpr (compileRegex "-?0[oO][0-7_]+") >>= withAttribute "Octal"))
+                        <|>
+                        ((pRegExpr (compileRegex "-?0[bB][01_]+") >>= withAttribute "Binary"))
+                        <|>
+                        ((pRegExpr (compileRegex "-?[0-9][0-9_]*(\\.[0-9][0-9_]*([eE][-+]?[0-9][0-9_]*)?|[eE][-+]?[0-9][0-9_]*)") >>= withAttribute "Float"))
+                        <|>
+                        ((pRegExpr (compileRegex "-?[0-9][0-9_]*") >>= withAttribute "Decimal")))
+     return (attr, result)
+
+parseRules "Multiline Comment" = 
+  do (attr, result) <- (((pDetect2Chars False '*' ')' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetect2Chars False '(' '*' >>= withAttribute "Comment") >>~ pushContext "Multiline Comment"))
+     return (attr, result)
+
+parseRules "String Constant" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "(\\\\[ntbr'\"\\\\]|\\\\[0-9]{3}|\\\\x[0-9A-Fa-f]{2})") >>= withAttribute "Escaped characters"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\$") >>= withAttribute "Escaped characters")))
+     return (attr, result)
+
+parseRules "Camlp4 Quotation Constant" = 
+  do (attr, result) <- (((pDetect2Chars False '>' '>' >>= withAttribute "Camlp4 Quotation") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetect2Chars False '<' '<' >>= withAttribute "Camlp4 Quotation") >>~ pushContext "Camlp4 Quotation Constant")
+                        <|>
+                        ((pRegExpr (compileRegex "<:[A-Za-z\\0300-\\0326\\0330-\\0366\\0370-\\0377_][A-Za-z\\0300-\\0326\\0330-\\0366\\0370-\\03770-9_']*<") >>= withAttribute "Camlp4 Quotation") >>~ pushContext "Camlp4 Quotation Constant")
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\(\\\\|>>|<<)") >>= withAttribute "Escaped characters"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\<:[A-Za-z\\0300-\\0326\\0330-\\0366\\0370-\\0377_][A-Za-z\\0300-\\0326\\0330-\\0366\\0370-\\03770-9_']*<") >>= withAttribute "Escaped characters")))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Pascal.hs b/Text/Highlighting/Kate/Syntax/Pascal.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Pascal.hs
@@ -0,0 +1,139 @@
+{- This module was generated from data in the Kate syntax highlighting file pascal.xml, version 1.21,
+   by   -}
+
+module Text.Highlighting.Kate.Syntax.Pascal ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Pascal"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.pp;*.pas;*.p"
+
+-- | 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 = "Pascal" }
+  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 [("Pascal",["Normal"])], synStLanguage = "Pascal", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = False, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "String" -> (popContext >> return ())
+    "Prep1" -> (popContext >> return ())
+    "Prep2" -> (popContext >> return ())
+    "Comment1" -> return ()
+    "Comment2" -> return ()
+    "Comment3" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("ISO/Delphi Extended","Keyword"),("Type","DataType"),("Number","DecVal"),("String","String"),("Directive","Others"),("Comment","Comment"),("Alert","Alert")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal Text"),("String","String"),("Prep1","Directive"),("Prep2","Directive"),("Comment1","Comment"),("Comment2","Comment"),("Comment3","Comment")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\b(begin|case|record)(?=(\\{[^}]*(\\}|$)|\\(\\*.*(\\*\\)|$))*([\\s]|$|//))") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b((object|class)(?=(\\(.*\\))?(\\{[^}]*(\\}|$)|\\(\\*.*(\\*\\)|$))*;?([\\s]|$|//))|try(?=(\\{[^}]*(\\}|$)|\\(\\*.*(\\*\\)|$))*([\\s]|$|//)))") >>= withAttribute "ISO/Delphi Extended"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bend(?=((\\{[^}]*(\\}|$)|\\(\\*.*(\\*\\)|$))*)([.;\\s]|$)|//|$)") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["and","array","asm","case","const","div","do","downto","else","file","for","function","goto","if","in","label","mod","nil","not","of","operator","or","packed","procedure","program","record","repeat","set","then","to","type","unit","until","uses","var","while","with","xor","at","automated","break","continue","dispinterface","dispose","exit","false","finalization","initialization","library","new","published","resourcestring","self","true"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["abstract","as","bindable","constructor","destructor","except","export","finally","import","implementation","inherited","inline","interface","is","module","on","only","otherwise","override","private","property","protected","public","read","qualified","raise","restricted","shl","shr","threadvar","try","virtual","write"] >>= withAttribute "ISO/Delphi Extended"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["Integer","Cardinal","ShortInt","SmallInt","LongInt","Int64","Byte","Word","LongWord","Char","AnsiChar","WideChar","Boolean","ByteBool","WordBool","LongBool","Single","Double","Extended","Comp","Currency","Real","Real48","String","ShortString","AnsiString","WideString","Pointer","Variant","File","Text"] >>= withAttribute "Type"))
+                        <|>
+                        ((pFloat >>= withAttribute "Number"))
+                        <|>
+                        ((pInt >>= withAttribute "Number"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((pString False "(*$" >>= withAttribute "Directive") >>~ pushContext "Prep1")
+                        <|>
+                        ((pDetect2Chars False '{' '$' >>= withAttribute "Directive") >>~ pushContext "Prep2")
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Comment") >>~ pushContext "Comment1")
+                        <|>
+                        ((pDetect2Chars False '(' '*' >>= withAttribute "Comment") >>~ pushContext "Comment2")
+                        <|>
+                        ((pDetect2Chars False '/' '/' >>= withAttribute "Comment") >>~ pushContext "Comment3"))
+     return (attr, result)
+
+parseRules "String" = 
+  do (attr, result) <- ((pDetectChar False '\'' >>= withAttribute "String") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Prep1" = 
+  do (attr, result) <- ((pDetect2Chars False '*' ')' >>= withAttribute "Directive") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Prep2" = 
+  do (attr, result) <- ((pDetectChar False '}' >>= withAttribute "Directive") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Comment1" = 
+  do (attr, result) <- (((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["FIXME","TODO","###"] >>= withAttribute "Alert"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Comment") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Comment2" = 
+  do (attr, result) <- (((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["FIXME","TODO","###"] >>= withAttribute "Alert"))
+                        <|>
+                        ((pDetect2Chars False '*' ')' >>= withAttribute "Comment") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Comment3" = 
+  do (attr, result) <- ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["FIXME","TODO","###"] >>= withAttribute "Alert"))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Perl.hs b/Text/Highlighting/Kate/Syntax/Perl.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Perl.hs
@@ -0,0 +1,842 @@
+{- This module was generated from data in the Kate syntax highlighting file perl.xml, version 1.20,
+   by  Anders Lund (anders@alweb.dk) -}
+
+module Text.Highlighting.Kate.Syntax.Perl ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Alert
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Perl"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.pl;*.pm"
+
+-- | 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 = "Perl" }
+  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 [("Perl",["normal"])], synStLanguage = "Perl", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "normal" -> return ()
+    "find_quoted" -> return ()
+    "find_qqx" -> return ()
+    "find_qw" -> return ()
+    "ipstring_internal" -> return ()
+    "ip_string" -> return ()
+    "ip_string_2" -> return ()
+    "ip_string_3" -> return ()
+    "ip_string_4" -> return ()
+    "ip_string_5" -> return ()
+    "ip_string_6" -> return ()
+    "string" -> return ()
+    "string_2" -> return ()
+    "string_3" -> return ()
+    "string_4" -> return ()
+    "string_5" -> return ()
+    "string_6" -> return ()
+    "find_subst" -> return ()
+    "subst_curlybrace_pattern" -> return ()
+    "subst_curlybrace_middle" -> return ()
+    "subst_curlybrace_replace" -> return ()
+    "subst_curlybrace_replace_recursive" -> return ()
+    "subst_paren_pattern" -> return ()
+    "subst_paren_replace" -> return ()
+    "subst_bracket_pattern" -> return ()
+    "subst_bracket_replace" -> return ()
+    "subst_slash_pattern" -> return ()
+    "subst_slash_replace" -> return ()
+    "subst_sq_pattern" -> return ()
+    "subst_sq_replace" -> return ()
+    "tr" -> (popContext >> return ())
+    "find_pattern" -> return ()
+    "pattern_slash" -> return ()
+    "pattern" -> return ()
+    "pattern_brace" -> return ()
+    "pattern_bracket" -> return ()
+    "pattern_paren" -> return ()
+    "pattern_sq" -> return ()
+    "regex_pattern_internal_rules_1" -> return ()
+    "regex_pattern_internal_rules_2" -> return ()
+    "regex_pattern_internal" -> return ()
+    "regex_pattern_internal_ip" -> return ()
+    "pat_ext" -> return ()
+    "pat_char_class" -> return ()
+    "find_variable" -> (popContext >> return ())
+    "find_variable_unsafe" -> (popContext >> return ())
+    "var_detect" -> (popContext >> popContext >> return ())
+    "var_detect_unsafe" -> (popContext >> popContext >> return ())
+    "var_detect_rules" -> (popContext >> popContext >> return ())
+    "quote_word" -> return ()
+    "quote_word_paren" -> return ()
+    "quote_word_brace" -> return ()
+    "quote_word_bracket" -> return ()
+    "find_here_document" -> (popContext >> return ())
+    "here_document" -> return ()
+    "here_document_dumb" -> return ()
+    "data_handle" -> return ()
+    "end_handle" -> return ()
+    "Backticked" -> return ()
+    "slash_safe_escape" -> (popContext >> return ())
+    "package_qualified_blank" -> return ()
+    "sub_name_def" -> (popContext >> return ())
+    "sub_arg_definition" -> return ()
+    "pod" -> return ()
+    "comment" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Pragma","Keyword"),("Function","Function"),("Operator","Keyword"),("Data Type","DataType"),("Special Variable","DataType"),("Decimal","DecVal"),("Octal","BaseN"),("Hex","BaseN"),("Float","Float"),("String","String"),("String (interpolated)","String"),("String Special Character","Char"),("Pattern","Others"),("Pattern Internal Operator","Char"),("Pattern Character Class","BaseN"),("Data","Normal"),("Comment","Comment"),("Pod","Comment"),("Nothing","Comment")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("normal","Normal Text"),("find_quoted","Normal Text"),("find_qqx","Normal Text"),("find_qw","Normal Text"),("ipstring_internal","String (interpolated)"),("ip_string","String (interpolated)"),("ip_string_2","String (interpolated)"),("ip_string_3","String (interpolated)"),("ip_string_4","String (interpolated)"),("ip_string_5","String (interpolated)"),("ip_string_6","String (interpolated)"),("string","String"),("string_2","String"),("string_3","String"),("string_4","String"),("string_5","String"),("string_6","String"),("find_subst","Normal Text"),("subst_curlybrace_pattern","Pattern"),("subst_curlybrace_middle","Normal Text"),("subst_curlybrace_replace","String (interpolated)"),("subst_curlybrace_replace_recursive","String (interpolated)"),("subst_paren_pattern","Pattern"),("subst_paren_replace","String (interpolated)"),("subst_bracket_pattern","Pattern"),("subst_bracket_replace","String (interpolated)"),("subst_slash_pattern","Pattern"),("subst_slash_replace","String (interpolated)"),("subst_sq_pattern","Pattern"),("subst_sq_replace","String"),("tr","Pattern"),("find_pattern","Pattern"),("pattern_slash","Pattern"),("pattern","Pattern"),("pattern_brace","Pattern"),("pattern_bracket","Pattern"),("pattern_paren","Pattern"),("pattern_sq","Pattern"),("regex_pattern_internal_rules_1",""),("regex_pattern_internal_rules_2",""),("regex_pattern_internal","Pattern"),("regex_pattern_internal_ip","Pattern"),("pat_ext","Pattern Internal Operator"),("pat_char_class","Pattern Character Class"),("find_variable","Data Type"),("find_variable_unsafe","Data Type"),("var_detect","Data Type"),("var_detect_unsafe","Data Type"),("var_detect_rules","Data Type"),("quote_word","Normal Text"),("quote_word_paren","Normal Text"),("quote_word_brace","Normal Text"),("quote_word_bracket","Normal Text"),("find_here_document","Normal Text"),("here_document","String (interpolated)"),("here_document_dumb","Normal Text"),("data_handle","Data"),("end_handle","Nothing"),("Backticked","String (interpolated)"),("slash_safe_escape","Normal Text"),("package_qualified_blank","Normal Text"),("sub_name_def","Normal Text"),("sub_arg_definition","Normal Text"),("pod","Pod"),("comment","Comment")]
+
+parseRules "normal" = 
+  do (attr, result) <- (((pColumn 0 >> pRegExpr (compileRegex "#!\\/.*") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pFirstNonSpace >> pString False "__DATA__" >>= withAttribute "Keyword") >>~ pushContext "data_handle")
+                        <|>
+                        ((pFirstNonSpace >> pString False "__END__" >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bsub\\s+") >>= withAttribute "Keyword") >>~ pushContext "sub_name_def")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["if","unless","else","elsif","while","until","for","each","foreach","next","last","break","continue","return","use","no","require","my","our","local","BEGIN","END","require","package","sub","do","__END__","__DATA__","__FILE__","__LINE__","__PACKAGE__"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["=","!=","~=","+=","-=","*=","/=","**=","|=","||=","&=","&&=","?=","+","-","*","%","||","&&","|","&","<","<<",">",">>","^","->","=>",".",",",";","::","\\","and","or","not","eq","ne"] >>= withAttribute "Operator"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["abs","accept","alarm","atan2","bind","binmode","bless","caller","chdir","chmod","chomp","chop","chown","chr","chroot","close","closedir","connect","cos","crypt","dbmclose","dbmopen","defined","delete","die","dump","endgrent","endhostent","endnetent","endprotoent","endpwent","endservent","eof","eval","exec","exists","exit","exp","fcntl","fileno","flock","fork","format","formline","getc","getgrent","getgrgid","getgrnam","gethostbyaddr","gethostbyname","gethostent","getlogin","getnetbyaddr","getnetbyname","getnetent","getpeername","getpgrp","getppid","getpriority","getprotobyname","getprotobynumber","getprotoent","getpwent","getpwnam","getpwuid","getservbyname","getservbyport","getservent","getsockname","getsockopt","glob","gmtime","goto","grep","hex","import","index","int","ioctl","join","keys","kill","last","lc","lcfirst","length","link","listen","localtime","lock","log","lstat","map","mkdir","msgctl","msgget","msgrcv","msgsnd","oct","open","opendir","ord","pack","package","pipe","pop","pos","print","printf","prototype","push","quotemeta","rand","read","readdir","readline","readlink","recv","redo","ref","rename","reset","return","reverse","rewinddir","rindex","rmdir","scalar","seek","seekdir","select","semctl","semget","semop","send","setgrent","sethostent","setnetent","setpgrp","setpriority","setprotoent","setpwent","setservent","setsockopt","shift","shmctl","shmget","shmread","shmwrite","shutdown","sin","sleep","socket","socketpair","sort","splice","split","sprintf","sqrt","srand","stat","study","sub","substr","symlink","syscall","sysread","sysseek","system","syswrite","tell","telldir","tie","time","times","truncate","uc","ucfirst","umask","undef","unlink","unpack","unshift","untie","utime","values","vec","wait","waitpid","wantarray","warn","write"] >>= withAttribute "Function"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["strict","english","warnings","vars","subs","utf8","sigtrap","locale","open","less","integer","filetest","constant","bytes","diagnostics"] >>= withAttribute "Pragma"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "\\=(?:head[1-6]|over|back|item|for|begin|end|pod)(\\s|$)") >>= withAttribute "Pod") >>~ pushContext "pod")
+                        <|>
+                        ((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '#' >>= withAttribute "Comment") >>~ pushContext "comment")
+                        <|>
+                        ((pHlCOct >>= withAttribute "Octal") >>~ pushContext "slash_safe_escape")
+                        <|>
+                        ((pHlCHex >>= withAttribute "Hex") >>~ pushContext "slash_safe_escape")
+                        <|>
+                        ((pFloat >>= withAttribute "Float") >>~ pushContext "slash_safe_escape")
+                        <|>
+                        ((pInt >>= withAttribute "Decimal") >>~ pushContext "slash_safe_escape")
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\([\"'])[^\\1]") >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetect2Chars False '&' '\'' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Operator") >>~ pushContext "ip_string")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Operator") >>~ pushContext "string")
+                        <|>
+                        ((pDetectChar False '`' >>= withAttribute "Operator") >>~ pushContext "Backticked")
+                        <|>
+                        ((pRegExpr (compileRegex "(?:[$@]\\S|%[\\w{]|\\*[^\\d\\*{\\$@%=(])") >>= withAttribute "Normal Text") >>~ pushContext "find_variable")
+                        <|>
+                        ((pRegExpr (compileRegex "<[A-Z0-9_]+>") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*<<(?=\\w+|\\s*[\"'])") >>= withAttribute "Operator") >>~ pushContext "find_here_document")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*\\}\\s*/") >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*[)]\\s*/") >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\w+::") >>= withAttribute "Function") >>~ pushContext "sub_name_def")
+                        <|>
+                        ((pRegExpr (compileRegex "\\w+[=]") >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bq(?=[qwx]?\\s*[^\\w\\s])") >>= withAttribute "Operator") >>~ pushContext "find_quoted")
+                        <|>
+                        ((pRegExpr (compileRegex "\\bs(?=\\s*[^\\w\\s])") >>= withAttribute "Operator") >>~ pushContext "find_subst")
+                        <|>
+                        ((pRegExpr (compileRegex "\\b(?:tr|y)\\s*(?=[^\\w\\s\\]})])") >>= withAttribute "Operator") >>~ pushContext "tr")
+                        <|>
+                        ((pRegExpr (compileRegex "\\b(?:m|qr)(?=\\s*[^\\w\\s\\]})])") >>= withAttribute "Operator") >>~ pushContext "find_pattern")
+                        <|>
+                        ((pRegExpr (compileRegex "[\\w_]+\\s*/") >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "[<>\"':]/") >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '/' >>= withAttribute "Operator") >>~ pushContext "pattern_slash")
+                        <|>
+                        ((pRegExpr (compileRegex "-[rwxoRWXOeszfdlpSbctugkTBMAC]") >>= withAttribute "Operator"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text")))
+     return (attr, result)
+
+parseRules "find_quoted" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "x\\s*(')") >>= withAttribute "Operator") >>~ pushContext "string_6")
+                        <|>
+                        ((pAnyChar "qx" >>= withAttribute "Operator") >>~ pushContext "find_qqx")
+                        <|>
+                        ((pDetectChar False 'w' >>= withAttribute "Operator") >>~ pushContext "find_qw")
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Operator") >>~ pushContext "string_2")
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Operator") >>~ pushContext "string_3")
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Operator") >>~ pushContext "string_4")
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "Operator") >>~ pushContext "string_5")
+                        <|>
+                        ((pRegExpr (compileRegex "([^a-zA-Z0-9_\\s[\\]{}()])") >>= withAttribute "Operator") >>~ pushContext "string_6")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s+#.*") >>= withAttribute "Comment")))
+     return (attr, result)
+
+parseRules "find_qqx" = 
+  do (attr, result) <- (((pDetectChar False '(' >>= withAttribute "Operator") >>~ pushContext "ip_string_2")
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Operator") >>~ pushContext "ip_string_3")
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Operator") >>~ pushContext "ip_string_4")
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "Operator") >>~ pushContext "ip_string_5")
+                        <|>
+                        ((pRegExpr (compileRegex "([^a-zA-Z0-9_\\s[\\]{}()])") >>= withAttribute "Operator") >>~ pushContext "ip_string_6")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s+#.*") >>= withAttribute "Comment")))
+     return (attr, result)
+
+parseRules "find_qw" = 
+  do (attr, result) <- (((pDetectChar False '(' >>= withAttribute "Operator") >>~ pushContext "quote_word_paren")
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Operator") >>~ pushContext "quote_word_brace")
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Operator") >>~ pushContext "quote_word_bracket")
+                        <|>
+                        ((pRegExpr (compileRegex "([^a-zA-Z0-9_\\s[\\]{}()])") >>= withAttribute "Operator") >>~ pushContext "quote_word")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s+#.*") >>= withAttribute "Comment")))
+     return (attr, result)
+
+parseRules "ipstring_internal" = 
+  do (attr, result) <- (((pDetectIdentifier >>= withAttribute "String (interpolated)"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\[UuLlEtnaefr]") >>= withAttribute "String Special Character"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\.") >>= withAttribute "String (interpolated)"))
+                        <|>
+                        ((pRegExpr (compileRegex "(?:[\\$@]\\S|%[\\w{])") >>= withAttribute "Normal Text") >>~ pushContext "find_variable_unsafe"))
+     return (attr, result)
+
+parseRules "ip_string" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "Operator") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "ipstring_internal")))
+     return (attr, result)
+
+parseRules "ip_string_2" = 
+  do (attr, result) <- (((pRangeDetect '(' ')' >>= withAttribute "String (interpolated)"))
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Operator") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "ipstring_internal")))
+     return (attr, result)
+
+parseRules "ip_string_3" = 
+  do (attr, result) <- (((pRangeDetect '{' '}' >>= withAttribute "String (interpolated)"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Operator") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "ipstring_internal")))
+     return (attr, result)
+
+parseRules "ip_string_4" = 
+  do (attr, result) <- (((pRangeDetect '[' ']' >>= withAttribute "String (interpolated)"))
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "Operator") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "ipstring_internal")))
+     return (attr, result)
+
+parseRules "ip_string_5" = 
+  do (attr, result) <- (((pRangeDetect '<' '>' >>= withAttribute "String (interpolated)"))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Operator") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "ipstring_internal")))
+     return (attr, result)
+
+parseRules "ip_string_6" = 
+  do (attr, result) <- (((pRegExprDynamic "\\%1" >>= withAttribute "String (interpolated)"))
+                        <|>
+                        ((pDetectChar True '1' >>= withAttribute "Operator") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "ipstring_internal")))
+     return (attr, result)
+
+parseRules "string" = 
+  do (attr, result) <- (((pDetectIdentifier >>= withAttribute "String"))
+                        <|>
+                        ((pDetect2Chars False '\\' '\'' >>= withAttribute "String Special Character"))
+                        <|>
+                        ((pDetect2Chars False '\\' '\\' >>= withAttribute "String Special Character"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Operator") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "string_2" = 
+  do (attr, result) <- (((pDetectIdentifier >>= withAttribute "String"))
+                        <|>
+                        ((pDetect2Chars False '\\' ')' >>= withAttribute "String Special Character"))
+                        <|>
+                        ((pDetect2Chars False '\\' '\\' >>= withAttribute "String Special Character"))
+                        <|>
+                        ((pRangeDetect '(' ')' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Operator") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "string_3" = 
+  do (attr, result) <- (((pDetectIdentifier >>= withAttribute "String"))
+                        <|>
+                        ((pDetect2Chars False '\\' '}' >>= withAttribute "String Special Character"))
+                        <|>
+                        ((pDetect2Chars False '\\' '\\' >>= withAttribute "String Special Character"))
+                        <|>
+                        ((pRangeDetect '{' '}' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Operator") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "string_4" = 
+  do (attr, result) <- (((pDetectIdentifier >>= withAttribute "String"))
+                        <|>
+                        ((pDetect2Chars False '\\' ']' >>= withAttribute "String Special Character"))
+                        <|>
+                        ((pDetect2Chars False '\\' '\\' >>= withAttribute "String Special Character"))
+                        <|>
+                        ((pRangeDetect '[' ']' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "Operator") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "string_5" = 
+  do (attr, result) <- (((pDetectIdentifier >>= withAttribute "String"))
+                        <|>
+                        ((pDetect2Chars False '\\' '<' >>= withAttribute "String Special Character"))
+                        <|>
+                        ((pDetect2Chars False '\\' '\\' >>= withAttribute "String Special Character"))
+                        <|>
+                        ((pDetect2Chars False '\\' '>' >>= withAttribute "String"))
+                        <|>
+                        ((pRangeDetect '<' '>' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Operator") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "string_6" = 
+  do (attr, result) <- (((pDetectIdentifier >>= withAttribute "String"))
+                        <|>
+                        ((pDetect2Chars False '\\' '\\' >>= withAttribute "String Special Character"))
+                        <|>
+                        ((pRegExprDynamic "\\%1" >>= withAttribute "String Special Character"))
+                        <|>
+                        ((pDetectChar True '1' >>= withAttribute "Operator") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "find_subst" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\s+#.*") >>= withAttribute "Comment"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Operator") >>~ pushContext "subst_curlybrace_pattern")
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Operator") >>~ pushContext "subst_paren_pattern")
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Operator") >>~ pushContext "subst_bracket_pattern")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Operator") >>~ pushContext "subst_sq_pattern")
+                        <|>
+                        ((pRegExpr (compileRegex "([^\\w\\s[\\]{}()])") >>= withAttribute "Operator") >>~ pushContext "subst_slash_pattern"))
+     return (attr, result)
+
+parseRules "subst_curlybrace_pattern" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\s+#.*$") >>= withAttribute "Comment"))
+                        <|>
+                        ((parseRules "regex_pattern_internal_ip"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Operator") >>~ pushContext "subst_curlybrace_middle"))
+     return (attr, result)
+
+parseRules "subst_curlybrace_middle" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "#.*$") >>= withAttribute "Comment"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Operator") >>~ pushContext "subst_curlybrace_replace"))
+     return (attr, result)
+
+parseRules "subst_curlybrace_replace" = 
+  do (attr, result) <- (((parseRules "ipstring_internal"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Normal Text") >>~ pushContext "subst_curlybrace_replace_recursive")
+                        <|>
+                        ((pRegExpr (compileRegex "\\}[cegimosx]*") >>= withAttribute "Operator") >>~ (popContext >> popContext >> popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "subst_curlybrace_replace_recursive" = 
+  do (attr, result) <- (((pDetectChar False '{' >>= withAttribute "String (interpolated)") >>~ pushContext "subst_curlybrace_replace_recursive")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "ipstring_internal")))
+     return (attr, result)
+
+parseRules "subst_paren_pattern" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\s+#.*$") >>= withAttribute "Comment"))
+                        <|>
+                        ((parseRules "regex_pattern_internal_ip"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Operator") >>~ pushContext "subst_paren_replace"))
+     return (attr, result)
+
+parseRules "subst_paren_replace" = 
+  do (attr, result) <- (((parseRules "ipstring_internal"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\)[cegimosx]*") >>= withAttribute "Operator") >>~ (popContext >> popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "subst_bracket_pattern" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\s+#.*$") >>= withAttribute "Comment"))
+                        <|>
+                        ((parseRules "regex_pattern_internal_ip"))
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "Operator") >>~ pushContext "subst_bracket_replace"))
+     return (attr, result)
+
+parseRules "subst_bracket_replace" = 
+  do (attr, result) <- (((parseRules "ipstring_internal"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\][cegimosx]*") >>= withAttribute "Operator") >>~ (popContext >> popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "subst_slash_pattern" = 
+  do (attr, result) <- (((pRegExprDynamic "\\$(?=%1)" >>= withAttribute "Pattern Internal Operator"))
+                        <|>
+                        ((pRegExprDynamic "(%1)" >>= withAttribute "Operator") >>~ pushContext "subst_slash_replace")
+                        <|>
+                        ((parseRules "regex_pattern_internal_ip")))
+     return (attr, result)
+
+parseRules "subst_slash_replace" = 
+  do (attr, result) <- (((parseRules "ipstring_internal"))
+                        <|>
+                        ((pRegExprDynamic "%1[cegimosx]*" >>= withAttribute "Operator") >>~ (popContext >> popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "subst_sq_pattern" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\s+#.*$") >>= withAttribute "Comment"))
+                        <|>
+                        ((parseRules "regex_pattern_internal"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Operator") >>~ pushContext "subst_sq_replace"))
+     return (attr, result)
+
+parseRules "subst_sq_replace" = 
+  do (attr, result) <- ((pRegExpr (compileRegex "'[cegimosx]*") >>= withAttribute "Operator") >>~ (popContext >> popContext >> popContext >> return ()))
+     return (attr, result)
+
+parseRules "tr" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\([^)]*\\)\\s*\\(?:[^)]*\\)") >>= withAttribute "Pattern") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "{[^}]*\\}\\s*\\{[^}]*\\}") >>= withAttribute "Pattern") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\[[^}]*\\]\\s*\\[[^\\]]*\\]") >>= withAttribute "Pattern") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "([^a-zA-Z0-9_\\s[\\]{}()]).*\\1.*\\1") >>= withAttribute "Pattern") >>~ (popContext >> return ()))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "find_pattern" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\s+#.*") >>= withAttribute "Comment"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Operator") >>~ pushContext "pattern_brace")
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Operator") >>~ pushContext "pattern_paren")
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Operator") >>~ pushContext "pattern_bracket")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Operator") >>~ pushContext "pattern_sq")
+                        <|>
+                        ((pRegExpr (compileRegex "([^\\w\\s])") >>= withAttribute "Operator") >>~ pushContext "pattern"))
+     return (attr, result)
+
+parseRules "pattern_slash" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\$(?=/)") >>= withAttribute "Pattern Internal Operator"))
+                        <|>
+                        ((parseRules "regex_pattern_internal_ip"))
+                        <|>
+                        ((pRegExpr (compileRegex "/[cgimosx]*") >>= withAttribute "Operator") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "pattern" = 
+  do (attr, result) <- (((pRegExprDynamic "\\$(?=%1)" >>= withAttribute "Pattern Internal Operator"))
+                        <|>
+                        ((pRegExprDynamic "%1[cgimosx]*" >>= withAttribute "Operator") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "regex_pattern_internal_ip"))
+                        <|>
+                        ((pRegExprDynamic "\\$(?=\\%1)" >>= withAttribute "Pattern Internal Operator")))
+     return (attr, result)
+
+parseRules "pattern_brace" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\}[cgimosx]*") >>= withAttribute "Operator") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "regex_pattern_internal_ip")))
+     return (attr, result)
+
+parseRules "pattern_bracket" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\][cgimosx]*") >>= withAttribute "Operator") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "regex_pattern_internal_ip")))
+     return (attr, result)
+
+parseRules "pattern_paren" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\)[cgimosx]*") >>= withAttribute "Operator") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "regex_pattern_internal_ip")))
+     return (attr, result)
+
+parseRules "pattern_sq" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "'[cgimosx]*") >>= withAttribute "Operator") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "regex_pattern_internal")))
+     return (attr, result)
+
+parseRules "regex_pattern_internal_rules_1" = 
+  do (attr, result) <- (((pFirstNonSpace >> pRegExpr (compileRegex "#.*$") >>= withAttribute "Comment"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\[anDdSsWw]") >>= withAttribute "Pattern Character Class"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\[ABbEGLlNUuQdQZz]") >>= withAttribute "Pattern Internal Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\[\\d]+") >>= withAttribute "Special Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\.") >>= withAttribute "Pattern")))
+     return (attr, result)
+
+parseRules "regex_pattern_internal_rules_2" = 
+  do (attr, result) <- (((pDetect2Chars False '(' '?' >>= withAttribute "Pattern Internal Operator") >>~ pushContext "pat_ext")
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Pattern Internal Operator") >>~ pushContext "pat_char_class")
+                        <|>
+                        ((pRegExpr (compileRegex "[()?\\^*+|]") >>= withAttribute "Pattern Internal Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\{[\\d, ]+\\}") >>= withAttribute "Pattern Internal Operator"))
+                        <|>
+                        ((pDetectChar False '$' >>= withAttribute "Pattern Internal Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s{3,}#.*$") >>= withAttribute "Comment")))
+     return (attr, result)
+
+parseRules "regex_pattern_internal" = 
+  do (attr, result) <- (((parseRules "regex_pattern_internal_rules_1"))
+                        <|>
+                        ((parseRules "regex_pattern_internal_rules_2")))
+     return (attr, result)
+
+parseRules "regex_pattern_internal_ip" = 
+  do (attr, result) <- (((parseRules "regex_pattern_internal_rules_1"))
+                        <|>
+                        ((pRegExpr (compileRegex "[$@][^\\]\\s{}()|>']") >>= withAttribute "Data Type") >>~ pushContext "find_variable_unsafe")
+                        <|>
+                        ((parseRules "regex_pattern_internal_rules_2")))
+     return (attr, result)
+
+parseRules "pat_ext" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\#[^)]*") >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[:=!><]+") >>= withAttribute "Pattern Internal Operator") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Pattern Internal Operator") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "pat_char_class" = 
+  do (attr, result) <- (((pDetectChar False '^' >>= withAttribute "Pattern Internal Operator"))
+                        <|>
+                        ((pDetect2Chars False '\\' '\\' >>= withAttribute "Pattern Character Class"))
+                        <|>
+                        ((pDetect2Chars False '\\' ']' >>= withAttribute "Pattern Character Class"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\[:\\^?[a-z]+:\\]") >>= withAttribute "Pattern Character Class"))
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "Pattern Internal Operator") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "find_variable" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\$[0-9]+") >>= withAttribute "Special Variable") >>~ pushContext "var_detect")
+                        <|>
+                        ((pRegExpr (compileRegex "[@\\$](?:[\\+\\-_]\\B|ARGV\\b|INC\\b)") >>= withAttribute "Special Variable") >>~ pushContext "var_detect")
+                        <|>
+                        ((pRegExpr (compileRegex "[%\\$](?:INC\\b|ENV\\b|SIG\\b)") >>= withAttribute "Special Variable") >>~ pushContext "var_detect")
+                        <|>
+                        ((pRegExpr (compileRegex "\\$\\$[\\$\\w_]") >>= withAttribute "Data Type") >>~ pushContext "var_detect")
+                        <|>
+                        ((pRegExpr (compileRegex "\\$[#_][\\w_]") >>= withAttribute "Data Type") >>~ pushContext "var_detect")
+                        <|>
+                        ((pRegExpr (compileRegex "\\$+::") >>= withAttribute "Data Type") >>~ pushContext "var_detect")
+                        <|>
+                        ((pRegExpr (compileRegex "\\$[^a-zA-Z0-9\\s{][A-Z]?") >>= withAttribute "Special Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "[\\$@%]\\{[\\w_]+\\}") >>= withAttribute "Data Type") >>~ pushContext "var_detect")
+                        <|>
+                        ((pAnyChar "$@%" >>= withAttribute "Data Type") >>~ pushContext "var_detect")
+                        <|>
+                        ((pRegExpr (compileRegex "\\*[a-zA-Z_]+") >>= withAttribute "Data Type") >>~ pushContext "var_detect")
+                        <|>
+                        ((pRegExpr (compileRegex "\\*[^a-zA-Z0-9\\s{][A-Z]?") >>= withAttribute "Special Variable"))
+                        <|>
+                        ((pAnyChar "$@%*" >>= withAttribute "Operator") >>~ (popContext >> return ()))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "find_variable_unsafe" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\$[0-9]+") >>= withAttribute "Special Variable") >>~ pushContext "var_detect_unsafe")
+                        <|>
+                        ((pRegExpr (compileRegex "[@\\$](?:[\\+\\-_]\\B|ARGV\\b|INC\\b)") >>= withAttribute "Special Variable") >>~ pushContext "var_detect_unsafe")
+                        <|>
+                        ((pRegExpr (compileRegex "[%\\$](?:INC\\b|ENV\\b|SIG\\b)") >>= withAttribute "Special Variable") >>~ pushContext "var_detect_unsafe")
+                        <|>
+                        ((pRegExpr (compileRegex "\\$\\$[\\$\\w_]") >>= withAttribute "Data Type") >>~ pushContext "var_detect_unsafe")
+                        <|>
+                        ((pRegExpr (compileRegex "\\$[#_][\\w_]") >>= withAttribute "Data Type") >>~ pushContext "var_detect_unsafe")
+                        <|>
+                        ((pRegExpr (compileRegex "\\$+::") >>= withAttribute "Data Type") >>~ pushContext "var_detect_unsafe")
+                        <|>
+                        ((pRegExpr (compileRegex "\\$[^a-zA-Z0-9\\s{][A-Z]?") >>= withAttribute "Special Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "[\\$@%]\\{[\\w_]+\\}") >>= withAttribute "Data Type") >>~ pushContext "var_detect_unsafe")
+                        <|>
+                        ((pRegExpr (compileRegex "[\\$@%]") >>= withAttribute "Data Type") >>~ pushContext "var_detect_unsafe")
+                        <|>
+                        ((pRegExpr (compileRegex "\\*\\w+") >>= withAttribute "Data Type") >>~ pushContext "var_detect_unsafe")
+                        <|>
+                        ((pAnyChar "$@%*" >>= withAttribute "Operator") >>~ (popContext >> return ()))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "var_detect" = 
+  do (attr, result) <- (((parseRules "var_detect_rules"))
+                        <|>
+                        ((parseRules "slash_safe_escape"))
+                        <|>
+                        ((popContext >> popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "var_detect_unsafe" = 
+  do (attr, result) <- (((parseRules "var_detect_rules"))
+                        <|>
+                        ((popContext >> popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "var_detect_rules" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "[\\w_]+") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pDetect2Chars False ':' ':' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Operator"))
+                        <|>
+                        ((pDetect2Chars False '-' '>' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetect2Chars False '+' '+' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetect2Chars False '-' '-' >>= withAttribute "Normal Text")))
+     return (attr, result)
+
+parseRules "quote_word" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExprDynamic "\\\\%1" >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar True '1' >>= withAttribute "Operator") >>~ (popContext >> popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "quote_word_paren" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetect2Chars False '\\' ')' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Operator") >>~ (popContext >> popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "quote_word_brace" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetect2Chars False '\\' '}' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Operator") >>~ (popContext >> popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "quote_word_bracket" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetect2Chars False '\\' ']' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "Operator") >>~ (popContext >> popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "find_here_document" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "(\\w+)\\s*;?") >>= withAttribute "Keyword") >>~ pushContext "here_document")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*\"([^\"]+)\"\\s*;?") >>= withAttribute "Keyword") >>~ pushContext "here_document")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*`([^`]+)`\\s*;?") >>= withAttribute "Keyword") >>~ pushContext "here_document")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*'([^']+)'\\s*;?") >>= withAttribute "Keyword") >>~ pushContext "here_document_dumb"))
+     return (attr, result)
+
+parseRules "here_document" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "String (interpolated)"))
+                        <|>
+                        ((pColumn 0 >> pRegExprDynamic "%1" >>= withAttribute "Keyword") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\=\\s*<<\\s*[\"']?([A-Z0-9_\\-]+)[\"']?") >>= withAttribute "Keyword") >>~ pushContext "here_document")
+                        <|>
+                        ((parseRules "ipstring_internal")))
+     return (attr, result)
+
+parseRules "here_document_dumb" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pColumn 0 >> pRegExprDynamic "%1" >>= withAttribute "Keyword") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Normal Text")))
+     return (attr, result)
+
+parseRules "data_handle" = 
+  do (attr, result) <- (((pColumn 0 >> pRegExpr (compileRegex "\\=(?:head[1-6]|over|back|item|for|begin|end|pod)\\s+.*") >>= withAttribute "Pod") >>~ pushContext "pod")
+                        <|>
+                        ((pFirstNonSpace >> pString False "__END__" >>= withAttribute "Keyword") >>~ pushContext "normal"))
+     return (attr, result)
+
+parseRules "end_handle" = 
+  do (attr, result) <- (((pColumn 0 >> pRegExpr (compileRegex "\\=(?:head[1-6]|over|back|item|for|begin|end|pod)\\s*.*") >>= withAttribute "Pod") >>~ pushContext "pod")
+                        <|>
+                        ((pFirstNonSpace >> pString False "__DATA__" >>= withAttribute "Keyword") >>~ pushContext "data_handle"))
+     return (attr, result)
+
+parseRules "Backticked" = 
+  do (attr, result) <- (((parseRules "ipstring_internal"))
+                        <|>
+                        ((pDetectChar False '`' >>= withAttribute "Operator") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "slash_safe_escape" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\s*\\]?\\s*/") >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*\\}?\\s*/") >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*\\)?\\s*/") >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["if","unless","else","elsif","while","until","for","each","foreach","next","last","break","continue","return","use","no","require","my","our","local","BEGIN","END","require","package","sub","do","__END__","__DATA__","__FILE__","__LINE__","__PACKAGE__"] >>= withAttribute "Keyword") >>~ (popContext >> return ()))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "package_qualified_blank" = 
+  do (attr, result) <- ((pRegExpr (compileRegex "[\\w_]+") >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "sub_name_def" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\w+") >>= withAttribute "Function"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$\\S") >>= withAttribute "Normal Text") >>~ pushContext "find_variable")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*\\(") >>= withAttribute "Normal Text") >>~ pushContext "sub_arg_definition")
+                        <|>
+                        ((pDetect2Chars False ':' ':' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "sub_arg_definition" = 
+  do (attr, result) <- (((pAnyChar "*$@%" >>= withAttribute "Data Type"))
+                        <|>
+                        ((pAnyChar "&\\[];" >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Normal Text") >>~ pushContext "slash_safe_escape")
+                        <|>
+                        ((popContext >> popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "pod" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Pod"))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Pod"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "\\=(?:head[1-6]|over|back|item|for|begin|end|pod)\\s*.*") >>= withAttribute "Pod"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "\\=cut.*$") >>= withAttribute "Pod") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "comment" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Comment")))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Php.hs b/Text/Highlighting/Kate/Syntax/Php.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Php.hs
@@ -0,0 +1,209 @@
+{- This module was generated from data in the Kate syntax highlighting file php.xml, version 1.32,
+   by   -}
+
+module Text.Highlighting.Kate.Syntax.Php ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Doxygen
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "PHP/PHP"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = ""
+
+-- | 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 = "PHP/PHP" }
+  context <- currentContext <|> (pushContext "start" >> 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 [("PHP/PHP",["start"])], synStLanguage = "PHP/PHP", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = False, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "start" -> return ()
+    "braceregion" -> return ()
+    "phpsource" -> return ()
+    "onelinecomment" -> (popContext >> return ())
+    "twolinecomment" -> return ()
+    "doublebackquotestringcommon" -> return ()
+    "backquotestring" -> return ()
+    "doblequotestring" -> return ()
+    "singlequotestring" -> return ()
+    "heredoc" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("PHP Text","Normal"),("Keyword","Keyword"),("Function","Function"),("Special method","Function"),("Decimal","DecVal"),("Octal","BaseN"),("Hex","BaseN"),("Float","Float"),("String","String"),("Comment","Comment"),("Variable","Keyword"),("Control Structures","Keyword"),("Backslash Code","Keyword"),("Other","Others"),("HTML Tag","Keyword"),("HTML Comment","Comment"),("Identifier","Others"),("Types","DataType")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("start","Normal Text"),("braceregion","Normal Text"),("phpsource","PHP Text"),("onelinecomment","Comment"),("twolinecomment","Comment"),("doublebackquotestringcommon","String"),("backquotestring","String"),("doblequotestring","String"),("singlequotestring","String"),("heredoc","String")]
+
+parseRules "start" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "<\\?(?:=|php)?") >>= withAttribute "Keyword") >>~ pushContext "phpsource")
+                        <|>
+                        ((pString False "?>" >>= withAttribute "Keyword") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "braceregion" = 
+  do (attr, result) <- (((parseRules "phpsource"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "phpsource" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "PHP Text"))
+                        <|>
+                        ((pString False "?>" >>= withAttribute "Keyword") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '#' >>= withAttribute "Comment") >>~ pushContext "onelinecomment")
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Doxygen.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetect2Chars False '/' '/' >>= withAttribute "Comment") >>~ pushContext "onelinecomment")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "twolinecomment")
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["as","case","default","if","else","elseif","while","do","for","foreach","break","continue","switch","declare","return","require","include","require_once","include_once","endif","endwhile","endfor","endforeach","endswitch"] >>= withAttribute "Control Structures"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["abstract","catch","class","clone","const","extends","final","function","implements","instanceof","interface","new","self","static","parent","private","protected","public","throw","try","and","or","xor","var","__FILE__","__LINE__","E_ERROR","E_WARNING","E_PARSE","E_NOTICE","E_STRICT","E_CORE_ERROR","E_CORE_WARNING","E_COMPILE_ERROR","E_COMPILE_WARNING","E_USER_ERROR","E_USER_WARNING","E_USER_NOTICE","E_ALL","TRUE","FALSE","ZEND_THREAD_SAFE","NULL","PHP_VERSION","PHP_OS","PHP_SAPI","DEFAULT_INCLUDE_PATH","PEAR_INSTALL_DIR","PEAR_EXTENSION_DIR","PHP_EXTENSION_DIR","PHP_PREFIX","PHP_BINDIR","PHP_LIBDIR","PHP_DATADIR","PHP_SYSCONFDIR","PHP_LOCALSTATEDIR","PHP_CONFIG_FILE_PATH","PHP_CONFIG_FILE_SCAN_DIR","PHP_SHLIB_SUFFIX","PHP_EOL","PHP_OUTPUT_HANDLER_START","PHP_OUTPUT_HANDLER_CONT","PHP_OUTPUT_HANDLER_END","UPLOAD_ERR_OK","UPLOAD_ERR_INI_SIZE","UPLOAD_ERR_FORM_SIZE","UPLOAD_ERR_PARTIAL","UPLOAD_ERR_NO_FILE","UPLOAD_ERR_NO_TMP_DIR","P_STATIC","P_PUBLIC","P_PROTECTED","P_PRIVATE","M_STATIC","M_PUBLIC","M_PROTECTED","M_PRIVATE","M_ABSTRACT","M_FINAL","C_IMPLICIT_ABSTRACT","C_EXPLICIT_ABSTRACT","C_FINAL","XML_ERROR_NONE","XML_ERROR_NO_MEMORY","XML_ERROR_SYNTAX","XML_ERROR_NO_ELEMENTS","XML_ERROR_INVALID_TOKEN","XML_ERROR_UNCLOSED_TOKEN","XML_ERROR_PARTIAL_CHAR","XML_ERROR_TAG_MISMATCH","XML_ERROR_DUPLICATE_ATTRIBUTE","XML_ERROR_JUNK_AFTER_DOC_ELEMENT","XML_ERROR_PARAM_ENTITY_REF","XML_ERROR_UNDEFINED_ENTITY","XML_ERROR_RECURSIVE_ENTITY_REF","XML_ERROR_ASYNC_ENTITY","XML_ERROR_BAD_CHAR_REF","XML_ERROR_BINARY_ENTITY_REF","XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF","XML_ERROR_MISPLACED_XML_PI","XML_ERROR_UNKNOWN_ENCODING","XML_ERROR_INCORRECT_ENCODING","XML_ERROR_UNCLOSED_CDATA_SECTION","XML_ERROR_EXTERNAL_ENTITY_HANDLING","XML_OPTION_CASE_FOLDING","XML_OPTION_TARGET_ENCODING","XML_OPTION_SKIP_TAGSTART","XML_OPTION_SKIP_WHITE","XML_SAX_IMPL","CONNECTION_ABORTED","CONNECTION_NORMAL","CONNECTION_TIMEOUT","INI_USER","INI_PERDIR","INI_SYSTEM","INI_ALL","SUNFUNCS_RET_TIMESTAMP","SUNFUNCS_RET_STRING","SUNFUNCS_RET_DOUBLE","M_E","M_LOG2E","M_LOG10E","M_LN2","M_LN10","M_PI","M_PI_2","M_PI_4","M_1_PI","M_2_PI","M_2_SQRTPI","M_SQRT2","M_SQRT1_2","INF","NAN","INFO_GENERAL","INFO_CREDITS","INFO_CONFIGURATION","INFO_MODULES","INFO_ENVIRONMENT","INFO_VARIABLES","INFO_LICENSE","INFO_ALL","CREDITS_GROUP","CREDITS_GENERAL","CREDITS_SAPI","CREDITS_MODULES","CREDITS_DOCS","CREDITS_FULLPAGE","CREDITS_QA","CREDITS_ALL","HTML_SPECIALCHARS","HTML_ENTITIES","ENT_COMPAT","ENT_QUOTES","ENT_NOQUOTES","STR_PAD_LEFT","STR_PAD_RIGHT","STR_PAD_BOTH","PATHINFO_DIRNAME","PATHINFO_BASENAME","PATHINFO_EXTENSION","CHAR_MAX","LC_CTYPE","LC_NUMERIC","LC_TIME","LC_COLLATE","LC_MONETARY","LC_ALL","LC_MESSAGES","SEEK_SET","SEEK_CUR","SEEK_END","LOCK_SH","LOCK_EX","LOCK_UN","LOCK_NB","STREAM_NOTIFY_CONNECT","STREAM_NOTIFY_AUTH_REQUIRED","STREAM_NOTIFY_AUTH_RESULT","STREAM_NOTIFY_MIME_TYPE_IS","STREAM_NOTIFY_FILE_SIZE_IS","STREAM_NOTIFY_REDIRECTED","STREAM_NOTIFY_PROGRESS","STREAM_NOTIFY_FAILURE","STREAM_NOTIFY_COMPLETED","STREAM_NOTIFY_RESOLVE","STREAM_NOTIFY_SEVERITY_INFO","STREAM_NOTIFY_SEVERITY_WARN","STREAM_NOTIFY_SEVERITY_ERR","STREAM_FILTER_READ","STREAM_FILTER_WRITE","STREAM_FILTER_ALL","STREAM_CLIENT_PERSISTENT","STREAM_CLIENT_ASYNC_CONNECT","STREAM_CLIENT_CONNECT","STREAM_PEEK","STREAM_OOB","STREAM_SERVER_BIND","STREAM_SERVER_LISTEN","FILE_USE_INCLUDE_PATH","FILE_IGNORE_NEW_LINES","FILE_SKIP_EMPTY_LINES","FILE_APPEND","FILE_NO_DEFAULT_CONTEXT","FNM_NOESCAPE","FNM_PATHNAME","FNM_PERIOD","FNM_CASEFOLD","PSFS_PASS_ON","PSFS_FEED_ME","PSFS_ERR_FATAL","PSFS_FLAG_NORMAL","PSFS_FLAG_FLUSH_INC","PSFS_FLAG_FLUSH_CLOSE","ABDAY_1","ABDAY_2","ABDAY_3","ABDAY_4","ABDAY_5","ABDAY_6","ABDAY_7","DAY_1","DAY_2","DAY_3","DAY_4","DAY_5","DAY_6","DAY_7","ABMON_1","ABMON_2","ABMON_3","ABMON_4","ABMON_5","ABMON_6","ABMON_7","ABMON_8","ABMON_9","ABMON_10","ABMON_11","ABMON_12","MON_1","MON_2","MON_3","MON_4","MON_5","MON_6","MON_7","MON_8","MON_9","MON_10","MON_11","MON_12","AM_STR","PM_STR","D_T_FMT","D_FMT","T_FMT","T_FMT_AMPM","ERA","ERA_D_T_FMT","ERA_D_FMT","ERA_T_FMT","ALT_DIGITS","CRNCYSTR","RADIXCHAR","THOUSEP","YESEXPR","NOEXPR","CODESET","CRYPT_SALT_LENGTH","CRYPT_STD_DES","CRYPT_EXT_DES","CRYPT_MD5","CRYPT_BLOWFISH","DIRECTORY_SEPARATOR","PATH_SEPARATOR","GLOB_BRACE","GLOB_MARK","GLOB_NOSORT","GLOB_NOCHECK","GLOB_NOESCAPE","GLOB_ONLYDIR","LOG_EMERG","LOG_ALERT","LOG_CRIT","LOG_ERR","LOG_WARNING","LOG_NOTICE","LOG_INFO","LOG_DEBUG","LOG_KERN","LOG_USER","LOG_MAIL","LOG_DAEMON","LOG_AUTH","LOG_SYSLOG","LOG_LPR","LOG_NEWS","LOG_UUCP","LOG_CRON","LOG_AUTHPRIV","LOG_LOCAL0","LOG_LOCAL1","LOG_LOCAL2","LOG_LOCAL3","LOG_LOCAL4","LOG_LOCAL5","LOG_LOCAL6","LOG_LOCAL7","LOG_PID","LOG_CONS","LOG_ODELAY","LOG_NDELAY","LOG_NOWAIT","LOG_PERROR","EXTR_OVERWRITE","EXTR_SKIP","EXTR_PREFIX_SAME","EXTR_PREFIX_ALL","EXTR_PREFIX_INVALID","EXTR_PREFIX_IF_EXISTS","EXTR_IF_EXISTS","EXTR_REFS","SORT_ASC","SORT_DESC","SORT_REGULAR","SORT_NUMERIC","SORT_STRING","SORT_LOCALE_STRING","CASE_LOWER","CASE_UPPER","COUNT_NORMAL","COUNT_RECURSIVE","ASSERT_ACTIVE","ASSERT_CALLBACK","ASSERT_BAIL","ASSERT_WARNING","ASSERT_QUIET_EVAL","STREAM_USE_PATH","STREAM_IGNORE_URL","STREAM_ENFORCE_SAFE_MODE","STREAM_REPORT_ERRORS","STREAM_MUST_SEEK","STREAM_URL_STAT_LINK","STREAM_URL_STAT_QUIET","STREAM_MKDIR_RECURSIVE","IMAGETYPE_GIF","IMAGETYPE_JPEG","IMAGETYPE_PNG","IMAGETYPE_SWF","IMAGETYPE_PSD","IMAGETYPE_BMP","IMAGETYPE_TIFF_II","IMAGETYPE_TIFF_MM","IMAGETYPE_JPC","IMAGETYPE_JP2","IMAGETYPE_JPX","IMAGETYPE_JB2","IMAGETYPE_IFF","IMAGETYPE_WBMP","IMAGETYPE_JPEG2000","IMAGETYPE_XBM","DNS_A","DNS_NS","DNS_CNAME","DNS_SOA","DNS_PTR","DNS_HINFO","DNS_MX","DNS_TXT","DNS_SRV","DNS_NAPTR","DNS_AAAA","DNS_ANY","DNS_ALL","RIT_LEAVES_ONLY","RIT_SELF_FIRST","RIT_CHILD_FIRST","CIT_CALL_TOSTRING","CIT_CATCH_GET_CHILD","PREG_PATTERN_ORDER","PREG_SET_ORDER","PREG_OFFSET_CAPTURE","PREG_SPLIT_NO_EMPTY","PREG_SPLIT_DELIM_CAPTURE","PREG_SPLIT_OFFSET_CAPTURE","PREG_GREP_INVERT","CAL_GREGORIAN","CAL_JULIAN","CAL_JEWISH","CAL_FRENCH","CAL_NUM_CALS","CAL_DOW_DAYNO","CAL_DOW_SHORT","CAL_DOW_LONG","CAL_MONTH_GREGORIAN_SHORT","CAL_MONTH_GREGORIAN_LONG","CAL_MONTH_JULIAN_SHORT","CAL_MONTH_JULIAN_LONG","CAL_MONTH_JEWISH","CAL_MONTH_FRENCH","CAL_EASTER_DEFAULT","CAL_EASTER_ROMAN","CAL_EASTER_ALWAYS_GREGORIAN","CAL_EASTER_ALWAYS_JULIAN","CAL_JEWISH_ADD_ALAFIM_GERESH","CAL_JEWISH_ADD_ALAFIM","CAL_JEWISH_ADD_GERESHAYIM","CURLOPT_DNS_USE_GLOBAL_CACHE","CURLOPT_DNS_CACHE_TIMEOUT","CURLOPT_PORT","CURLOPT_FILE","CURLOPT_READDATA","CURLOPT_INFILE","CURLOPT_INFILESIZE","CURLOPT_URL","CURLOPT_PROXY","CURLOPT_VERBOSE","CURLOPT_HEADER","CURLOPT_HTTPHEADER","CURLOPT_NOPROGRESS","CURLOPT_NOBODY","CURLOPT_FAILONERROR","CURLOPT_UPLOAD","CURLOPT_POST","CURLOPT_FTPLISTONLY","CURLOPT_FTPAPPEND","CURLOPT_NETRC","CURLOPT_FOLLOWLOCATION","CURLOPT_FTPASCII","CURLOPT_PUT","CURLOPT_MUTE","CURLOPT_USERPWD","CURLOPT_PROXYUSERPWD","CURLOPT_RANGE","CURLOPT_TIMEOUT","CURLOPT_POSTFIELDS","CURLOPT_REFERER","CURLOPT_USERAGENT","CURLOPT_FTPPORT","CURLOPT_FTP_USE_EPSV","CURLOPT_LOW_SPEED_LIMIT","CURLOPT_LOW_SPEED_TIME","CURLOPT_RESUME_FROM","CURLOPT_COOKIE","CURLOPT_SSLCERT","CURLOPT_SSLCERTPASSWD","CURLOPT_WRITEHEADER","CURLOPT_SSL_VERIFYHOST","CURLOPT_COOKIEFILE","CURLOPT_SSLVERSION","CURLOPT_TIMECONDITION","CURLOPT_TIMEVALUE","CURLOPT_CUSTOMREQUEST","CURLOPT_STDERR","CURLOPT_TRANSFERTEXT","CURLOPT_RETURNTRANSFER","CURLOPT_QUOTE","CURLOPT_POSTQUOTE","CURLOPT_INTERFACE","CURLOPT_KRB4LEVEL","CURLOPT_HTTPPROXYTUNNEL","CURLOPT_FILETIME","CURLOPT_WRITEFUNCTION","CURLOPT_READFUNCTION","CURLOPT_PASSWDFUNCTION","CURLOPT_HEADERFUNCTION","CURLOPT_MAXREDIRS","CURLOPT_MAXCONNECTS","CURLOPT_CLOSEPOLICY","CURLOPT_FRESH_CONNECT","CURLOPT_FORBID_REUSE","CURLOPT_RANDOM_FILE","CURLOPT_EGDSOCKET","CURLOPT_CONNECTTIMEOUT","CURLOPT_SSL_VERIFYPEER","CURLOPT_CAINFO","CURLOPT_CAPATH","CURLOPT_COOKIEJAR","CURLOPT_SSL_CIPHER_LIST","CURLOPT_BINARYTRANSFER","CURLOPT_NOSIGNAL","CURLOPT_PROXYTYPE","CURLOPT_BUFFERSIZE","CURLOPT_HTTPGET","CURLOPT_HTTP_VERSION","CURLOPT_SSLKEY","CURLOPT_SSLKEYTYPE","CURLOPT_SSLKEYPASSWD","CURLOPT_SSLENGINE","CURLOPT_SSLENGINE_DEFAULT","CURLOPT_SSLCERTTYPE","CURLOPT_CRLF","CURLOPT_ENCODING","CURLOPT_PROXYPORT","CURLOPT_UNRESTRICTED_AUTH","CURLOPT_FTP_USE_EPRT","CURLOPT_HTTP200ALIASES","CURL_TIMECOND_IFMODSINCE","CURL_TIMECOND_IFUNMODSINCE","CURL_TIMECOND_LASTMOD","CURLOPT_HTTPAUTH","CURLAUTH_BASIC","CURLAUTH_DIGEST","CURLAUTH_GSSNEGOTIATE","CURLAUTH_NTLM","CURLAUTH_ANY","CURLAUTH_ANYSAFE","CURLOPT_PROXYAUTH","CURLCLOSEPOLICY_LEAST_RECENTLY_USED","CURLCLOSEPOLICY_LEAST_TRAFFIC","CURLCLOSEPOLICY_SLOWEST","CURLCLOSEPOLICY_CALLBACK","CURLCLOSEPOLICY_OLDEST","CURLINFO_EFFECTIVE_URL","CURLINFO_HTTP_CODE","CURLINFO_HEADER_SIZE","CURLINFO_REQUEST_SIZE","CURLINFO_TOTAL_TIME","CURLINFO_NAMELOOKUP_TIME","CURLINFO_CONNECT_TIME","CURLINFO_PRETRANSFER_TIME","CURLINFO_SIZE_UPLOAD","CURLINFO_SIZE_DOWNLOAD","CURLINFO_SPEED_DOWNLOAD","CURLINFO_SPEED_UPLOAD","CURLINFO_FILETIME","CURLINFO_SSL_VERIFYRESULT","CURLINFO_CONTENT_LENGTH_DOWNLOAD","CURLINFO_CONTENT_LENGTH_UPLOAD","CURLINFO_STARTTRANSFER_TIME","CURLINFO_CONTENT_TYPE","CURLINFO_REDIRECT_TIME","CURLINFO_REDIRECT_COUNT","CURL_VERSION_IPV6","CURL_VERSION_KERBEROS4","CURL_VERSION_SSL","CURL_VERSION_LIBZ","CURLVERSION_NOW","CURLE_OK","CURLE_UNSUPPORTED_PROTOCOL","CURLE_FAILED_INIT","CURLE_URL_MALFORMAT","CURLE_URL_MALFORMAT_USER","CURLE_COULDNT_RESOLVE_PROXY","CURLE_COULDNT_RESOLVE_HOST","CURLE_COULDNT_CONNECT","CURLE_FTP_WEIRD_SERVER_REPLY","CURLE_FTP_ACCESS_DENIED","CURLE_FTP_USER_PASSWORD_INCORRECT","CURLE_FTP_WEIRD_PASS_REPLY","CURLE_FTP_WEIRD_USER_REPLY","CURLE_FTP_WEIRD_PASV_REPLY","CURLE_FTP_WEIRD_227_FORMAT","CURLE_FTP_CANT_GET_HOST","CURLE_FTP_CANT_RECONNECT","CURLE_FTP_COULDNT_SET_BINARY","CURLE_PARTIAL_FILE","CURLE_FTP_COULDNT_RETR_FILE","CURLE_FTP_WRITE_ERROR","CURLE_FTP_QUOTE_ERROR","CURLE_HTTP_NOT_FOUND","CURLE_WRITE_ERROR","CURLE_MALFORMAT_USER","CURLE_FTP_COULDNT_STOR_FILE","CURLE_READ_ERROR","CURLE_OUT_OF_MEMORY","CURLE_OPERATION_TIMEOUTED","CURLE_FTP_COULDNT_SET_ASCII","CURLE_FTP_PORT_FAILED","CURLE_FTP_COULDNT_USE_REST","CURLE_FTP_COULDNT_GET_SIZE","CURLE_HTTP_RANGE_ERROR","CURLE_HTTP_POST_ERROR","CURLE_SSL_CONNECT_ERROR","CURLE_FTP_BAD_DOWNLOAD_RESUME","CURLE_FILE_COULDNT_READ_FILE","CURLE_LDAP_CANNOT_BIND","CURLE_LDAP_SEARCH_FAILED","CURLE_LIBRARY_NOT_FOUND","CURLE_FUNCTION_NOT_FOUND","CURLE_ABORTED_BY_CALLBACK","CURLE_BAD_FUNCTION_ARGUMENT","CURLE_BAD_CALLING_ORDER","CURLE_HTTP_PORT_FAILED","CURLE_BAD_PASSWORD_ENTERED","CURLE_TOO_MANY_REDIRECTS","CURLE_UNKNOWN_TELNET_OPTION","CURLE_TELNET_OPTION_SYNTAX","CURLE_OBSOLETE","CURLE_SSL_PEER_CERTIFICATE","CURLE_GOT_NOTHING","CURLE_SSL_ENGINE_NOTFOUND","CURLE_SSL_ENGINE_SETFAILED","CURLE_SEND_ERROR","CURLE_RECV_ERROR","CURLE_SHARE_IN_USE","CURLE_SSL_CERTPROBLEM","CURLE_SSL_CIPHER","CURLE_SSL_CACERT","CURLE_BAD_CONTENT_ENCODING","CURLPROXY_HTTP","CURLPROXY_SOCKS5","CURL_NETRC_OPTIONAL","CURL_NETRC_IGNORED","CURL_NETRC_REQUIRED","CURL_HTTP_VERSION_NONE","CURL_HTTP_VERSION_1_0","CURL_HTTP_VERSION_1_1","CURLM_CALL_MULTI_PERFORM","CURLM_OK","CURLM_BAD_HANDLE","CURLM_BAD_EASY_HANDLE","CURLM_OUT_OF_MEMORY","CURLM_INTERNAL_ERROR","CURLMSG_DONE","DBX_MYSQL","DBX_ODBC","DBX_PGSQL","DBX_MSSQL","DBX_FBSQL","DBX_OCI8","DBX_SYBASECT","DBX_SQLITE","DBX_PERSISTENT","DBX_RESULT_INFO","DBX_RESULT_INDEX","DBX_RESULT_ASSOC","DBX_RESULT_UNBUFFERED","DBX_COLNAMES_UNCHANGED","DBX_COLNAMES_UPPERCASE","DBX_COLNAMES_LOWERCASE","DBX_CMP_NATIVE","DBX_CMP_TEXT","DBX_CMP_NUMBER","DBX_CMP_ASC","DBX_CMP_DESC","O_RDONLY","O_WRONLY","O_RDWR","O_CREAT","O_EXCL","O_TRUNC","O_APPEND","O_NONBLOCK","O_NDELAY","O_SYNC","O_ASYNC","O_NOCTTY","S_IRWXU","S_IRUSR","S_IWUSR","S_IXUSR","S_IRWXG","S_IRGRP","S_IWGRP","S_IXGRP","S_IRWXO","S_IROTH","S_IWOTH","S_IXOTH","F_DUPFD","F_GETFD","F_GETFL","F_SETFL","F_GETLK","F_SETLK","F_SETLKW","F_SETOWN","F_GETOWN","F_UNLCK","F_RDLCK","F_WRLCK","XML_ELEMENT_NODE","XML_ATTRIBUTE_NODE","XML_TEXT_NODE","XML_CDATA_SECTION_NODE","XML_ENTITY_REF_NODE","XML_ENTITY_NODE","XML_PI_NODE","XML_COMMENT_NODE","XML_DOCUMENT_NODE","XML_DOCUMENT_TYPE_NODE","XML_DOCUMENT_FRAG_NODE","XML_NOTATION_NODE","XML_HTML_DOCUMENT_NODE","XML_DTD_NODE","XML_ELEMENT_DECL_NODE","XML_ATTRIBUTE_DECL_NODE","XML_ENTITY_DECL_NODE","XML_NAMESPACE_DECL_NODE","XML_LOCAL_NAMESPACE","XML_ATTRIBUTE_CDATA","XML_ATTRIBUTE_ID","XML_ATTRIBUTE_IDREF","XML_ATTRIBUTE_IDREFS","XML_ATTRIBUTE_ENTITY","XML_ATTRIBUTE_NMTOKEN","XML_ATTRIBUTE_NMTOKENS","XML_ATTRIBUTE_ENUMERATION","XML_ATTRIBUTE_NOTATION","DOM_PHP_ERR","DOM_INDEX_SIZE_ERR","DOMSTRING_SIZE_ERR","DOM_HIERARCHY_REQUEST_ERR","DOM_WRONG_DOCUMENT_ERR","DOM_INVALID_CHARACTER_ERR","DOM_NO_DATA_ALLOWED_ERR","DOM_NO_MODIFICATION_ALLOWED_ERR","DOM_NOT_FOUND_ERR","DOM_NOT_SUPPORTED_ERR","DOM_INUSE_ATTRIBUTE_ERR","DOM_INVALID_STATE_ERR","DOM_SYNTAX_ERR","DOM_INVALID_MODIFICATION_ERR","DOM_NAMESPACE_ERR","DOM_INVALID_ACCESS_ERR","DOM_VALIDATION_ERR","EXIF_USE_MBSTRING","FAMChanged","FAMDeleted","FAMStartExecuting","FAMStopExecuting","FAMCreated","FAMMoved","FAMAcknowledge","FAMExists","FAMEndExist","FTP_ASCII","FTP_TEXT","FTP_BINARY","FTP_IMAGE","FTP_AUTORESUME","FTP_TIMEOUT_SEC","FTP_AUTOSEEK","FTP_FAILED","FTP_FINISHED","FTP_MOREDATA","IMG_GIF","IMG_JPG","IMG_JPEG","IMG_PNG","IMG_WBMP","IMG_XPM","IMG_COLOR_TILED","IMG_COLOR_STYLED","IMG_COLOR_BRUSHED","IMG_COLOR_STYLEDBRUSHED","IMG_COLOR_TRANSPARENT","IMG_ARC_ROUNDED","IMG_ARC_PIE","IMG_ARC_CHORD","IMG_ARC_NOFILL","IMG_ARC_EDGED","IMG_GD2_RAW","IMG_GD2_COMPRESSED","IMG_EFFECT_REPLACE","IMG_EFFECT_ALPHABLEND","IMG_EFFECT_NORMAL","IMG_EFFECT_OVERLAY","GD_BUNDLED","IMG_FILTER_NEGATE","IMG_FILTER_GRAYSCALE","IMG_FILTER_BRIGHTNESS","IMG_FILTER_CONTRAST","IMG_FILTER_COLORIZE","IMG_FILTER_EDGEDETECT","IMG_FILTER_GAUSSIAN_BLUR","IMG_FILTER_SELECTIVE_BLUR","IMG_FILTER_EMBOSS","IMG_FILTER_MEAN_REMOVAL","IMG_FILTER_SMOOTH","GMP_ROUND_ZERO","GMP_ROUND_PLUSINF","GMP_ROUND_MINUSINF","ICONV_IMPL","ICONV_VERSION","ICONV_MIME_DECODE_STRICT","ICONV_MIME_DECODE_CONTINUE_ON_ERROR","NIL","IMAP_OPENTIMEOUT","IMAP_READTIMEOUT","IMAP_WRITETIMEOUT","IMAP_CLOSETIMEOUT","OP_DEBUG","OP_READONLY","OP_ANONYMOUS","OP_SHORTCACHE","OP_SILENT","OP_PROTOTYPE","OP_HALFOPEN","OP_EXPUNGE","OP_SECURE","CL_EXPUNGE","FT_UID","FT_PEEK","FT_NOT","FT_INTERNAL","FT_PREFETCHTEXT","ST_UID","ST_SILENT","ST_SET","CP_UID","CP_MOVE","SE_UID","SE_FREE","SE_NOPREFETCH","SO_FREE","SO_NOSERVER","SA_MESSAGES","SA_RECENT","SA_UNSEEN","SA_UIDNEXT","SA_UIDVALIDITY","SA_ALL","LATT_NOINFERIORS","LATT_NOSELECT","LATT_MARKED","LATT_UNMARKED","LATT_REFERRAL","LATT_HASCHILDREN","LATT_HASNOCHILDREN","SORTDATE","SORTARRIVAL","SORTFROM","SORTSUBJECT","SORTTO","SORTCC","SORTSIZE","TYPETEXT","TYPEMULTIPART","TYPEMESSAGE","TYPEAPPLICATION","TYPEAUDIO","TYPEIMAGE","TYPEVIDEO","TYPEMODEL","TYPEOTHER","ENC7BIT","ENC8BIT","ENCBINARY","ENCBASE64","ENCQUOTEDPRINTABLE","ENCOTHER","LDAP_DEREF_NEVER","LDAP_DEREF_SEARCHING","LDAP_DEREF_FINDING","LDAP_DEREF_ALWAYS","LDAP_OPT_DEREF","LDAP_OPT_SIZELIMIT","LDAP_OPT_TIMELIMIT","LDAP_OPT_PROTOCOL_VERSION","LDAP_OPT_ERROR_NUMBER","LDAP_OPT_REFERRALS","LDAP_OPT_RESTART","LDAP_OPT_HOST_NAME","LDAP_OPT_ERROR_STRING","LDAP_OPT_MATCHED_DN","LDAP_OPT_SERVER_CONTROLS","LDAP_OPT_CLIENT_CONTROLS","LDAP_OPT_DEBUG_LEVEL","MB_OVERLOAD_MAIL","MB_OVERLOAD_STRING","MB_OVERLOAD_REGEX","MB_CASE_UPPER","MB_CASE_LOWER","MB_CASE_TITLE","MCRYPT_ENCRYPT","MCRYPT_DECRYPT","MCRYPT_DEV_RANDOM","MCRYPT_DEV_URANDOM","MCRYPT_RAND","MCRYPT_3DES","MCRYPT_ARCFOUR_IV","MCRYPT_ARCFOUR","MCRYPT_BLOWFISH","MCRYPT_BLOWFISH_COMPAT","MCRYPT_CAST_128","MCRYPT_CAST_256","MCRYPT_CRYPT","MCRYPT_DES","MCRYPT_ENIGNA","MCRYPT_GOST","MCRYPT_LOKI97","MCRYPT_PANAMA","MCRYPT_RC2","MCRYPT_RIJNDAEL_128","MCRYPT_RIJNDAEL_192","MCRYPT_RIJNDAEL_256","MCRYPT_SAFER64","MCRYPT_SAFER128","MCRYPT_SAFERPLUS","MCRYPT_SERPENT","MCRYPT_THREEWAY","MCRYPT_TRIPLEDES","MCRYPT_TWOFISH","MCRYPT_WAKE","MCRYPT_XTEA","MCRYPT_IDEA","MCRYPT_MARS","MCRYPT_RC6","MCRYPT_SKIPJACK","MCRYPT_MODE_CBC","MCRYPT_MODE_CFB","MCRYPT_MODE_ECB","MCRYPT_MODE_NOFB","MCRYPT_MODE_OFB","MCRYPT_MODE_STREAM","MHASH_CRC32","MHASH_MD5","MHASH_SHA1","MHASH_HAVAL256","MHASH_RIPEMD160","MHASH_TIGER","MHASH_GOST","MHASH_CRC32B","MHASH_HAVAL224","MHASH_HAVAL192","MHASH_HAVAL160","MHASH_HAVAL128","MHASH_TIGER128","MHASH_TIGER160","MHASH_MD4","MHASH_SHA256","MHASH_ADLER32","MHASH_SHA224","MHASH_SHA512","MHASH_SHA384","MHASH_WHIRLPOOL","MHASH_RIPEMD128","MHASH_RIPEMD256","MHASH_RIPEMD320","MHASH_SNEFRU128","MHASH_SNEFRU256","MHASH_MD2","MYSQL_ASSOC","MYSQL_NUM","MYSQL_BOTH","MYSQL_CLIENT_COMPRESS","MYSQL_CLIENT_SSL","MYSQL_CLIENT_INTERACTIVE","MYSQL_CLIENT_IGNORE_SPACE","MYSQLI_READ_DEFAULT_GROUP","MYSQLI_READ_DEFAULT_FILE","MYSQLI_OPT_CONNECT_TIMEOUT","MYSQLI_OPT_LOCAL_INFILE","MYSQLI_INIT_COMMAND","MYSQLI_CLIENT_SSL","MYSQLI_CLIENT_COMPRESS","MYSQLI_CLIENT_INTERACTIVE","MYSQLI_CLIENT_IGNORE_SPACE","MYSQLI_CLIENT_NO_SCHEMA","MYSQLI_CLIENT_FOUND_ROWS","MYSQLI_STORE_RESULT","MYSQLI_USE_RESULT","MYSQLI_ASSOC","MYSQLI_NUM","MYSQLI_BOTH","MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH","MYSQLI_NOT_NULL_FLAG","MYSQLI_PRI_KEY_FLAG","MYSQLI_UNIQUE_KEY_FLAG","MYSQLI_MULTIPLE_KEY_FLAG","MYSQLI_BLOB_FLAG","MYSQLI_UNSIGNED_FLAG","MYSQLI_ZEROFILL_FLAG","MYSQLI_AUTO_INCREMENT_FLAG","MYSQLI_TIMESTAMP_FLAG","MYSQLI_SET_FLAG","MYSQLI_NUM_FLAG","MYSQLI_PART_KEY_FLAG","MYSQLI_GROUP_FLAG","MYSQLI_TYPE_DECIMAL","MYSQLI_TYPE_TINY","MYSQLI_TYPE_SHORT","MYSQLI_TYPE_LONG","MYSQLI_TYPE_FLOAT","MYSQLI_TYPE_DOUBLE","MYSQLI_TYPE_NULL","MYSQLI_TYPE_TIMESTAMP","MYSQLI_TYPE_LONGLONG","MYSQLI_TYPE_INT24","MYSQLI_TYPE_DATE","MYSQLI_TYPE_TIME","MYSQLI_TYPE_DATETIME","MYSQLI_TYPE_YEAR","MYSQLI_TYPE_NEWDATE","MYSQLI_TYPE_ENUM","MYSQLI_TYPE_SET","MYSQLI_TYPE_TINY_BLOB","MYSQLI_TYPE_MEDIUM_BLOB","MYSQLI_TYPE_LONG_BLOB","MYSQLI_TYPE_BLOB","MYSQLI_TYPE_VAR_STRING","MYSQLI_TYPE_STRING","MYSQLI_TYPE_CHAR","MYSQLI_TYPE_INTERVAL","MYSQLI_TYPE_GEOMETRY","MYSQLI_RPL_MASTER","MYSQLI_RPL_SLAVE","MYSQLI_RPL_ADMIN","MYSQLI_NO_DATA","MYSQLI_REPORT_INDEX","MYSQLI_REPORT_ERROR","MYSQLI_REPORT_ALL","MYSQLI_REPORT_OFF","NCURSES_COLOR_BLACK","NCURSES_COLOR_RED","NCURSES_COLOR_GREEN","NCURSES_COLOR_YELLOW","NCURSES_COLOR_BLUE","NCURSES_COLOR_MAGENTA","NCURSES_COLOR_CYAN","NCURSES_COLOR_WHITE","NCURSES_KEY_DOWN","NCURSES_KEY_UP","NCURSES_KEY_LEFT","NCURSES_KEY_RIGHT","NCURSES_KEY_BACKSPACE","NCURSES_KEY_MOUSE","NCURSES_KEY_F0","NCURSES_KEY_F1","NCURSES_KEY_F2","NCURSES_KEY_F3","NCURSES_KEY_F4","NCURSES_KEY_F5","NCURSES_KEY_F6","NCURSES_KEY_F7","NCURSES_KEY_F8","NCURSES_KEY_F9","NCURSES_KEY_F10","NCURSES_KEY_F11","NCURSES_KEY_F12","NCURSES_KEY_DL","NCURSES_KEY_IL","NCURSES_KEY_DC","NCURSES_KEY_IC","NCURSES_KEY_EIC","NCURSES_KEY_CLEAR","NCURSES_KEY_EOS","NCURSES_KEY_EOL","NCURSES_KEY_SF","NCURSES_KEY_SR","NCURSES_KEY_NPAGE","NCURSES_KEY_PPAGE","NCURSES_KEY_STAB","NCURSES_KEY_CTAB","NCURSES_KEY_CATAB","NCURSES_KEY_ENTER","NCURSES_KEY_SRESET","NCURSES_KEY_RESET","NCURSES_KEY_PRINT","NCURSES_KEY_LL","NCURSES_KEY_A1","NCURSES_KEY_A3","NCURSES_KEY_B2","NCURSES_KEY_C1","NCURSES_KEY_C3","NCURSES_KEY_BTAB","NCURSES_KEY_BEG","NCURSES_KEY_CANCEL","NCURSES_KEY_CLOSE","NCURSES_KEY_COMMAND","NCURSES_KEY_COPY","NCURSES_KEY_CREATE","NCURSES_KEY_END","NCURSES_KEY_EXIT","NCURSES_KEY_FIND","NCURSES_KEY_HELP","NCURSES_KEY_MARK","NCURSES_KEY_MESSAGE","NCURSES_KEY_MOVE","NCURSES_KEY_NEXT","NCURSES_KEY_OPEN","NCURSES_KEY_OPTIONS","NCURSES_KEY_PREVIOUS","NCURSES_KEY_REDO","NCURSES_KEY_REFERENCE","NCURSES_KEY_REFRESH","NCURSES_KEY_REPLACE","NCURSES_KEY_RESTART","NCURSES_KEY_RESUME","NCURSES_KEY_SAVE","NCURSES_KEY_SBEG","NCURSES_KEY_SCANCEL","NCURSES_KEY_SCOMMAND","NCURSES_KEY_SCOPY","NCURSES_KEY_SCREATE","NCURSES_KEY_SDC","NCURSES_KEY_SDL","NCURSES_KEY_SELECT","NCURSES_KEY_SEND","NCURSES_KEY_SEOL","NCURSES_KEY_SEXIT","NCURSES_KEY_SFIND","NCURSES_KEY_SHELP","NCURSES_KEY_SHOME","NCURSES_KEY_SIC","NCURSES_KEY_SLEFT","NCURSES_KEY_SMESSAGE","NCURSES_KEY_SMOVE","NCURSES_KEY_SNEXT","NCURSES_KEY_SOPTIONS","NCURSES_KEY_SPREVIOUS","NCURSES_KEY_SPRINT","NCURSES_KEY_SREDO","NCURSES_KEY_SREPLACE","NCURSES_KEY_SRIGHT","NCURSES_KEY_SRSUME","NCURSES_KEY_SSAVE","NCURSES_KEY_SSUSPEND","NCURSES_KEY_SUNDO","NCURSES_KEY_SUSPEND","NCURSES_KEY_UNDO","NCURSES_KEY_RESIZE","NCURSES_A_NORMAL","NCURSES_A_STANDOUT","NCURSES_A_UNDERLINE","NCURSES_A_REVERSE","NCURSES_A_BLINK","NCURSES_A_DIM","NCURSES_A_BOLD","NCURSES_A_PROTECT","NCURSES_A_INVIS","NCURSES_A_ALTCHARSET","NCURSES_A_CHARTEXT","NCURSES_BUTTON1_PRESSED","NCURSES_BUTTON1_RELEASED","NCURSES_BUTTON1_CLICKED","NCURSES_BUTTON1_DOUBLE_CLICKED","NCURSES_BUTTON1_TRIPLE_CLICKED","NCURSES_BUTTON2_PRESSED","NCURSES_BUTTON2_RELEASED","NCURSES_BUTTON2_CLICKED","NCURSES_BUTTON2_DOUBLE_CLICKED","NCURSES_BUTTON2_TRIPLE_CLICKED","NCURSES_BUTTON3_PRESSED","NCURSES_BUTTON3_RELEASED","NCURSES_BUTTON3_CLICKED","NCURSES_BUTTON3_DOUBLE_CLICKED","NCURSES_BUTTON3_TRIPLE_CLICKED","NCURSES_BUTTON4_PRESSED","NCURSES_BUTTON4_RELEASED","NCURSES_BUTTON4_CLICKED","NCURSES_BUTTON4_DOUBLE_CLICKED","NCURSES_BUTTON4_TRIPLE_CLICKED","NCURSES_BUTTON_SHIFT","NCURSES_BUTTON_CTRL","NCURSES_BUTTON_ALT","NCURSES_ALL_MOUSE_EVENTS","NCURSES_REPORT_MOUSE_POSITION","ODBC_TYPE","ODBC_BINMODE_PASSTHRU","ODBC_BINMODE_RETURN","ODBC_BINMODE_CONVERT","SQL_ODBC_CURSORS","SQL_CUR_USE_DRIVER","SQL_CUR_USE_IF_NEEDED","SQL_CUR_USE_ODBC","SQL_CONCURRENCY","SQL_CONCUR_READ_ONLY","SQL_CONCUR_LOCK","SQL_CONCUR_ROWVER","SQL_CONCUR_VALUES","SQL_CURSOR_TYPE","SQL_CURSOR_FORWARD_ONLY","SQL_CURSOR_KEYSET_DRIVEN","SQL_CURSOR_DYNAMIC","SQL_CURSOR_STATIC","SQL_KEYSET_SIZE","SQL_FETCH_FIRST","SQL_FETCH_NEXT","SQL_CHAR","SQL_VARCHAR","SQL_LONGVARCHAR","SQL_DECIMAL","SQL_NUMERIC","SQL_BIT","SQL_TINYINT","SQL_SMALLINT","SQL_INTEGER","SQL_BIGINT","SQL_REAL","SQL_FLOAT","SQL_DOUBLE","SQL_BINARY","SQL_VARBINARY","SQL_LONGVARBINARY","SQL_DATE","SQL_TIME","SQL_TIMESTAMP","X509_PURPOSE_SSL_CLIENT","X509_PURPOSE_SSL_SERVER","X509_PURPOSE_NS_SSL_SERVER","X509_PURPOSE_SMIME_SIGN","X509_PURPOSE_SMIME_ENCRYPT","X509_PURPOSE_CRL_SIGN","X509_PURPOSE_ANY","OPENSSL_ALGO_SHA1","OPENSSL_ALGO_MD5","OPENSSL_ALGO_MD4","OPENSSL_ALGO_MD2","PKCS7_DETACHED","PKCS7_TEXT","PKCS7_NOINTERN","PKCS7_NOVERIFY","PKCS7_NOCHAIN","PKCS7_NOCERTS","PKCS7_NOATTR","PKCS7_BINARY","PKCS7_NOSIGS","OPENSSL_PKCS1_PADDING","OPENSSL_SSLV23_PADDING","OPENSSL_NO_PADDING","OPENSSL_PKCS1_OAEP_PADDING","OPENSSL_CIPHER_RC2_40","OPENSSL_CIPHER_RC2_128","OPENSSL_CIPHER_RC2_64","OPENSSL_CIPHER_DES","OPENSSL_CIPHER_3DES","OPENSSL_KEYTYPE_RSA","OPENSSL_KEYTYPE_DSA","OPENSSL_KEYTYPE_DH","WNOHANG","WUNTRACED","SIG_IGN","SIG_DFL","SIG_ERR","SIGHUP","SIGINT","SIGQUIT","SIGILL","SIGTRAP","SIGABRT","SIGIOT","SIGBUS","SIGFPE","SIGKILL","SIGUSR1","SIGSEGV","SIGUSR2","SIGPIPE","SIGALRM","SIGTERM","SIGSTKFLT","SIGCLD","SIGCHLD","SIGCONT","SIGSTOP","SIGTSTP","SIGTTIN","SIGTTOU","SIGURG","SIGXCPU","SIGXFSZ","SIGVTALRM","SIGPROF","SIGWINCH","SIGPOLL","SIGIO","SIGPWR","SIGSYS","SIGBABY","PRIO_PGRP","PRIO_USER","PRIO_PROCESS","PGSQL_CONNECT_FORCE_NEW","PGSQL_ASSOC","PGSQL_NUM","PGSQL_BOTH","PGSQL_CONNECTION_BAD","PGSQL_CONNECTION_OK","PGSQL_SEEK_SET","PGSQL_SEEK_CUR","PGSQL_SEEK_END","PGSQL_STATUS_LONG","PGSQL_STATUS_STRING","PGSQL_EMPTY_QUERY","PGSQL_COMMAND_OK","PGSQL_TUPLES_OK","PGSQL_COPY_OUT","PGSQL_COPY_IN","PGSQL_BAD_RESPONSE","PGSQL_NONFATAL_ERROR","PGSQL_FATAL_ERROR","PGSQL_CONV_IGNORE_DEFAULT","PGSQL_CONV_FORCE_NULL","PGSQL_CONV_IGNORE_NOT_NULL","PGSQL_DML_NO_CONV","PGSQL_DML_EXEC","PGSQL_DML_ASYNC","PGSQL_DML_STRING","SNMP_VALUE_LIBRARY","SNMP_VALUE_PLAIN","SNMP_VALUE_OBJECT","SNMP_BIT_STR","SNMP_OCTET_STR","SNMP_OPAQUE","SNMP_NULL","SNMP_OBJECT_ID","SNMP_IPADDRESS","SNMP_COUNTER","SNMP_UNSIGNED","SNMP_TIMETICKS","SNMP_UINTEGER","SNMP_INTEGER","SNMP_COUNTER64","SOAP_1_1","SOAP_1_2","SOAP_PERSISTENCE_SESSION","SOAP_PERSISTENCE_REQUEST","SOAP_FUNCTIONS_ALL","SOAP_ENCODED","SOAP_LITERAL","SOAP_RPC","SOAP_DOCUMENT","SOAP_ACTOR_NEXT","SOAP_ACTOR_NONE","SOAP_ACTOR_UNLIMATERECEIVER","SOAP_COMPRESSION_ACCEPT","SOAP_COMPRESSION_GZIP","SOAP_COMPRESSION_DEFLATE","UNKNOWN_TYPE","XSD_STRING","XSD_BOOLEAN","XSD_DECIMAL","XSD_FLOAT","XSD_DOUBLE","XSD_DURATION","XSD_DATETIME","XSD_TIME","XSD_DATE","XSD_GYEARMONTH","XSD_GYEAR","XSD_GMONTHDAY","XSD_GDAY","XSD_GMONTH","XSD_HEXBINARY","XSD_BASE64BINARY","XSD_ANYURI","XSD_QNAME","XSD_NOTATION","XSD_NORMALIZEDSTRING","XSD_TOKEN","XSD_LANGUAGE","XSD_NMTOKEN","XSD_NAME","XSD_NCNAME","XSD_ID","XSD_IDREF","XSD_IDREFS","XSD_ENTITY","XSD_ENTITIES","XSD_INTEGER","XSD_NONPOSITIVEINTEGER","XSD_NEGATIVEINTEGER","XSD_LONG","XSD_INT","XSD_SHORT","XSD_BYTE","XSD_NONNEGATIVEINTEGER","XSD_UNSIGNEDLONG","XSD_UNSIGNEDINT","XSD_UNSIGNEDSHORT","XSD_UNSIGNEDBYTE","XSD_POSITIVEINTEGER","XSD_NMTOKENS","XSD_ANYTYPE","SOAP_ENC_OBJECT","SOAP_ENC_ARRAY","XSD_1999_TIMEINSTANT","XSD_NAMESPACE","XSD_1999_NAMESPACE","AF_UNIX","AF_INET","AF_INET6","SOCK_STREAM","SOCK_DGRAM","SOCK_RAW","SOCK_SEQPACKET","SOCK_RDM","MSG_OOB","MSG_WAITALL","MSG_PEEK","MSG_DONTROUTE","SO_DEBUG","SO_REUSEADDR","SO_KEEPALIVE","SO_DONTROUTE","SO_LINGER","SO_BROADCAST","SO_OOBINLINE","SO_SNDBUF","SO_RCVBUF","SO_SNDLOWAT","SO_RCVLOWAT","SO_SNDTIMEO","SO_RCVTIMEO","SO_TYPE","SO_ERROR","SOL_SOCKET","SOMAXCONN","PHP_NORMAL_READ","PHP_BINARY_READ","SOCKET_EPERM","SOCKET_ENOENT","SOCKET_EINTR","SOCKET_EIO","SOCKET_ENXIO","SOCKET_E2BIG","SOCKET_EBADF","SOCKET_EAGAIN","SOCKET_ENOMEM","SOCKET_EACCES","SOCKET_EFAULT","SOCKET_ENOTBLK","SOCKET_EBUSY","SOCKET_EEXIST","SOCKET_EXDEV","SOCKET_ENODEV","SOCKET_ENOTDIR","SOCKET_EISDIR","SOCKET_EINVAL","SOCKET_ENFILE","SOCKET_EMFILE","SOCKET_ENOTTY","SOCKET_ENOSPC","SOCKET_ESPIPE","SOCKET_EROFS","SOCKET_EMLINK","SOCKET_EPIPE","SOCKET_ENAMETOOLONG","SOCKET_ENOLCK","SOCKET_ENOSYS","SOCKET_ENOTEMPTY","SOCKET_ELOOP","SOCKET_EWOULDBLOCK","SOCKET_ENOMSG","SOCKET_EIDRM","SOCKET_ECHRNG","SOCKET_EL2NSYNC","SOCKET_EL3HLT","SOCKET_EL3RST","SOCKET_ELNRNG","SOCKET_EUNATCH","SOCKET_ENOCSI","SOCKET_EL2HLT","SOCKET_EBADE","SOCKET_EBADR","SOCKET_EXFULL","SOCKET_ENOANO","SOCKET_EBADRQC","SOCKET_EBADSLT","SOCKET_ENOSTR","SOCKET_ENODATA","SOCKET_ETIME","SOCKET_ENOSR","SOCKET_ENONET","SOCKET_EREMOTE","SOCKET_ENOLINK","SOCKET_EADV","SOCKET_ESRMNT","SOCKET_ECOMM","SOCKET_EPROTO","SOCKET_EMULTIHOP","SOCKET_EBADMSG","SOCKET_ENOTUNIQ","SOCKET_EBADFD","SOCKET_EREMCHG","SOCKET_ERESTART","SOCKET_ESTRPIPE","SOCKET_EUSERS","SOCKET_ENOTSOCK","SOCKET_EDESTADDRREQ","SOCKET_EMSGSIZE","SOCKET_EPROTOTYPE","SOCKET_ENOPROTOOPT","SOCKET_EPROTONOSUPPORT","SOCKET_ESOCKTNOSUPPORT","SOCKET_EOPNOTSUPP","SOCKET_EPFNOSUPPORT","SOCKET_EAFNOSUPPORT","SOCKET_EADDRINUSE","SOCKET_EADDRNOTAVAIL","SOCKET_ENETDOWN","SOCKET_ENETUNREACH","SOCKET_ENETRESET","SOCKET_ECONNABORTED","SOCKET_ECONNRESET","SOCKET_ENOBUFS","SOCKET_EISCONN","SOCKET_ENOTCONN","SOCKET_ESHUTDOWN","SOCKET_ETOOMANYREFS","SOCKET_ETIMEDOUT","SOCKET_ECONNREFUSED","SOCKET_EHOSTDOWN","SOCKET_EHOSTUNREACH","SOCKET_EALREADY","SOCKET_EINPROGRESS","SOCKET_EISNAM","SOCKET_EREMOTEIO","SOCKET_EDQUOT","SOCKET_ENOMEDIUM","SOCKET_EMEDIUMTYPE","SOL_TCP","SOL_UDP","SQLITE_BOTH","SQLITE_NUM","SQLITE_ASSOC","SQLITE_OK","SQLITE_ERROR","SQLITE_INTERNAL","SQLITE_PERM","SQLITE_ABORT","SQLITE_BUSY","SQLITE_LOCKED","SQLITE_NOMEM","SQLITE_READONLY","SQLITE_INTERRUPT","SQLITE_IOERR","SQLITE_CORRUPT","SQLITE_NOTFOUND","SQLITE_FULL","SQLITE_CANTOPEN","SQLITE_PROTOCOL","SQLITE_EMPTY","SQLITE_SCHEMA","SQLITE_TOOBIG","SQLITE_CONSTRAINT","SQLITE_MISMATCH","SQLITE_MISUSE","SQLITE_NOLFS","SQLITE_AUTH","SQLITE_FORMAT","SQLITE_ROW","SQLITE_DONE","MSG_IPC_NOWAIT","MSG_NOERROR","MSG_EXCEPT","T_INCLUDE","T_INCLUDE_ONCE","T_EVAL","T_REQUIRE","T_REQUIRE_ONCE","T_LOGICAL_OR","T_LOGICAL_XOR","T_LOGICAL_AND","T_PRINT","T_PLUS_EQUAL","T_MINUS_EQUAL","T_MUL_EQUAL","T_DIV_EQUAL","T_CONCAT_EQUAL","T_MOD_EQUAL","T_AND_EQUAL","T_OR_EQUAL","T_XOR_EQUAL","T_SL_EQUAL","T_SR_EQUAL","T_BOOLEAN_OR","T_BOOLEAN_AND","T_IS_EQUAL","T_IS_NOT_EQUAL","T_IS_IDENTICAL","T_IS_NOT_IDENTICAL","T_IS_SMALLER_OR_EQUAL","T_IS_GREATER_OR_EQUAL","T_SL","T_SR","T_INC","T_DEC","T_INT_CAST","T_DOUBLE_CAST","T_STRING_CAST","T_ARRAY_CAST","T_OBJECT_CAST","T_BOOL_CAST","T_UNSET_CAST","T_NEW","T_EXIT","T_IF","T_ELSEIF","T_ELSE","T_ENDIF","T_LNUMBER","T_DNUMBER","T_STRING","T_STRING_VARNAME","T_VARIABLE","T_NUM_STRING","T_INLINE_HTML","T_CHARACTER","T_BAD_CHARACTER","T_ENCAPSED_AND_WHITESPACE","T_CONSTANT_ENCAPSED_STRING","T_ECHO","T_DO","T_WHILE","T_ENDWHILE","T_FOR","T_ENDFOR","T_FOREACH","T_ENDFOREACH","T_DECLARE","T_ENDDECLARE","T_AS","T_SWITCH","T_ENDSWITCH","T_CASE","T_DEFAULT","T_BREAK","T_CONTINUE","T_FUNCTION","T_CONST","T_RETURN","T_USE","T_GLOBAL","T_STATIC","T_VAR","T_UNSET","T_ISSET","T_EMPTY","T_CLASS","T_EXTENDS","T_INTERFACE","T_IMPLEMENTS","T_OBJECT_OPERATOR","T_DOUBLE_ARROW","T_LIST","T_ARRAY","T_CLASS_C","T_FUNC_C","T_METHOD_C","T_LINE","T_FILE","T_COMMENT","T_DOC_COMMENT","T_OPEN_TAG","T_OPEN_TAG_WITH_ECHO","T_CLOSE_TAG","T_WHITESPACE","T_START_HEREDOC","T_END_HEREDOC","T_DOLLAR_OPEN_CURLY_BRACES","T_CURLY_OPEN","T_PAAMAYIM_NEKUDOTAYIM","T_DOUBLE_COLON","T_ABSTRACT","T_CATCH","T_FINAL","T_INSTANCEOF","T_PRIVATE","T_PROTECTED","T_PUBLIC","T_THROW","T_TRY","T_CLONE","XSL_CLONE_AUTO","XSL_CLONE_NEVER","XSL_CLONE_ALWAYS","YPERR_BADARGS","YPERR_BADDB","YPERR_BUSY","YPERR_DOMAIN","YPERR_KEY","YPERR_MAP","YPERR_NODOM","YPERR_NOMORE","YPERR_PMAP","YPERR_RESRC","YPERR_RPC","YPERR_YPBIND","YPERR_YPERR","YPERR_YPSERV","YPERR_VERS","FORCE_GZIP","FORCE_DEFLATE","E_ERROR","E_WARNING","E_PARSE","E_NOTICE","E_STRICT","E_CORE_ERROR","E_CORE_WARNING","E_COMPILE_ERROR","E_COMPILE_WARNING","E_USER_ERROR","E_USER_WARNING","E_USER_NOTICE","E_ALL","TRUE","FALSE","ZEND_THREAD_SAFE","NULL","PHP_VERSION","PHP_OS","PHP_SAPI","DEFAULT_INCLUDE_PATH","PEAR_INSTALL_DIR","PEAR_EXTENSION_DIR","PHP_EXTENSION_DIR","PHP_PREFIX","PHP_BINDIR","PHP_LIBDIR","PHP_DATADIR","PHP_SYSCONFDIR","PHP_LOCALSTATEDIR","PHP_CONFIG_FILE_PATH","PHP_CONFIG_FILE_SCAN_DIR","PHP_SHLIB_SUFFIX","PHP_EOL","PHP_OUTPUT_HANDLER_START","PHP_OUTPUT_HANDLER_CONT","PHP_OUTPUT_HANDLER_END","UPLOAD_ERR_OK","UPLOAD_ERR_INI_SIZE","UPLOAD_ERR_FORM_SIZE","UPLOAD_ERR_PARTIAL","UPLOAD_ERR_NO_FILE","UPLOAD_ERR_NO_TMP_DIR","P_STATIC","P_PUBLIC","P_PROTECTED","P_PRIVATE","M_STATIC","M_PUBLIC","M_PROTECTED","M_PRIVATE","M_ABSTRACT","M_FINAL","C_IMPLICIT_ABSTRACT","C_EXPLICIT_ABSTRACT","C_FINAL","XML_ERROR_NONE","XML_ERROR_NO_MEMORY","XML_ERROR_SYNTAX","XML_ERROR_NO_ELEMENTS","XML_ERROR_INVALID_TOKEN","XML_ERROR_UNCLOSED_TOKEN","XML_ERROR_PARTIAL_CHAR","XML_ERROR_TAG_MISMATCH","XML_ERROR_DUPLICATE_ATTRIBUTE","XML_ERROR_JUNK_AFTER_DOC_ELEMENT","XML_ERROR_PARAM_ENTITY_REF","XML_ERROR_UNDEFINED_ENTITY","XML_ERROR_RECURSIVE_ENTITY_REF","XML_ERROR_ASYNC_ENTITY","XML_ERROR_BAD_CHAR_REF","XML_ERROR_BINARY_ENTITY_REF","XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF","XML_ERROR_MISPLACED_XML_PI","XML_ERROR_UNKNOWN_ENCODING","XML_ERROR_INCORRECT_ENCODING","XML_ERROR_UNCLOSED_CDATA_SECTION","XML_ERROR_EXTERNAL_ENTITY_HANDLING","XML_OPTION_CASE_FOLDING","XML_OPTION_TARGET_ENCODING","XML_OPTION_SKIP_TAGSTART","XML_OPTION_SKIP_WHITE","XML_SAX_IMPL","CONNECTION_ABORTED","CONNECTION_NORMAL","CONNECTION_TIMEOUT","INI_USER","INI_PERDIR","INI_SYSTEM","INI_ALL","SUNFUNCS_RET_TIMESTAMP","SUNFUNCS_RET_STRING","SUNFUNCS_RET_DOUBLE","M_E","M_LOG2E","M_LOG10E","M_LN2","M_LN10","M_PI","M_PI_2","M_PI_4","M_1_PI","M_2_PI","M_2_SQRTPI","M_SQRT2","M_SQRT1_2","INF","NAN","INFO_GENERAL","INFO_CREDITS","INFO_CONFIGURATION","INFO_MODULES","INFO_ENVIRONMENT","INFO_VARIABLES","INFO_LICENSE","INFO_ALL","CREDITS_GROUP","CREDITS_GENERAL","CREDITS_SAPI","CREDITS_MODULES","CREDITS_DOCS","CREDITS_FULLPAGE","CREDITS_QA","CREDITS_ALL","HTML_SPECIALCHARS","HTML_ENTITIES","ENT_COMPAT","ENT_QUOTES","ENT_NOQUOTES","STR_PAD_LEFT","STR_PAD_RIGHT","STR_PAD_BOTH","PATHINFO_DIRNAME","PATHINFO_BASENAME","PATHINFO_EXTENSION","CHAR_MAX","LC_CTYPE","LC_NUMERIC","LC_TIME","LC_COLLATE","LC_MONETARY","LC_ALL","LC_MESSAGES","SEEK_SET","SEEK_CUR","SEEK_END","LOCK_SH","LOCK_EX","LOCK_UN","LOCK_NB","STREAM_NOTIFY_CONNECT","STREAM_NOTIFY_AUTH_REQUIRED","STREAM_NOTIFY_AUTH_RESULT","STREAM_NOTIFY_MIME_TYPE_IS","STREAM_NOTIFY_FILE_SIZE_IS","STREAM_NOTIFY_REDIRECTED","STREAM_NOTIFY_PROGRESS","STREAM_NOTIFY_FAILURE","STREAM_NOTIFY_COMPLETED","STREAM_NOTIFY_RESOLVE","STREAM_NOTIFY_SEVERITY_INFO","STREAM_NOTIFY_SEVERITY_WARN","STREAM_NOTIFY_SEVERITY_ERR","STREAM_FILTER_READ","STREAM_FILTER_WRITE","STREAM_FILTER_ALL","STREAM_CLIENT_PERSISTENT","STREAM_CLIENT_ASYNC_CONNECT","STREAM_CLIENT_CONNECT","STREAM_PEEK","STREAM_OOB","STREAM_SERVER_BIND","STREAM_SERVER_LISTEN","FILE_USE_INCLUDE_PATH","FILE_IGNORE_NEW_LINES","FILE_SKIP_EMPTY_LINES","FILE_APPEND","FILE_NO_DEFAULT_CONTEXT","FNM_NOESCAPE","FNM_PATHNAME","FNM_PERIOD","FNM_CASEFOLD","PSFS_PASS_ON","PSFS_FEED_ME","PSFS_ERR_FATAL","PSFS_FLAG_NORMAL","PSFS_FLAG_FLUSH_INC","PSFS_FLAG_FLUSH_CLOSE","ABDAY_1","ABDAY_2","ABDAY_3","ABDAY_4","ABDAY_5","ABDAY_6","ABDAY_7","DAY_1","DAY_2","DAY_3","DAY_4","DAY_5","DAY_6","DAY_7","ABMON_1","ABMON_2","ABMON_3","ABMON_4","ABMON_5","ABMON_6","ABMON_7","ABMON_8","ABMON_9","ABMON_10","ABMON_11","ABMON_12","MON_1","MON_2","MON_3","MON_4","MON_5","MON_6","MON_7","MON_8","MON_9","MON_10","MON_11","MON_12","AM_STR","PM_STR","D_T_FMT","D_FMT","T_FMT","T_FMT_AMPM","ERA","ERA_D_T_FMT","ERA_D_FMT","ERA_T_FMT","ALT_DIGITS","CRNCYSTR","RADIXCHAR","THOUSEP","YESEXPR","NOEXPR","CODESET","CRYPT_SALT_LENGTH","CRYPT_STD_DES","CRYPT_EXT_DES","CRYPT_MD5","CRYPT_BLOWFISH","DIRECTORY_SEPARATOR","PATH_SEPARATOR","GLOB_BRACE","GLOB_MARK","GLOB_NOSORT","GLOB_NOCHECK","GLOB_NOESCAPE","GLOB_ONLYDIR","LOG_EMERG","LOG_ALERT","LOG_CRIT","LOG_ERR","LOG_WARNING","LOG_NOTICE","LOG_INFO","LOG_DEBUG","LOG_KERN","LOG_USER","LOG_MAIL","LOG_DAEMON","LOG_AUTH","LOG_SYSLOG","LOG_LPR","LOG_NEWS","LOG_UUCP","LOG_CRON","LOG_AUTHPRIV","LOG_LOCAL0","LOG_LOCAL1","LOG_LOCAL2","LOG_LOCAL3","LOG_LOCAL4","LOG_LOCAL5","LOG_LOCAL6","LOG_LOCAL7","LOG_PID","LOG_CONS","LOG_ODELAY","LOG_NDELAY","LOG_NOWAIT","LOG_PERROR","EXTR_OVERWRITE","EXTR_SKIP","EXTR_PREFIX_SAME","EXTR_PREFIX_ALL","EXTR_PREFIX_INVALID","EXTR_PREFIX_IF_EXISTS","EXTR_IF_EXISTS","EXTR_REFS","SORT_ASC","SORT_DESC","SORT_REGULAR","SORT_NUMERIC","SORT_STRING","SORT_LOCALE_STRING","CASE_LOWER","CASE_UPPER","COUNT_NORMAL","COUNT_RECURSIVE","ASSERT_ACTIVE","ASSERT_CALLBACK","ASSERT_BAIL","ASSERT_WARNING","ASSERT_QUIET_EVAL","STREAM_USE_PATH","STREAM_IGNORE_URL","STREAM_ENFORCE_SAFE_MODE","STREAM_REPORT_ERRORS","STREAM_MUST_SEEK","STREAM_URL_STAT_LINK","STREAM_URL_STAT_QUIET","STREAM_MKDIR_RECURSIVE","IMAGETYPE_GIF","IMAGETYPE_JPEG","IMAGETYPE_PNG","IMAGETYPE_SWF","IMAGETYPE_PSD","IMAGETYPE_BMP","IMAGETYPE_TIFF_II","IMAGETYPE_TIFF_MM","IMAGETYPE_JPC","IMAGETYPE_JP2","IMAGETYPE_JPX","IMAGETYPE_JB2","IMAGETYPE_IFF","IMAGETYPE_WBMP","IMAGETYPE_JPEG2000","IMAGETYPE_XBM","DNS_A","DNS_NS","DNS_CNAME","DNS_SOA","DNS_PTR","DNS_HINFO","DNS_MX","DNS_TXT","DNS_SRV","DNS_NAPTR","DNS_AAAA","DNS_ANY","DNS_ALL","RIT_LEAVES_ONLY","RIT_SELF_FIRST","RIT_CHILD_FIRST","CIT_CALL_TOSTRING","CIT_CATCH_GET_CHILD","PREG_PATTERN_ORDER","PREG_SET_ORDER","PREG_OFFSET_CAPTURE","PREG_SPLIT_NO_EMPTY","PREG_SPLIT_DELIM_CAPTURE","PREG_SPLIT_OFFSET_CAPTURE","PREG_GREP_INVERT","CAL_GREGORIAN","CAL_JULIAN","CAL_JEWISH","CAL_FRENCH","CAL_NUM_CALS","CAL_DOW_DAYNO","CAL_DOW_SHORT","CAL_DOW_LONG","CAL_MONTH_GREGORIAN_SHORT","CAL_MONTH_GREGORIAN_LONG","CAL_MONTH_JULIAN_SHORT","CAL_MONTH_JULIAN_LONG","CAL_MONTH_JEWISH","CAL_MONTH_FRENCH","CAL_EASTER_DEFAULT","CAL_EASTER_ROMAN","CAL_EASTER_ALWAYS_GREGORIAN","CAL_EASTER_ALWAYS_JULIAN","CAL_JEWISH_ADD_ALAFIM_GERESH","CAL_JEWISH_ADD_ALAFIM","CAL_JEWISH_ADD_GERESHAYIM","CURLOPT_DNS_USE_GLOBAL_CACHE","CURLOPT_DNS_CACHE_TIMEOUT","CURLOPT_PORT","CURLOPT_FILE","CURLOPT_READDATA","CURLOPT_INFILE","CURLOPT_INFILESIZE","CURLOPT_URL","CURLOPT_PROXY","CURLOPT_VERBOSE","CURLOPT_HEADER","CURLOPT_HTTPHEADER","CURLOPT_NOPROGRESS","CURLOPT_NOBODY","CURLOPT_FAILONERROR","CURLOPT_UPLOAD","CURLOPT_POST","CURLOPT_FTPLISTONLY","CURLOPT_FTPAPPEND","CURLOPT_NETRC","CURLOPT_FOLLOWLOCATION","CURLOPT_FTPASCII","CURLOPT_PUT","CURLOPT_MUTE","CURLOPT_USERPWD","CURLOPT_PROXYUSERPWD","CURLOPT_RANGE","CURLOPT_TIMEOUT","CURLOPT_POSTFIELDS","CURLOPT_REFERER","CURLOPT_USERAGENT","CURLOPT_FTPPORT","CURLOPT_FTP_USE_EPSV","CURLOPT_LOW_SPEED_LIMIT","CURLOPT_LOW_SPEED_TIME","CURLOPT_RESUME_FROM","CURLOPT_COOKIE","CURLOPT_SSLCERT","CURLOPT_SSLCERTPASSWD","CURLOPT_WRITEHEADER","CURLOPT_SSL_VERIFYHOST","CURLOPT_COOKIEFILE","CURLOPT_SSLVERSION","CURLOPT_TIMECONDITION","CURLOPT_TIMEVALUE","CURLOPT_CUSTOMREQUEST","CURLOPT_STDERR","CURLOPT_TRANSFERTEXT","CURLOPT_RETURNTRANSFER","CURLOPT_QUOTE","CURLOPT_POSTQUOTE","CURLOPT_INTERFACE","CURLOPT_KRB4LEVEL","CURLOPT_HTTPPROXYTUNNEL","CURLOPT_FILETIME","CURLOPT_WRITEFUNCTION","CURLOPT_READFUNCTION","CURLOPT_PASSWDFUNCTION","CURLOPT_HEADERFUNCTION","CURLOPT_MAXREDIRS","CURLOPT_MAXCONNECTS","CURLOPT_CLOSEPOLICY","CURLOPT_FRESH_CONNECT","CURLOPT_FORBID_REUSE","CURLOPT_RANDOM_FILE","CURLOPT_EGDSOCKET","CURLOPT_CONNECTTIMEOUT","CURLOPT_SSL_VERIFYPEER","CURLOPT_CAINFO","CURLOPT_CAPATH","CURLOPT_COOKIEJAR","CURLOPT_SSL_CIPHER_LIST","CURLOPT_BINARYTRANSFER","CURLOPT_NOSIGNAL","CURLOPT_PROXYTYPE","CURLOPT_BUFFERSIZE","CURLOPT_HTTPGET","CURLOPT_HTTP_VERSION","CURLOPT_SSLKEY","CURLOPT_SSLKEYTYPE","CURLOPT_SSLKEYPASSWD","CURLOPT_SSLENGINE","CURLOPT_SSLENGINE_DEFAULT","CURLOPT_SSLCERTTYPE","CURLOPT_CRLF","CURLOPT_ENCODING","CURLOPT_PROXYPORT","CURLOPT_UNRESTRICTED_AUTH","CURLOPT_FTP_USE_EPRT","CURLOPT_HTTP200ALIASES","CURL_TIMECOND_IFMODSINCE","CURL_TIMECOND_IFUNMODSINCE","CURL_TIMECOND_LASTMOD","CURLOPT_HTTPAUTH","CURLAUTH_BASIC","CURLAUTH_DIGEST","CURLAUTH_GSSNEGOTIATE","CURLAUTH_NTLM","CURLAUTH_ANY","CURLAUTH_ANYSAFE","CURLOPT_PROXYAUTH","CURLCLOSEPOLICY_LEAST_RECENTLY_USED","CURLCLOSEPOLICY_LEAST_TRAFFIC","CURLCLOSEPOLICY_SLOWEST","CURLCLOSEPOLICY_CALLBACK","CURLCLOSEPOLICY_OLDEST","CURLINFO_EFFECTIVE_URL","CURLINFO_HTTP_CODE","CURLINFO_HEADER_SIZE","CURLINFO_REQUEST_SIZE","CURLINFO_TOTAL_TIME","CURLINFO_NAMELOOKUP_TIME","CURLINFO_CONNECT_TIME","CURLINFO_PRETRANSFER_TIME","CURLINFO_SIZE_UPLOAD","CURLINFO_SIZE_DOWNLOAD","CURLINFO_SPEED_DOWNLOAD","CURLINFO_SPEED_UPLOAD","CURLINFO_FILETIME","CURLINFO_SSL_VERIFYRESULT","CURLINFO_CONTENT_LENGTH_DOWNLOAD","CURLINFO_CONTENT_LENGTH_UPLOAD","CURLINFO_STARTTRANSFER_TIME","CURLINFO_CONTENT_TYPE","CURLINFO_REDIRECT_TIME","CURLINFO_REDIRECT_COUNT","CURL_VERSION_IPV6","CURL_VERSION_KERBEROS4","CURL_VERSION_SSL","CURL_VERSION_LIBZ","CURLVERSION_NOW","CURLE_OK","CURLE_UNSUPPORTED_PROTOCOL","CURLE_FAILED_INIT","CURLE_URL_MALFORMAT","CURLE_URL_MALFORMAT_USER","CURLE_COULDNT_RESOLVE_PROXY","CURLE_COULDNT_RESOLVE_HOST","CURLE_COULDNT_CONNECT","CURLE_FTP_WEIRD_SERVER_REPLY","CURLE_FTP_ACCESS_DENIED","CURLE_FTP_USER_PASSWORD_INCORRECT","CURLE_FTP_WEIRD_PASS_REPLY","CURLE_FTP_WEIRD_USER_REPLY","CURLE_FTP_WEIRD_PASV_REPLY","CURLE_FTP_WEIRD_227_FORMAT","CURLE_FTP_CANT_GET_HOST","CURLE_FTP_CANT_RECONNECT","CURLE_FTP_COULDNT_SET_BINARY","CURLE_PARTIAL_FILE","CURLE_FTP_COULDNT_RETR_FILE","CURLE_FTP_WRITE_ERROR","CURLE_FTP_QUOTE_ERROR","CURLE_HTTP_NOT_FOUND","CURLE_WRITE_ERROR","CURLE_MALFORMAT_USER","CURLE_FTP_COULDNT_STOR_FILE","CURLE_READ_ERROR","CURLE_OUT_OF_MEMORY","CURLE_OPERATION_TIMEOUTED","CURLE_FTP_COULDNT_SET_ASCII","CURLE_FTP_PORT_FAILED","CURLE_FTP_COULDNT_USE_REST","CURLE_FTP_COULDNT_GET_SIZE","CURLE_HTTP_RANGE_ERROR","CURLE_HTTP_POST_ERROR","CURLE_SSL_CONNECT_ERROR","CURLE_FTP_BAD_DOWNLOAD_RESUME","CURLE_FILE_COULDNT_READ_FILE","CURLE_LDAP_CANNOT_BIND","CURLE_LDAP_SEARCH_FAILED","CURLE_LIBRARY_NOT_FOUND","CURLE_FUNCTION_NOT_FOUND","CURLE_ABORTED_BY_CALLBACK","CURLE_BAD_FUNCTION_ARGUMENT","CURLE_BAD_CALLING_ORDER","CURLE_HTTP_PORT_FAILED","CURLE_BAD_PASSWORD_ENTERED","CURLE_TOO_MANY_REDIRECTS","CURLE_UNKNOWN_TELNET_OPTION","CURLE_TELNET_OPTION_SYNTAX","CURLE_OBSOLETE","CURLE_SSL_PEER_CERTIFICATE","CURLE_GOT_NOTHING","CURLE_SSL_ENGINE_NOTFOUND","CURLE_SSL_ENGINE_SETFAILED","CURLE_SEND_ERROR","CURLE_RECV_ERROR","CURLE_SHARE_IN_USE","CURLE_SSL_CERTPROBLEM","CURLE_SSL_CIPHER","CURLE_SSL_CACERT","CURLE_BAD_CONTENT_ENCODING","CURLPROXY_HTTP","CURLPROXY_SOCKS5","CURL_NETRC_OPTIONAL","CURL_NETRC_IGNORED","CURL_NETRC_REQUIRED","CURL_HTTP_VERSION_NONE","CURL_HTTP_VERSION_1_0","CURL_HTTP_VERSION_1_1","CURLM_CALL_MULTI_PERFORM","CURLM_OK","CURLM_BAD_HANDLE","CURLM_BAD_EASY_HANDLE","CURLM_OUT_OF_MEMORY","CURLM_INTERNAL_ERROR","CURLMSG_DONE","DBX_MYSQL","DBX_ODBC","DBX_PGSQL","DBX_MSSQL","DBX_FBSQL","DBX_OCI8","DBX_SYBASECT","DBX_SQLITE","DBX_PERSISTENT","DBX_RESULT_INFO","DBX_RESULT_INDEX","DBX_RESULT_ASSOC","DBX_RESULT_UNBUFFERED","DBX_COLNAMES_UNCHANGED","DBX_COLNAMES_UPPERCASE","DBX_COLNAMES_LOWERCASE","DBX_CMP_NATIVE","DBX_CMP_TEXT","DBX_CMP_NUMBER","DBX_CMP_ASC","DBX_CMP_DESC","O_RDONLY","O_WRONLY","O_RDWR","O_CREAT","O_EXCL","O_TRUNC","O_APPEND","O_NONBLOCK","O_NDELAY","O_SYNC","O_ASYNC","O_NOCTTY","S_IRWXU","S_IRUSR","S_IWUSR","S_IXUSR","S_IRWXG","S_IRGRP","S_IWGRP","S_IXGRP","S_IRWXO","S_IROTH","S_IWOTH","S_IXOTH","F_DUPFD","F_GETFD","F_GETFL","F_SETFL","F_GETLK","F_SETLK","F_SETLKW","F_SETOWN","F_GETOWN","F_UNLCK","F_RDLCK","F_WRLCK","XML_ELEMENT_NODE","XML_ATTRIBUTE_NODE","XML_TEXT_NODE","XML_CDATA_SECTION_NODE","XML_ENTITY_REF_NODE","XML_ENTITY_NODE","XML_PI_NODE","XML_COMMENT_NODE","XML_DOCUMENT_NODE","XML_DOCUMENT_TYPE_NODE","XML_DOCUMENT_FRAG_NODE","XML_NOTATION_NODE","XML_HTML_DOCUMENT_NODE","XML_DTD_NODE","XML_ELEMENT_DECL_NODE","XML_ATTRIBUTE_DECL_NODE","XML_ENTITY_DECL_NODE","XML_NAMESPACE_DECL_NODE","XML_LOCAL_NAMESPACE","XML_ATTRIBUTE_CDATA","XML_ATTRIBUTE_ID","XML_ATTRIBUTE_IDREF","XML_ATTRIBUTE_IDREFS","XML_ATTRIBUTE_ENTITY","XML_ATTRIBUTE_NMTOKEN","XML_ATTRIBUTE_NMTOKENS","XML_ATTRIBUTE_ENUMERATION","XML_ATTRIBUTE_NOTATION","DOM_PHP_ERR","DOM_INDEX_SIZE_ERR","DOMSTRING_SIZE_ERR","DOM_HIERARCHY_REQUEST_ERR","DOM_WRONG_DOCUMENT_ERR","DOM_INVALID_CHARACTER_ERR","DOM_NO_DATA_ALLOWED_ERR","DOM_NO_MODIFICATION_ALLOWED_ERR","DOM_NOT_FOUND_ERR","DOM_NOT_SUPPORTED_ERR","DOM_INUSE_ATTRIBUTE_ERR","DOM_INVALID_STATE_ERR","DOM_SYNTAX_ERR","DOM_INVALID_MODIFICATION_ERR","DOM_NAMESPACE_ERR","DOM_INVALID_ACCESS_ERR","DOM_VALIDATION_ERR","EXIF_USE_MBSTRING","FAMChanged","FAMDeleted","FAMStartExecuting","FAMStopExecuting","FAMCreated","FAMMoved","FAMAcknowledge","FAMExists","FAMEndExist","FTP_ASCII","FTP_TEXT","FTP_BINARY","FTP_IMAGE","FTP_AUTORESUME","FTP_TIMEOUT_SEC","FTP_AUTOSEEK","FTP_FAILED","FTP_FINISHED","FTP_MOREDATA","IMG_GIF","IMG_JPG","IMG_JPEG","IMG_PNG","IMG_WBMP","IMG_XPM","IMG_COLOR_TILED","IMG_COLOR_STYLED","IMG_COLOR_BRUSHED","IMG_COLOR_STYLEDBRUSHED","IMG_COLOR_TRANSPARENT","IMG_ARC_ROUNDED","IMG_ARC_PIE","IMG_ARC_CHORD","IMG_ARC_NOFILL","IMG_ARC_EDGED","IMG_GD2_RAW","IMG_GD2_COMPRESSED","IMG_EFFECT_REPLACE","IMG_EFFECT_ALPHABLEND","IMG_EFFECT_NORMAL","IMG_EFFECT_OVERLAY","GD_BUNDLED","IMG_FILTER_NEGATE","IMG_FILTER_GRAYSCALE","IMG_FILTER_BRIGHTNESS","IMG_FILTER_CONTRAST","IMG_FILTER_COLORIZE","IMG_FILTER_EDGEDETECT","IMG_FILTER_GAUSSIAN_BLUR","IMG_FILTER_SELECTIVE_BLUR","IMG_FILTER_EMBOSS","IMG_FILTER_MEAN_REMOVAL","IMG_FILTER_SMOOTH","GMP_ROUND_ZERO","GMP_ROUND_PLUSINF","GMP_ROUND_MINUSINF","ICONV_IMPL","ICONV_VERSION","ICONV_MIME_DECODE_STRICT","ICONV_MIME_DECODE_CONTINUE_ON_ERROR","NIL","IMAP_OPENTIMEOUT","IMAP_READTIMEOUT","IMAP_WRITETIMEOUT","IMAP_CLOSETIMEOUT","OP_DEBUG","OP_READONLY","OP_ANONYMOUS","OP_SHORTCACHE","OP_SILENT","OP_PROTOTYPE","OP_HALFOPEN","OP_EXPUNGE","OP_SECURE","CL_EXPUNGE","FT_UID","FT_PEEK","FT_NOT","FT_INTERNAL","FT_PREFETCHTEXT","ST_UID","ST_SILENT","ST_SET","CP_UID","CP_MOVE","SE_UID","SE_FREE","SE_NOPREFETCH","SO_FREE","SO_NOSERVER","SA_MESSAGES","SA_RECENT","SA_UNSEEN","SA_UIDNEXT","SA_UIDVALIDITY","SA_ALL","LATT_NOINFERIORS","LATT_NOSELECT","LATT_MARKED","LATT_UNMARKED","LATT_REFERRAL","LATT_HASCHILDREN","LATT_HASNOCHILDREN","SORTDATE","SORTARRIVAL","SORTFROM","SORTSUBJECT","SORTTO","SORTCC","SORTSIZE","TYPETEXT","TYPEMULTIPART","TYPEMESSAGE","TYPEAPPLICATION","TYPEAUDIO","TYPEIMAGE","TYPEVIDEO","TYPEMODEL","TYPEOTHER","ENC7BIT","ENC8BIT","ENCBINARY","ENCBASE64","ENCQUOTEDPRINTABLE","ENCOTHER","LDAP_DEREF_NEVER","LDAP_DEREF_SEARCHING","LDAP_DEREF_FINDING","LDAP_DEREF_ALWAYS","LDAP_OPT_DEREF","LDAP_OPT_SIZELIMIT","LDAP_OPT_TIMELIMIT","LDAP_OPT_PROTOCOL_VERSION","LDAP_OPT_ERROR_NUMBER","LDAP_OPT_REFERRALS","LDAP_OPT_RESTART","LDAP_OPT_HOST_NAME","LDAP_OPT_ERROR_STRING","LDAP_OPT_MATCHED_DN","LDAP_OPT_SERVER_CONTROLS","LDAP_OPT_CLIENT_CONTROLS","LDAP_OPT_DEBUG_LEVEL","MB_OVERLOAD_MAIL","MB_OVERLOAD_STRING","MB_OVERLOAD_REGEX","MB_CASE_UPPER","MB_CASE_LOWER","MB_CASE_TITLE","MCRYPT_ENCRYPT","MCRYPT_DECRYPT","MCRYPT_DEV_RANDOM","MCRYPT_DEV_URANDOM","MCRYPT_RAND","MCRYPT_3DES","MCRYPT_ARCFOUR_IV","MCRYPT_ARCFOUR","MCRYPT_BLOWFISH","MCRYPT_BLOWFISH_COMPAT","MCRYPT_CAST_128","MCRYPT_CAST_256","MCRYPT_CRYPT","MCRYPT_DES","MCRYPT_ENIGNA","MCRYPT_GOST","MCRYPT_LOKI97","MCRYPT_PANAMA","MCRYPT_RC2","MCRYPT_RIJNDAEL_128","MCRYPT_RIJNDAEL_192","MCRYPT_RIJNDAEL_256","MCRYPT_SAFER64","MCRYPT_SAFER128","MCRYPT_SAFERPLUS","MCRYPT_SERPENT","MCRYPT_THREEWAY","MCRYPT_TRIPLEDES","MCRYPT_TWOFISH","MCRYPT_WAKE","MCRYPT_XTEA","MCRYPT_IDEA","MCRYPT_MARS","MCRYPT_RC6","MCRYPT_SKIPJACK","MCRYPT_MODE_CBC","MCRYPT_MODE_CFB","MCRYPT_MODE_ECB","MCRYPT_MODE_NOFB","MCRYPT_MODE_OFB","MCRYPT_MODE_STREAM","MHASH_CRC32","MHASH_MD5","MHASH_SHA1","MHASH_HAVAL256","MHASH_RIPEMD160","MHASH_TIGER","MHASH_GOST","MHASH_CRC32B","MHASH_HAVAL224","MHASH_HAVAL192","MHASH_HAVAL160","MHASH_HAVAL128","MHASH_TIGER128","MHASH_TIGER160","MHASH_MD4","MHASH_SHA256","MHASH_ADLER32","MHASH_SHA224","MHASH_SHA512","MHASH_SHA384","MHASH_WHIRLPOOL","MHASH_RIPEMD128","MHASH_RIPEMD256","MHASH_RIPEMD320","MHASH_SNEFRU128","MHASH_SNEFRU256","MHASH_MD2","MYSQL_ASSOC","MYSQL_NUM","MYSQL_BOTH","MYSQL_CLIENT_COMPRESS","MYSQL_CLIENT_SSL","MYSQL_CLIENT_INTERACTIVE","MYSQL_CLIENT_IGNORE_SPACE","MYSQLI_READ_DEFAULT_GROUP","MYSQLI_READ_DEFAULT_FILE","MYSQLI_OPT_CONNECT_TIMEOUT","MYSQLI_OPT_LOCAL_INFILE","MYSQLI_INIT_COMMAND","MYSQLI_CLIENT_SSL","MYSQLI_CLIENT_COMPRESS","MYSQLI_CLIENT_INTERACTIVE","MYSQLI_CLIENT_IGNORE_SPACE","MYSQLI_CLIENT_NO_SCHEMA","MYSQLI_CLIENT_FOUND_ROWS","MYSQLI_STORE_RESULT","MYSQLI_USE_RESULT","MYSQLI_ASSOC","MYSQLI_NUM","MYSQLI_BOTH","MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH","MYSQLI_NOT_NULL_FLAG","MYSQLI_PRI_KEY_FLAG","MYSQLI_UNIQUE_KEY_FLAG","MYSQLI_MULTIPLE_KEY_FLAG","MYSQLI_BLOB_FLAG","MYSQLI_UNSIGNED_FLAG","MYSQLI_ZEROFILL_FLAG","MYSQLI_AUTO_INCREMENT_FLAG","MYSQLI_TIMESTAMP_FLAG","MYSQLI_SET_FLAG","MYSQLI_NUM_FLAG","MYSQLI_PART_KEY_FLAG","MYSQLI_GROUP_FLAG","MYSQLI_TYPE_DECIMAL","MYSQLI_TYPE_TINY","MYSQLI_TYPE_SHORT","MYSQLI_TYPE_LONG","MYSQLI_TYPE_FLOAT","MYSQLI_TYPE_DOUBLE","MYSQLI_TYPE_NULL","MYSQLI_TYPE_TIMESTAMP","MYSQLI_TYPE_LONGLONG","MYSQLI_TYPE_INT24","MYSQLI_TYPE_DATE","MYSQLI_TYPE_TIME","MYSQLI_TYPE_DATETIME","MYSQLI_TYPE_YEAR","MYSQLI_TYPE_NEWDATE","MYSQLI_TYPE_ENUM","MYSQLI_TYPE_SET","MYSQLI_TYPE_TINY_BLOB","MYSQLI_TYPE_MEDIUM_BLOB","MYSQLI_TYPE_LONG_BLOB","MYSQLI_TYPE_BLOB","MYSQLI_TYPE_VAR_STRING","MYSQLI_TYPE_STRING","MYSQLI_TYPE_CHAR","MYSQLI_TYPE_INTERVAL","MYSQLI_TYPE_GEOMETRY","MYSQLI_RPL_MASTER","MYSQLI_RPL_SLAVE","MYSQLI_RPL_ADMIN","MYSQLI_NO_DATA","MYSQLI_REPORT_INDEX","MYSQLI_REPORT_ERROR","MYSQLI_REPORT_ALL","MYSQLI_REPORT_OFF","NCURSES_COLOR_BLACK","NCURSES_COLOR_RED","NCURSES_COLOR_GREEN","NCURSES_COLOR_YELLOW","NCURSES_COLOR_BLUE","NCURSES_COLOR_MAGENTA","NCURSES_COLOR_CYAN","NCURSES_COLOR_WHITE","NCURSES_KEY_DOWN","NCURSES_KEY_UP","NCURSES_KEY_LEFT","NCURSES_KEY_RIGHT","NCURSES_KEY_BACKSPACE","NCURSES_KEY_MOUSE","NCURSES_KEY_F0","NCURSES_KEY_F1","NCURSES_KEY_F2","NCURSES_KEY_F3","NCURSES_KEY_F4","NCURSES_KEY_F5","NCURSES_KEY_F6","NCURSES_KEY_F7","NCURSES_KEY_F8","NCURSES_KEY_F9","NCURSES_KEY_F10","NCURSES_KEY_F11","NCURSES_KEY_F12","NCURSES_KEY_DL","NCURSES_KEY_IL","NCURSES_KEY_DC","NCURSES_KEY_IC","NCURSES_KEY_EIC","NCURSES_KEY_CLEAR","NCURSES_KEY_EOS","NCURSES_KEY_EOL","NCURSES_KEY_SF","NCURSES_KEY_SR","NCURSES_KEY_NPAGE","NCURSES_KEY_PPAGE","NCURSES_KEY_STAB","NCURSES_KEY_CTAB","NCURSES_KEY_CATAB","NCURSES_KEY_ENTER","NCURSES_KEY_SRESET","NCURSES_KEY_RESET","NCURSES_KEY_PRINT","NCURSES_KEY_LL","NCURSES_KEY_A1","NCURSES_KEY_A3","NCURSES_KEY_B2","NCURSES_KEY_C1","NCURSES_KEY_C3","NCURSES_KEY_BTAB","NCURSES_KEY_BEG","NCURSES_KEY_CANCEL","NCURSES_KEY_CLOSE","NCURSES_KEY_COMMAND","NCURSES_KEY_COPY","NCURSES_KEY_CREATE","NCURSES_KEY_END","NCURSES_KEY_EXIT","NCURSES_KEY_FIND","NCURSES_KEY_HELP","NCURSES_KEY_MARK","NCURSES_KEY_MESSAGE","NCURSES_KEY_MOVE","NCURSES_KEY_NEXT","NCURSES_KEY_OPEN","NCURSES_KEY_OPTIONS","NCURSES_KEY_PREVIOUS","NCURSES_KEY_REDO","NCURSES_KEY_REFERENCE","NCURSES_KEY_REFRESH","NCURSES_KEY_REPLACE","NCURSES_KEY_RESTART","NCURSES_KEY_RESUME","NCURSES_KEY_SAVE","NCURSES_KEY_SBEG","NCURSES_KEY_SCANCEL","NCURSES_KEY_SCOMMAND","NCURSES_KEY_SCOPY","NCURSES_KEY_SCREATE","NCURSES_KEY_SDC","NCURSES_KEY_SDL","NCURSES_KEY_SELECT","NCURSES_KEY_SEND","NCURSES_KEY_SEOL","NCURSES_KEY_SEXIT","NCURSES_KEY_SFIND","NCURSES_KEY_SHELP","NCURSES_KEY_SHOME","NCURSES_KEY_SIC","NCURSES_KEY_SLEFT","NCURSES_KEY_SMESSAGE","NCURSES_KEY_SMOVE","NCURSES_KEY_SNEXT","NCURSES_KEY_SOPTIONS","NCURSES_KEY_SPREVIOUS","NCURSES_KEY_SPRINT","NCURSES_KEY_SREDO","NCURSES_KEY_SREPLACE","NCURSES_KEY_SRIGHT","NCURSES_KEY_SRSUME","NCURSES_KEY_SSAVE","NCURSES_KEY_SSUSPEND","NCURSES_KEY_SUNDO","NCURSES_KEY_SUSPEND","NCURSES_KEY_UNDO","NCURSES_KEY_RESIZE","NCURSES_A_NORMAL","NCURSES_A_STANDOUT","NCURSES_A_UNDERLINE","NCURSES_A_REVERSE","NCURSES_A_BLINK","NCURSES_A_DIM","NCURSES_A_BOLD","NCURSES_A_PROTECT","NCURSES_A_INVIS","NCURSES_A_ALTCHARSET","NCURSES_A_CHARTEXT","NCURSES_BUTTON1_PRESSED","NCURSES_BUTTON1_RELEASED","NCURSES_BUTTON1_CLICKED","NCURSES_BUTTON1_DOUBLE_CLICKED","NCURSES_BUTTON1_TRIPLE_CLICKED","NCURSES_BUTTON2_PRESSED","NCURSES_BUTTON2_RELEASED","NCURSES_BUTTON2_CLICKED","NCURSES_BUTTON2_DOUBLE_CLICKED","NCURSES_BUTTON2_TRIPLE_CLICKED","NCURSES_BUTTON3_PRESSED","NCURSES_BUTTON3_RELEASED","NCURSES_BUTTON3_CLICKED","NCURSES_BUTTON3_DOUBLE_CLICKED","NCURSES_BUTTON3_TRIPLE_CLICKED","NCURSES_BUTTON4_PRESSED","NCURSES_BUTTON4_RELEASED","NCURSES_BUTTON4_CLICKED","NCURSES_BUTTON4_DOUBLE_CLICKED","NCURSES_BUTTON4_TRIPLE_CLICKED","NCURSES_BUTTON_SHIFT","NCURSES_BUTTON_CTRL","NCURSES_BUTTON_ALT","NCURSES_ALL_MOUSE_EVENTS","NCURSES_REPORT_MOUSE_POSITION","ODBC_TYPE","ODBC_BINMODE_PASSTHRU","ODBC_BINMODE_RETURN","ODBC_BINMODE_CONVERT","SQL_ODBC_CURSORS","SQL_CUR_USE_DRIVER","SQL_CUR_USE_IF_NEEDED","SQL_CUR_USE_ODBC","SQL_CONCURRENCY","SQL_CONCUR_READ_ONLY","SQL_CONCUR_LOCK","SQL_CONCUR_ROWVER","SQL_CONCUR_VALUES","SQL_CURSOR_TYPE","SQL_CURSOR_FORWARD_ONLY","SQL_CURSOR_KEYSET_DRIVEN","SQL_CURSOR_DYNAMIC","SQL_CURSOR_STATIC","SQL_KEYSET_SIZE","SQL_FETCH_FIRST","SQL_FETCH_NEXT","SQL_CHAR","SQL_VARCHAR","SQL_LONGVARCHAR","SQL_DECIMAL","SQL_NUMERIC","SQL_BIT","SQL_TINYINT","SQL_SMALLINT","SQL_INTEGER","SQL_BIGINT","SQL_REAL","SQL_FLOAT","SQL_DOUBLE","SQL_BINARY","SQL_VARBINARY","SQL_LONGVARBINARY","SQL_DATE","SQL_TIME","SQL_TIMESTAMP","X509_PURPOSE_SSL_CLIENT","X509_PURPOSE_SSL_SERVER","X509_PURPOSE_NS_SSL_SERVER","X509_PURPOSE_SMIME_SIGN","X509_PURPOSE_SMIME_ENCRYPT","X509_PURPOSE_CRL_SIGN","X509_PURPOSE_ANY","OPENSSL_ALGO_SHA1","OPENSSL_ALGO_MD5","OPENSSL_ALGO_MD4","OPENSSL_ALGO_MD2","PKCS7_DETACHED","PKCS7_TEXT","PKCS7_NOINTERN","PKCS7_NOVERIFY","PKCS7_NOCHAIN","PKCS7_NOCERTS","PKCS7_NOATTR","PKCS7_BINARY","PKCS7_NOSIGS","OPENSSL_PKCS1_PADDING","OPENSSL_SSLV23_PADDING","OPENSSL_NO_PADDING","OPENSSL_PKCS1_OAEP_PADDING","OPENSSL_CIPHER_RC2_40","OPENSSL_CIPHER_RC2_128","OPENSSL_CIPHER_RC2_64","OPENSSL_CIPHER_DES","OPENSSL_CIPHER_3DES","OPENSSL_KEYTYPE_RSA","OPENSSL_KEYTYPE_DSA","OPENSSL_KEYTYPE_DH","WNOHANG","WUNTRACED","SIG_IGN","SIG_DFL","SIG_ERR","SIGHUP","SIGINT","SIGQUIT","SIGILL","SIGTRAP","SIGABRT","SIGIOT","SIGBUS","SIGFPE","SIGKILL","SIGUSR1","SIGSEGV","SIGUSR2","SIGPIPE","SIGALRM","SIGTERM","SIGSTKFLT","SIGCLD","SIGCHLD","SIGCONT","SIGSTOP","SIGTSTP","SIGTTIN","SIGTTOU","SIGURG","SIGXCPU","SIGXFSZ","SIGVTALRM","SIGPROF","SIGWINCH","SIGPOLL","SIGIO","SIGPWR","SIGSYS","SIGBABY","PRIO_PGRP","PRIO_USER","PRIO_PROCESS","PGSQL_CONNECT_FORCE_NEW","PGSQL_ASSOC","PGSQL_NUM","PGSQL_BOTH","PGSQL_CONNECTION_BAD","PGSQL_CONNECTION_OK","PGSQL_SEEK_SET","PGSQL_SEEK_CUR","PGSQL_SEEK_END","PGSQL_STATUS_LONG","PGSQL_STATUS_STRING","PGSQL_EMPTY_QUERY","PGSQL_COMMAND_OK","PGSQL_TUPLES_OK","PGSQL_COPY_OUT","PGSQL_COPY_IN","PGSQL_BAD_RESPONSE","PGSQL_NONFATAL_ERROR","PGSQL_FATAL_ERROR","PGSQL_CONV_IGNORE_DEFAULT","PGSQL_CONV_FORCE_NULL","PGSQL_CONV_IGNORE_NOT_NULL","PGSQL_DML_NO_CONV","PGSQL_DML_EXEC","PGSQL_DML_ASYNC","PGSQL_DML_STRING","SNMP_VALUE_LIBRARY","SNMP_VALUE_PLAIN","SNMP_VALUE_OBJECT","SNMP_BIT_STR","SNMP_OCTET_STR","SNMP_OPAQUE","SNMP_NULL","SNMP_OBJECT_ID","SNMP_IPADDRESS","SNMP_COUNTER","SNMP_UNSIGNED","SNMP_TIMETICKS","SNMP_UINTEGER","SNMP_INTEGER","SNMP_COUNTER64","SOAP_1_1","SOAP_1_2","SOAP_PERSISTENCE_SESSION","SOAP_PERSISTENCE_REQUEST","SOAP_FUNCTIONS_ALL","SOAP_ENCODED","SOAP_LITERAL","SOAP_RPC","SOAP_DOCUMENT","SOAP_ACTOR_NEXT","SOAP_ACTOR_NONE","SOAP_ACTOR_UNLIMATERECEIVER","SOAP_COMPRESSION_ACCEPT","SOAP_COMPRESSION_GZIP","SOAP_COMPRESSION_DEFLATE","UNKNOWN_TYPE","XSD_STRING","XSD_BOOLEAN","XSD_DECIMAL","XSD_FLOAT","XSD_DOUBLE","XSD_DURATION","XSD_DATETIME","XSD_TIME","XSD_DATE","XSD_GYEARMONTH","XSD_GYEAR","XSD_GMONTHDAY","XSD_GDAY","XSD_GMONTH","XSD_HEXBINARY","XSD_BASE64BINARY","XSD_ANYURI","XSD_QNAME","XSD_NOTATION","XSD_NORMALIZEDSTRING","XSD_TOKEN","XSD_LANGUAGE","XSD_NMTOKEN","XSD_NAME","XSD_NCNAME","XSD_ID","XSD_IDREF","XSD_IDREFS","XSD_ENTITY","XSD_ENTITIES","XSD_INTEGER","XSD_NONPOSITIVEINTEGER","XSD_NEGATIVEINTEGER","XSD_LONG","XSD_INT","XSD_SHORT","XSD_BYTE","XSD_NONNEGATIVEINTEGER","XSD_UNSIGNEDLONG","XSD_UNSIGNEDINT","XSD_UNSIGNEDSHORT","XSD_UNSIGNEDBYTE","XSD_POSITIVEINTEGER","XSD_NMTOKENS","XSD_ANYTYPE","SOAP_ENC_OBJECT","SOAP_ENC_ARRAY","XSD_1999_TIMEINSTANT","XSD_NAMESPACE","XSD_1999_NAMESPACE","AF_UNIX","AF_INET","AF_INET6","SOCK_STREAM","SOCK_DGRAM","SOCK_RAW","SOCK_SEQPACKET","SOCK_RDM","MSG_OOB","MSG_WAITALL","MSG_PEEK","MSG_DONTROUTE","SO_DEBUG","SO_REUSEADDR","SO_KEEPALIVE","SO_DONTROUTE","SO_LINGER","SO_BROADCAST","SO_OOBINLINE","SO_SNDBUF","SO_RCVBUF","SO_SNDLOWAT","SO_RCVLOWAT","SO_SNDTIMEO","SO_RCVTIMEO","SO_TYPE","SO_ERROR","SOL_SOCKET","SOMAXCONN","PHP_NORMAL_READ","PHP_BINARY_READ","SOCKET_EPERM","SOCKET_ENOENT","SOCKET_EINTR","SOCKET_EIO","SOCKET_ENXIO","SOCKET_E2BIG","SOCKET_EBADF","SOCKET_EAGAIN","SOCKET_ENOMEM","SOCKET_EACCES","SOCKET_EFAULT","SOCKET_ENOTBLK","SOCKET_EBUSY","SOCKET_EEXIST","SOCKET_EXDEV","SOCKET_ENODEV","SOCKET_ENOTDIR","SOCKET_EISDIR","SOCKET_EINVAL","SOCKET_ENFILE","SOCKET_EMFILE","SOCKET_ENOTTY","SOCKET_ENOSPC","SOCKET_ESPIPE","SOCKET_EROFS","SOCKET_EMLINK","SOCKET_EPIPE","SOCKET_ENAMETOOLONG","SOCKET_ENOLCK","SOCKET_ENOSYS","SOCKET_ENOTEMPTY","SOCKET_ELOOP","SOCKET_EWOULDBLOCK","SOCKET_ENOMSG","SOCKET_EIDRM","SOCKET_ECHRNG","SOCKET_EL2NSYNC","SOCKET_EL3HLT","SOCKET_EL3RST","SOCKET_ELNRNG","SOCKET_EUNATCH","SOCKET_ENOCSI","SOCKET_EL2HLT","SOCKET_EBADE","SOCKET_EBADR","SOCKET_EXFULL","SOCKET_ENOANO","SOCKET_EBADRQC","SOCKET_EBADSLT","SOCKET_ENOSTR","SOCKET_ENODATA","SOCKET_ETIME","SOCKET_ENOSR","SOCKET_ENONET","SOCKET_EREMOTE","SOCKET_ENOLINK","SOCKET_EADV","SOCKET_ESRMNT","SOCKET_ECOMM","SOCKET_EPROTO","SOCKET_EMULTIHOP","SOCKET_EBADMSG","SOCKET_ENOTUNIQ","SOCKET_EBADFD","SOCKET_EREMCHG","SOCKET_ERESTART","SOCKET_ESTRPIPE","SOCKET_EUSERS","SOCKET_ENOTSOCK","SOCKET_EDESTADDRREQ","SOCKET_EMSGSIZE","SOCKET_EPROTOTYPE","SOCKET_ENOPROTOOPT","SOCKET_EPROTONOSUPPORT","SOCKET_ESOCKTNOSUPPORT","SOCKET_EOPNOTSUPP","SOCKET_EPFNOSUPPORT","SOCKET_EAFNOSUPPORT","SOCKET_EADDRINUSE","SOCKET_EADDRNOTAVAIL","SOCKET_ENETDOWN","SOCKET_ENETUNREACH","SOCKET_ENETRESET","SOCKET_ECONNABORTED","SOCKET_ECONNRESET","SOCKET_ENOBUFS","SOCKET_EISCONN","SOCKET_ENOTCONN","SOCKET_ESHUTDOWN","SOCKET_ETOOMANYREFS","SOCKET_ETIMEDOUT","SOCKET_ECONNREFUSED","SOCKET_EHOSTDOWN","SOCKET_EHOSTUNREACH","SOCKET_EALREADY","SOCKET_EINPROGRESS","SOCKET_EISNAM","SOCKET_EREMOTEIO","SOCKET_EDQUOT","SOCKET_ENOMEDIUM","SOCKET_EMEDIUMTYPE","SOL_TCP","SOL_UDP","SQLITE_BOTH","SQLITE_NUM","SQLITE_ASSOC","SQLITE_OK","SQLITE_ERROR","SQLITE_INTERNAL","SQLITE_PERM","SQLITE_ABORT","SQLITE_BUSY","SQLITE_LOCKED","SQLITE_NOMEM","SQLITE_READONLY","SQLITE_INTERRUPT","SQLITE_IOERR","SQLITE_CORRUPT","SQLITE_NOTFOUND","SQLITE_FULL","SQLITE_CANTOPEN","SQLITE_PROTOCOL","SQLITE_EMPTY","SQLITE_SCHEMA","SQLITE_TOOBIG","SQLITE_CONSTRAINT","SQLITE_MISMATCH","SQLITE_MISUSE","SQLITE_NOLFS","SQLITE_AUTH","SQLITE_FORMAT","SQLITE_ROW","SQLITE_DONE","MSG_IPC_NOWAIT","MSG_NOERROR","MSG_EXCEPT","T_INCLUDE","T_INCLUDE_ONCE","T_EVAL","T_REQUIRE","T_REQUIRE_ONCE","T_LOGICAL_OR","T_LOGICAL_XOR","T_LOGICAL_AND","T_PRINT","T_PLUS_EQUAL","T_MINUS_EQUAL","T_MUL_EQUAL","T_DIV_EQUAL","T_CONCAT_EQUAL","T_MOD_EQUAL","T_AND_EQUAL","T_OR_EQUAL","T_XOR_EQUAL","T_SL_EQUAL","T_SR_EQUAL","T_BOOLEAN_OR","T_BOOLEAN_AND","T_IS_EQUAL","T_IS_NOT_EQUAL","T_IS_IDENTICAL","T_IS_NOT_IDENTICAL","T_IS_SMALLER_OR_EQUAL","T_IS_GREATER_OR_EQUAL","T_SL","T_SR","T_INC","T_DEC","T_INT_CAST","T_DOUBLE_CAST","T_STRING_CAST","T_ARRAY_CAST","T_OBJECT_CAST","T_BOOL_CAST","T_UNSET_CAST","T_NEW","T_EXIT","T_IF","T_ELSEIF","T_ELSE","T_ENDIF","T_LNUMBER","T_DNUMBER","T_STRING","T_STRING_VARNAME","T_VARIABLE","T_NUM_STRING","T_INLINE_HTML","T_CHARACTER","T_BAD_CHARACTER","T_ENCAPSED_AND_WHITESPACE","T_CONSTANT_ENCAPSED_STRING","T_ECHO","T_DO","T_WHILE","T_ENDWHILE","T_FOR","T_ENDFOR","T_FOREACH","T_ENDFOREACH","T_DECLARE","T_ENDDECLARE","T_AS","T_SWITCH","T_ENDSWITCH","T_CASE","T_DEFAULT","T_BREAK","T_CONTINUE","T_FUNCTION","T_CONST","T_RETURN","T_USE","T_GLOBAL","T_STATIC","T_VAR","T_UNSET","T_ISSET","T_EMPTY","T_CLASS","T_EXTENDS","T_INTERFACE","T_IMPLEMENTS","T_OBJECT_OPERATOR","T_DOUBLE_ARROW","T_LIST","T_ARRAY","T_CLASS_C","T_FUNC_C","T_METHOD_C","T_LINE","T_FILE","T_COMMENT","T_DOC_COMMENT","T_OPEN_TAG","T_OPEN_TAG_WITH_ECHO","T_CLOSE_TAG","T_WHITESPACE","T_START_HEREDOC","T_END_HEREDOC","T_DOLLAR_OPEN_CURLY_BRACES","T_CURLY_OPEN","T_PAAMAYIM_NEKUDOTAYIM","T_DOUBLE_COLON","T_ABSTRACT","T_CATCH","T_FINAL","T_INSTANCEOF","T_PRIVATE","T_PROTECTED","T_PUBLIC","T_THROW","T_TRY","T_CLONE","XSL_CLONE_AUTO","XSL_CLONE_NEVER","XSL_CLONE_ALWAYS","YPERR_BADARGS","YPERR_BADDB","YPERR_BUSY","YPERR_DOMAIN","YPERR_KEY","YPERR_MAP","YPERR_NODOM","YPERR_NOMORE","YPERR_PMAP","YPERR_RESRC","YPERR_RPC","YPERR_YPBIND","YPERR_YPERR","YPERR_YPSERV","YPERR_VERS","FORCE_GZIP","FORCE_DEFLATE"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["abs","acos","acosh","addcslashes","addslashes","apache_get_modules","apache_get_version","apache_getenv","apache_lookup_uri","apache_note","apache_request_headers","apache_response_headers","apache_setenv","array","array_change_key_case","array_chunk","array_combine","array_count_values","array_diff","array_diff_assoc","array_diff_key","array_diff_uassoc","array_diff_ukey","array_diff","array_fill","array_filter","array_flip","array_intersect","array_intersect_assoc","array_intersect_key","array_intersect_uassoc","array_intersect_ukey","array_intersect","array_key_exists","array_keys","array_map","array_merge","array_merge_recursive","array_multisort","array_pad","array_pop","array_product","array_push","array_rand","array_reduce","array_reverse","array_search","array_shift","array_slice","array_splice","array_sum","array_udiff","array_udiff_assoc","array_udiff_uassoc","array_uintersect","array_uintersect_assoc","array_uintersect_uassoc","array_uintersect","array_unique","array_unshift","array_values","array_walk","array_walk_recursive","arsort","ascii2ebcdic","asin","asinh","asort","aspell_check","aspell_check_raw","aspell_new","aspell_suggest","assert","assert_options","atan","atan2","atanh","base64_decode","base64_encode","base_convert","basename","bcadd","bccomp","bcdiv","bcmod","bcmul","bcpow","bcpowmod","bcscale","bcsqrt","bcsub","bin2hex","bind_textdomain_codeset","bindec","bindtextdomain","bzclose","bzcompress","bzdecompress","bzerrno","bzerror","bzerrstr","bzflush","bzopen","bzread","bzwrite","cal_days_in_month","cal_from_jd","cal_info","cal_to_jd","call_user_func","call_user_func_array","call_user_method","call_user_method_array","ccvs_add","ccvs_auth","ccvs_command","ccvs_count","ccvs_delete","ccvs_done","ccvs_init","ccvs_lookup","ccvs_new","ccvs_report","ccvs_return","ccvs_reverse","ccvs_sale","ccvs_status","ccvs_textvalue","ccvs_void","ceil","chdir","checkdate","checkdnsrr","chgrp","chmod","chop","chown","chr","chroot","chunk_split","class_exists","class_implements","class_parents","clearstatcache","closedir","closelog","com","com_addref","com_get","com_invoke","com_isenum","com_load","com_load_typelib","com_propget","com_propput","com_propset","com_release","com_set","compact","connection_aborted","connection_status","connection_timeout","constant","convert_cyr_string","convert_uudecode","convert_uuencode","copy","cos","cosh","count","count_chars","cpdf_add_annotation","cpdf_add_outline","cpdf_arc","cpdf_begin_text","cpdf_circle","cpdf_clip","cpdf_close","cpdf_closepath","cpdf_closepath_fill_stroke","cpdf_closepath_stroke","cpdf_continue_text","cpdf_curveto","cpdf_end_text","cpdf_fill","cpdf_fill_stroke","cpdf_finalize","cpdf_finalize_page","cpdf_global_set_document_limits","cpdf_import_jpeg","cpdf_lineto","cpdf_moveto","cpdf_newpath","cpdf_open","cpdf_output_buffer","cpdf_page_init","cpdf_place_inline_image","cpdf_rect","cpdf_restore","cpdf_rlineto","cpdf_rmoveto","cpdf_rotate","cpdf_rotate_text","cpdf_save","cpdf_save_to_file","cpdf_scale","cpdf_set_action_url","cpdf_set_char_spacing","cpdf_set_creator","cpdf_set_current_page","cpdf_set_font","cpdf_set_font_directories","cpdf_set_font_map_file","cpdf_set_horiz_scaling","cpdf_set_keywords","cpdf_set_leading","cpdf_set_page_animation","cpdf_set_subject","cpdf_set_text_matrix","cpdf_set_text_pos","cpdf_set_text_rendering","cpdf_set_text_rise","cpdf_set_title","cpdf_set_viewer_preferences","cpdf_set_word_spacing","cpdf_setdash","cpdf_setflat","cpdf_setgray","cpdf_setgray_fill","cpdf_setgray_stroke","cpdf_setlinecap","cpdf_setlinejoin","cpdf_setlinewidth","cpdf_setmiterlimit","cpdf_setrgbcolor","cpdf_setrgbcolor_fill","cpdf_setrgbcolor_stroke","cpdf_show","cpdf_show_xy","cpdf_stringwidth","cpdf_stroke","cpdf_text","cpdf_translate","crack_check","crack_closedict","crack_getlastmessage","crack_opendict","crc32","create_function","crypt","ctype_alnum","ctype_alpha","ctype_cntrl","ctype_digit","ctype_graph","ctype_lower","ctype_print","ctype_punct","ctype_space","ctype_upper","ctype_xdigit","curl_close","curl_copy_handle","curl_errno","curl_error","curl_exec","curl_getinfo","curl_init","curl_multi_add_handle","curl_multi_close","curl_multi_exec","curl_multi_getcontent","curl_multi_info_read","curl_multi_init","curl_multi_remove_handle","curl_multi_select","curl_setopt","curl_version","current","cybercash_base64_decode","cybercash_base64_encode","cybercash_decr","cybercash_encr","cybermut_creerformulairecm","cybermut_creerreponsecm","cybermut_testmac","cyrus_authenticate","cyrus_bind","cyrus_close","cyrus_connect","cyrus_query","cyrus_unbind","date","date_sunrise","date_sunset","dba_close","dba_delete","dba_exists","dba_fetch","dba_firstkey","dba_handlers","dba_insert","dba_key_split","dba_list","dba_nextkey","dba_open","dba_optimize","dba_popen","dba_replace","dba_sync","dbase_add_record","dbase_close","dbase_create","dbase_delete_record","dbase_get_header_info","dbase_get_record","dbase_get_record_with_names","dbase_numfields","dbase_numrecords","dbase_open","dbase_pack","dbase_replace_record","dblist","dbmclose","dbmdelete","dbmexists","dbmfetch","dbmfirstkey","dbminsert","dbmnextkey","dbmopen","dbmreplace","dbplus_add","dbplus_aql","dbplus_chdir","dbplus_close","dbplus_curr","dbplus_errcode","dbplus_errno","dbplus_find","dbplus_first","dbplus_flush","dbplus_freealllocks","dbplus_freelock","dbplus_freerlocks","dbplus_getlock","dbplus_getunique","dbplus_info","dbplus_last","dbplus_lockrel","dbplus_next","dbplus_open","dbplus_prev","dbplus_rchperm","dbplus_rcreate","dbplus_rcrtexact","dbplus_rcrtlike","dbplus_resolve","dbplus_restorepos","dbplus_rkeys","dbplus_ropen","dbplus_rquery","dbplus_rrename","dbplus_rsecindex","dbplus_runlink","dbplus_rzap","dbplus_savepos","dbplus_setindex","dbplus_setindexbynumber","dbplus_sql","dbplus_tcl","dbplus_tremove","dbplus_undo","dbplus_undoprepare","dbplus_unlockrel","dbplus_unselect","dbplus_update","dbplus_xlockrel","dbplus_xunlockrel","dbx_close","dbx_compare","dbx_connect","dbx_error","dbx_escape_string","dbx_fetch_row","dbx_query","dbx_sort","dcgettext","dcngettext","debug_backtrace","debug_print_backtrace","debug_zval_dump","dcgettext","dcngettext","debugger_off","debugger_on","decbin","dechex","decoct","define","define_syslog_variables","defined","deg2rad","delete","dgettext","die","dio_close","dio_fcntl","dio_open","dio_read","dio_seek","dio_stat","dio_tcsetattr","dio_truncate","dio_write","dir","dirname","disk_free_space","disk_total_space","diskfreespace","dl","dngettext","dns_check_record","dns_get_mx","dns_get_record","dom_import_simplexml","dngettext","domxml_add_root","domxml_attributes","domxml_children","domxml_dumpmem","domxml_get_attribute","domxml_new_child","domxml_new_xmldoc","domxml_node","domxml_node_set_content","domxml_node_unlink_node","domxml_root","domxml_set_attribute","domxml_version","dotnet_load","doubleval","each","easter_date","easter_days","ebcdic2ascii","echo","empty","end","ereg","ereg_replace","eregi","eregi_replace","error_log","error_reporting","escapeshellarg","escapeshellcmd","eval","exec","exif_imagetype","exif_read_data","exif_tagname","exif_thumbnail","exit","exp","explode","expm1","extension_loaded","extract","ezmlm_hash","fam_cancel_monitor","fam_close","fam_monitor_collection","fam_monitor_directory","fam_monitor_file","fam_next_event","fam_open","fam_pending","fam_resume_monitor","fam_suspend_monitor","fbsql_affected_rows","fbsql_autocommit","fbsql_change_user","fbsql_close","fbsql_commit","fbsql_connect","fbsql_create_blob","fbsql_create_clob","fbsql_create_db","fbsql_data_seek","fbsql_database","fbsql_database_password","fbsql_db_query","fbsql_db_status","fbsql_drop_db","fbsql_errno","fbsql_error","fbsql_fetch_array","fbsql_fetch_assoc","fbsql_fetch_field","fbsql_fetch_lengths","fbsql_fetch_object","fbsql_fetch_row","fbsql_field_flags","fbsql_field_len","fbsql_field_name","fbsql_field_seek","fbsql_field_table","fbsql_field_type","fbsql_free_result","fbsql_get_autostart_info","fbsql_hostname","fbsql_insert_id","fbsql_list_dbs","fbsql_list_fields","fbsql_list_tables","fbsql_next_result","fbsql_num_fields","fbsql_num_rows","fbsql_password","fbsql_pconnect","fbsql_query","fbsql_read_blob","fbsql_read_clob","fbsql_result","fbsql_rollback","fbsql_select_db","fbsql_set_lob_mode","fbsql_set_transaction","fbsql_start_db","fbsql_stop_db","fbsql_tablename","fbsql_username","fbsql_warnings","fclose","fdf_add_template","fdf_close","fdf_create","fdf_get_file","fdf_get_status","fdf_get_value","fdf_next_field_name","fdf_open","fdf_save","fdf_set_ap","fdf_set_encoding","fdf_set_file","fdf_set_flags","fdf_set_javascript_action","fdf_set_opt","fdf_set_status","fdf_set_submit_form_action","fdf_set_value","feof","fflush","fgetc","fgetcsv","fgets","fgetss","fgetwrapperdata","file","file_exists","file_get_contents","file_put_contents","fileatime","filectime","filegroup","fileinode","filemtime","fileowner","fileperms","filepro","filepro_fieldcount","filepro_fieldname","filepro_fieldtype","filepro_fieldwidth","filepro_retrieve","filepro_rowcount","filesize","filetype","floatval","flock","floor","flush","fmod","fnmatch","fopen","fpassthru","fprintf","fputs","fread","frenchtojd","fribidi_log2vis","fscanf","fseek","fsockopen","fstat","ftell","ftok","ftp_alloc","ftp_cdup","ftp_chdir","ftp_chmod","ftp_close","ftp_connect","ftp_delete","ftp_exec","ftp_fget","ftp_fput","ftp_get","ftp_get_option","ftp_login","ftp_mdtm","ftp_mkdir","ftp_nb_continue","ftp_nb_fget","ftp_nb_fput","ftp_nb_get","ftp_nb_put","ftp_nlist","ftp_pasv","ftp_put","ftp_pwd","ftp_quit","ftp_raw","ftp_rawlist","ftp_rename","ftp_rmdir","ftp_set_option","ftp_site","ftp_size","ftp_ssl_connect","ftp_systype","ftruncate","func_get_arg","func_get_args","func_num_args","function_exists","fwrite","gd_info","get_browser","get_cfg_var","get_class","get_class_methods","get_class_vars","get_current_user","get_declared_classes","get_declared_interfaces","get_defined_constants","get_defined_functions","get_defined_vars","get_extension_funcs","get_headers","get_html_translation_table","get_include_path","get_included_files","get_loaded_extensions","get_magic_quotes_gpc","get_magic_quotes_runtime","get_meta_tags","get_object_vars","get_parent_class","get_required_files","get_resource_type","getallheaders","getcwd","getdate","getenv","gethostbyaddr","gethostbyname","gethostbynamel","getimagesize","getlastmod","getmxrr","getmygid","getmyinode","getmypid","getmyuid","getopt","getprotobyname","getprotobynumber","getrandmax","getrusage","getservbyname","getservbyport","gettext","gettimeofday","gettype","glob","global","gmdate","gmmktime","gmp_abs","gmp_add","gmp_and","gmp_clrbit","gmp_cmp","gmp_com","gmp_div","gmp_div_q","gmp_div_qr","gmp_div_r","gmp_divexact","gmp_fact","gmp_gcd","gmp_gcdext","gmp_hamdist","gmp_init","gmp_intval","gmp_invert","gmp_jacobi","gmp_legendre","gmp_mod","gmp_mul","gmp_neg","gmp_or","gmp_perfect_square","gmp_popcount","gmp_pow","gmp_powm","gmp_prob_prime","gmp_random","gmp_scan0","gmp_scan1","gmp_setbit","gmp_sign","gmp_sqrt","gmp_sqrtrem","gmp_strval","gmp_sub","gmp_xor","gmstrftime","gregoriantojd","gzclose","gzcompress","gzdeflate","gzencode","gzeof","gzfile","gzgetc","gzgets","gzgetss","gzinflate","gzopen","gzpassthru","gzputs","gzread","gzrewind","gzseek","gztell","gzuncompress","gzwrite","header","headers_list","headers_sent","hebrev","hebrevc","hexdec","highlight_file","highlight_string","html_entity_decode","htmlentities","htmlspecialchars","http_build_query","hw_array2objrec","hw_changeobject","hw_children","hw_childrenobj","hw_close","hw_connect","hw_connection_info","hw_cp","hw_deleteobject","hw_docbyanchor","hw_docbyanchorobj","hw_document_attributes","hw_document_bodytag","hw_document_content","hw_document_setcontent","hw_document_size","hw_dummy","hw_edittext","hw_error","hw_errormsg","hw_free_document","hw_getanchors","hw_getanchorsobj","hw_getandlock","hw_getchildcoll","hw_getchildcollobj","hw_getchilddoccoll","hw_getchilddoccollobj","hw_getobject","hw_getobjectbyquery","hw_getobjectbyquerycoll","hw_getobjectbyquerycollobj","hw_getobjectbyqueryobj","hw_getparents","hw_getparentsobj","hw_getrellink","hw_getremote","hw_getremotechildren","hw_getsrcbydestobj","hw_gettext","hw_getusername","hw_identify","hw_incollections","hw_info","hw_inscoll","hw_insdoc","hw_insertanchors","hw_insertdocument","hw_insertobject","hw_mapid","hw_modifyobject","hw_mv","hw_new_document","hw_objrec2array","hw_output_document","hw_pconnect","hw_pipedocument","hw_root","hw_setlinkroot","hw_stat","hw_unlock","hw_who","hypot","idate","ibase_blob_add","ibase_blob_cancel","ibase_blob_close","ibase_blob_create","ibase_blob_echo","ibase_blob_get","ibase_blob_import","ibase_blob_info","ibase_blob_open","ibase_close","ibase_commit","ibase_connect","ibase_errmsg","ibase_execute","ibase_fetch_object","ibase_fetch_row","ibase_field_info","ibase_free_query","ibase_free_result","ibase_num_fields","ibase_pconnect","ibase_prepare","ibase_query","ibase_rollback","ibase_timefmt","ibase_trans","icap_close","icap_create_calendar","icap_delete_calendar","icap_delete_event","icap_fetch_event","icap_list_alarms","icap_list_events","icap_open","icap_rename_calendar","icap_reopen","icap_snooze","icap_store_event","iconv","iconv_get_encoding","iconv_mime_decode","iconv_mime_decode_headers","iconv_mime_encode","iconv_set_encoding","ifx_affected_rows","ifx_blobinfile_mode","ifx_byteasvarchar","ifx_close","ifx_connect","ifx_copy_blob","ifx_create_blob","ifx_create_char","ifx_do","ifx_error","ifx_errormsg","ifx_fetch_row","ifx_fieldproperties","ifx_fieldtypes","ifx_free_blob","ifx_free_char","ifx_free_result","ifx_get_blob","ifx_get_char","ifx_getsqlca","ifx_htmltbl_result","ifx_nullformat","ifx_num_fields","ifx_num_rows","ifx_pconnect","ifx_prepare","ifx_query","ifx_textasvarchar","ifx_update_blob","ifx_update_char","ifxus_close_slob","ifxus_create_slob","ifxus_free_slob","ifxus_open_slob","ifxus_read_slob","ifxus_seek_slob","ifxus_tell_slob","ifxus_write_slob","ignore_user_abort","image2wbmp","image_type_to_mime_type","imagealphablending","imageantialias","imagearc","imagechar","imagecharup","imagecolorallocate","imagecolorallocatealpha","imagecolorat","imagecolorclosest","imagecolorclosestalpha","imagecolorclosesthwb","imagecolordeallocate","imagecolorexact","imagecolorexactalpha","imagecolormatch","imagecolorresolve","imagecolorresolvealpha","imagecolorset","imagecolorsforindex","imagecolorstotal","imagecolortransparent","imagecopy","imagecopymerge","imagecopymergegray","imagecopyresampled","imagecopyresized","imagecreate","imagecreatefromgd","imagecreatefromgd2","imagecreatefromgd2part","imagecreatefromgif","imagecreatefromjpeg","imagecreatefrompng","imagecreatefromstring","imagecreatefromwbmp","imagecreatefromxbm","imagecreatefromxpm","imagecreatetruecolor","imagedashedline","imagedestroy","imageellipse","imagefill","imagefilledarc","imagefilledellipse","imagefilledpolygon","imagefilledrectangle","imagefilltoborder","imagefilter","imagefontheight","imagefontwidth","imageftbbox","imagefttext","imagegammacorrect","imagegd","imagegd2","imagegif","imageinterlace","imageistruecolor","imagejpeg","imagelayereffect","imageline","imageloadfont","imagepalettecopy","imagepng","imagepolygon","imagepsbbox","imagepsencodefont","imagepsextendfont","imagepsfreefont","imagepsloadfont","imagepsslantfont","imagepstext","imagerectangle","imagerotate","imagesavealpha","imagesetbrush","imagesetpixel","imagesetstyle","imagesetthickness","imagesettile","imagestring","imagestringup","imagesx","imagesy","imagetruecolortopalette","imagettfbbox","imagettftext","imagetypes","imagewbmp","imagexbm","imap_8bit","imap_alerts","imap_append","imap_base64","imap_binary","imap_body","imap_bodystruct","imap_check","imap_clearflag_full","imap_close","imap_create","imap_createmailbox","imap_delete","imap_deletemailbox","imap_errors","imap_expunge","imap_fetch_overview","imap_fetchbody","imap_fetchheader","imap_fetchstructure","imap_fetchtext","imap_get_quota","imap_get_quotaroot","imap_getacl","imap_getmailboxes","imap_getsubscribed","imap_header","imap_headerinfo","imap_headers","imap_last_error","imap_list","imap_listmailbox","imap_listsubscribed","imap_lsub","imap_mail","imap_mail_compose","imap_mail_copy","imap_mail_move","imap_mailboxmsginfo","imap_mime_header_decode","imap_msgno","imap_num_msg","imap_num_recent","imap_open","imap_ping","imap_popen","imap_qprint","imap_rename","imap_renamemailbox","imap_reopen","imap_rfc822_parse_adrlist","imap_rfc822_parse_headers","imap_rfc822_write_address","imap_scan","imap_scanmailbox","imap_search","imap_set_quota","imap_setacl","imap_setflag_full","imap_sort","imap_status","imap_subscribe","imap_thread","imap_timeout","imap_uid","imap_undelete","imap_unsubscribe","imap_utf7_decode","imap_utf7_encode","imap_utf8","implode","import_request_variables","in_array","include","include_once","ingres_autocommit","ingres_close","ingres_commit","ingres_connect","ingres_fetch_array","ingres_fetch_object","ingres_fetch_row","ingres_field_length","ingres_field_name","ingres_field_nullable","ingres_field_precision","ingres_field_scale","ingres_field_type","ingres_num_fields","ingres_num_rows","ingres_pconnect","ingres_query","ingres_rollback","ini_alter","ini_get","ini_get_all","ini_restore","ini_set","interface_exists","intval","ip2long","iptcembed","iptcparse","ircg_channel_mode","ircg_disconnect","ircg_fetch_error_msg","ircg_get_username","ircg_html_encode","ircg_ignore_add","ircg_ignore_del","ircg_is_conn_alive","ircg_join","ircg_kick","ircg_lookup_format_messages","ircg_msg","ircg_nick","ircg_nickname_escape","ircg_nickname_unescape","ircg_notice","ircg_part","ircg_pconnect","ircg_register_format_messages","ircg_set_current","ircg_set_file","ircg_set_on_die","ircg_topic","ircg_whois","is_a","is_array","is_bool","is_callable","is_dir","is_double","is_executable","is_file","is_finite","is_float","is_infinite","is_int","is_integer","is_link","is_long","is_nan","is_null","is_numeric","is_object","is_readable","is_real","is_resource","is_scalar","is_string","is_subclass_of","is_uploaded_file","is_writable","is_writeable","isset","java_last_exception_clear","java_last_exception_get","jddayofweek","jdmonthname","jdtofrench","jdtogregorian","jdtojewish","jdtojulian","jdtounix","jewishtojd","join","jpeg2wbmp","juliantojd","key","key_exists","krsort","ksort","lcg_value","ldap_8859_to_t61","ldap_add","ldap_bind","ldap_close","ldap_compare","ldap_connect","ldap_count_entries","ldap_delete","ldap_dn2ufn","ldap_err2str","ldap_errno","ldap_error","ldap_explode_dn","ldap_first_attribute","ldap_first_entry","ldap_first_reference","ldap_free_result","ldap_get_attributes","ldap_get_dn","ldap_get_entries","ldap_get_option","ldap_get_values","ldap_get_values_len","ldap_list","ldap_mod_add","ldap_mod_del","ldap_mod_replace","ldap_modify","ldap_next_attribute","ldap_next_entry","ldap_next_reference","ldap_parse_reference","ldap_parse_result","ldap_read","ldap_rename","ldap_search","ldap_set_option","ldap_set_rebind_proc","ldap_sort","ldap_start_tls","ldap_t61_to_8859","ldap_unbind","leak","levenshtein","libxml_set_streams_context","link","linkinfo","list","localeconv","localtime","log","log10","log1p","long2ip","lstat","ltrim","magic_quotes_runtime","mail","mailparse_determine_best_xfer_encoding","mailparse_msg_create","mailparse_msg_extract_part","mailparse_msg_extract_part_file","mailparse_msg_free","mailparse_msg_get_part","mailparse_msg_get_part_data","mailparse_msg_get_structure","mailparse_msg_parse","mailparse_msg_parse_file","mailparse_rfc822_parse_addresses","mailparse_stream_encode","mailparse_uudecode_all","max","mb_convert_case","mb_convert_encoding","mb_convert_kana","mb_convert_variables","mb_decode_mimeheader","mb_decode_numericentity","mb_detect_encoding","mb_detect_order","mb_encode_mimeheader","mb_encode_numericentity","mb_ereg","mb_ereg_match","mb_ereg_replace","mb_ereg_search","mb_ereg_search_getpos","mb_ereg_search_getregs","mb_ereg_search_init","mb_ereg_search_pos","mb_ereg_search_regs","mb_ereg_search_setpos","mb_eregi","mb_eregi_replace","mb_get_info","mb_http_input","mb_http_output","mb_internal_encoding","mb_language","mb_output_handler","mb_parse_str","mb_preferred_mime_name","mb_regex_encoding","mb_regex_set_options","mb_send_mail","mb_split","mb_strcut","mb_strimwidth","mb_strlen","mb_strpos","mb_strrpos","mb_strtolower","mb_strtoupper","mb_strwidth","mb_substitute_character","mb_substr","mcal_append_event","mcal_close","mcal_create_calendar","mcal_date_compare","mcal_date_valid","mcal_day_of_week","mcal_day_of_year","mcal_days_in_month","mcal_delete_calendar","mcal_delete_event","mcal_event_add_attribute","mcal_event_init","mcal_event_set_alarm","mcal_event_set_category","mcal_event_set_class","mcal_event_set_description","mcal_event_set_end","mcal_event_set_recur_daily","mcal_event_set_recur_monthly_mday","mcal_event_set_recur_monthly_wday","mcal_event_set_recur_none","mcal_event_set_recur_weekly","mcal_event_set_recur_yearly","mcal_event_set_start","mcal_event_set_title","mcal_expunge","mcal_fetch_current_stream_event","mcal_fetch_event","mcal_is_leap_year","mcal_list_alarms","mcal_list_events","mcal_next_recurrence","mcal_open","mcal_popen","mcal_rename_calendar","mcal_reopen","mcal_snooze","mcal_store_event","mcal_time_valid","mcal_week_of_year","mcrypt_cbc","mcrypt_cfb","mcrypt_create_iv","mcrypt_decrypt","mcrypt_ecb","mcrypt_enc_get_algorithms_name","mcrypt_enc_get_block_size","mcrypt_enc_get_iv_size","mcrypt_enc_get_key_size","mcrypt_enc_get_modes_name","mcrypt_enc_get_supported_key_sizes","mcrypt_enc_is_block_algorithm","mcrypt_enc_is_block_algorithm_mode","mcrypt_enc_is_block_mode","mcrypt_enc_self_test","mcrypt_encrypt","mcrypt_generic","mcrypt_generic_deinit","mcrypt_generic_end","mcrypt_generic_init","mcrypt_get_block_size","mcrypt_get_cipher_name","mcrypt_get_iv_size","mcrypt_get_key_size","mcrypt_list_algorithms","mcrypt_list_modes","mcrypt_module_close","mcrypt_module_get_algo_block_size","mcrypt_module_get_algo_key_size","mcrypt_module_get_supported_key_sizes","mcrypt_module_is_block_algorithm","mcrypt_module_is_block_algorithm_mode","mcrypt_module_is_block_mode","mcrypt_module_open","mcrypt_module_self_test","mcrypt_ofb","md5","md5_file","mdecrypt_generic","memory_get_usage","metaphone","method_exists","mhash","mhash_count","mhash_get_block_size","mhash_get_hash_name","mhash_keygen_s2k","microtime","min","ming_setcubicthreshold","ming_setscale","ming_useswfversion","mkdir","mktime","money_format","move_uploaded_file","msg_get_queue","msg_receive","msg_remove_queue","msg_send","msg_set_queue","msg_stat_queue","msession_connect","msession_count","msession_create","msession_destroy","msession_disconnect","msession_find","msession_get","msession_get_array","msession_getdata","msession_inc","msession_list","msession_listvar","msession_lock","msession_plugin","msession_randstr","msession_set","msession_set_array","msession_setdata","msession_timeout","msession_uniq","msession_unlock","msql","msql_affected_rows","msql_close","msql_connect","msql_create_db","msql_createdb","msql_data_seek","msql_dbname","msql_drop_db","msql_dropdb","msql_error","msql_fetch_array","msql_fetch_field","msql_fetch_object","msql_fetch_row","msql_field_seek","msql_fieldflags","msql_fieldlen","msql_fieldname","msql_fieldtable","msql_fieldtype","msql_free_result","msql_freeresult","msql_list_dbs","msql_list_fields","msql_list_tables","msql_listdbs","msql_listfields","msql_listtables","msql_num_fields","msql_num_rows","msql_numfields","msql_numrows","msql_pconnect","msql_query","msql_regcase","msql_result","msql_select_db","msql_selectdb","msql_tablename","mssql_bind","mssql_close","mssql_connect","mssql_data_seek","mssql_execute","mssql_fetch_array","mssql_fetch_assoc","mssql_fetch_batch","mssql_fetch_field","mssql_fetch_object","mssql_fetch_row","mssql_field_length","mssql_field_name","mssql_field_seek","mssql_field_type","mssql_free_result","mssql_get_last_message","mssql_guid_string","mssql_init","mssql_min_error_severity","mssql_min_message_severity","mssql_next_result","mssql_num_fields","mssql_num_rows","mssql_pconnect","mssql_query","mssql_result","mssql_rows_affected","mssql_select_db","mt_getrandmax","mt_rand","mt_srand","muscat_close","muscat_get","muscat_give","muscat_setup","muscat_setup_net","mysql","mysql_affected_rows","mysql_client_encoding","mysql_change_user","mysql_character_set_name","mysql_close","mysql_connect","mysql_create_db","mysql_data_seek","mysql_db_name","mysql_db_query","mysql_dbname","mysql_drop_db","mysql_errno","mysql_error","mysql_escape_string","mysql_fetch_array","mysql_fetch_assoc","mysql_fetch_field","mysql_fetch_lengths","mysql_fetch_object","mysql_fetch_row","mysql_field_flags","mysql_field_len","mysql_field_name","mysql_field_seek","mysql_field_table","mysql_field_type","mysql_fieldflags","mysql_fieldlen","mysql_fieldname","mysql_fieldtable","mysql_fieldtype","mysql_free_result","mysql_freeresult","mysql_get_client_info","mysql_get_host_info","mysql_get_proto_info","mysql_get_server_info","mysql_info","mysql_insert_id","mysql_list_dbs","mysql_list_fields","mysql_list_processes","mysql_list_tables","mysql_listdbs","mysql_listfields","mysql_listtables","mysql_num_fields","mysql_num_rows","mysql_numfields","mysql_numrows","mysql_pconnect","mysql_ping","mysql_query","mysql_real_escape_string","mysql_result","mysql_select_db","mysql_selectdb","mysql_stat","mysql_table_name","mysql_tablename","mysql_thread_id","mysql_unbuffered_query","mysqli_affected_rows","mysqli_autocommit","mysqli_bind_param","mysqli_bind_result","mysqli_change_user","mysqli_character_set_name","mysqli_client_encoding","mysqli_close","mysqli_commit","mysqli_connect","mysqli_connect_errno","mysqli_connect_error","mysqli_data_seek","mysqli_debug","mysqli_disable_reads_from_master","mysqli_disable_rpl_parse","mysqli_dump_debug_info","mysqli_enable_reads_from_master","mysqli_enable_rpl_parse","mysqli_errno","mysqli_error","mysqli_escape_string","mysqli_execute","mysqli_fetch","mysqli_fetch_array","mysqli_fetch_assoc","mysqli_fetch_field","mysqli_fetch_field_direct","mysqli_fetch_fields","mysqli_fetch_lengths","mysqli_fetch_object","mysqli_fetch_row","mysqli_field_count","mysqli_field_seek","mysqli_field_tell","mysqli_free_result","mysqli_get_client_info","mysqli_get_client_version","mysqli_get_host_info","mysqli_get_metadata","mysqli_get_proto_info","mysqli_get_server_info","mysqli_get_server_version","mysqli_info","mysqli_init","mysqli_insert_id","mysqli_kill","mysqli_master_query","mysqli_more_results","mysqli_multi_query","mysqli_next_result","mysqli_num_fields","mysqli_num_rows","mysqli_options","mysqli_param_count","mysqli_ping","mysqli_prepare","mysqli_query","mysqli_real_connect","mysqli_real_escape_string","mysqli_real_query","mysqli_report","mysqli_rollback","mysqli_rpl_parse_enabled","mysqli_rpl_probe","mysqli_rpl_query_type","mysqli_select_db","mysqli_send_long_data","mysqli_send_query","mysqli_set_local_infile_default","mysqli_set_local_infile_handler","mysqli_set_opt","mysqli_slave_query","mysqli_sqlstate","mysqli_ssl_set","mysqli_stat","mysqli_stmt_affected_rows","mysqli_stmt_attr_get","mysqli_stmt_attr_set","mysqli_stmt_bind_param","mysqli_stmt_bind_result","mysqli_stmt_close","mysqli_stmt_data_seek","mysqli_stmt_errno","mysqli_stmt_error","mysqli_stmt_execute","mysqli_stmt_fetch","mysqli_stmt_field_count","mysqli_stmt_free_result","mysqli_stmt_init","mysqli_stmt_insert_id","mysqli_stmt_num_rows","mysqli_stmt_param_count","mysqli_stmt_prepare","mysqli_stmt_reset","mysqli_stmt_result_metadata","mysqli_stmt_send_long_data","mysqli_stmt_sqlstate","mysqli_stmt_store_result","mysqli_store_result","mysqli_thread_id","mysqli_thread_safe","mysqli_use_result","mysqli_warning_count","natcasesort","natsort","ncurses_addch","ncurses_addchnstr","ncurses_addchstr","ncurses_addnstr","ncurses_addstr","ncurses_assume_default_colors","ncurses_attroff","ncurses_attron","ncurses_attrset","ncurses_baudrate","ncurses_beep","ncurses_bkgd","ncurses_bkgdset","ncurses_border","ncurses_bottom_panel","ncurses_can_change_color","ncurses_cbreak","ncurses_clear","ncurses_clrtobot","ncurses_clrtoeol","ncurses_color_content","ncurses_color_set","ncurses_curs_set","ncurses_def_prog_mode","ncurses_def_shell_mode","ncurses_define_key","ncurses_del_panel","ncurses_delay_output","ncurses_delch","ncurses_deleteln","ncurses_delwin","ncurses_doupdate","ncurses_echo","ncurses_echochar","ncurses_end","ncurses_erase","ncurses_erasechar","ncurses_filter","ncurses_flash","ncurses_flushinp","ncurses_getch","ncurses_getmaxyx","ncurses_getmouse","ncurses_getyx","ncurses_halfdelay","ncurses_has_colors","ncurses_has_ic","ncurses_has_il","ncurses_has_key","ncurses_hide_panel","ncurses_hline","ncurses_inch","ncurses_init","ncurses_init_color","ncurses_init_pair","ncurses_insch","ncurses_insdelln","ncurses_insertln","ncurses_insstr","ncurses_instr","ncurses_isendwin","ncurses_keyok","ncurses_keypad","ncurses_killchar","ncurses_longname","ncurses_meta","ncurses_mouse_trafo","ncurses_mouseinterval","ncurses_mousemask","ncurses_move","ncurses_move_panel","ncurses_mvaddch","ncurses_mvaddchnstr","ncurses_mvaddchstr","ncurses_mvaddnstr","ncurses_mvaddstr","ncurses_mvcur","ncurses_mvdelch","ncurses_mvgetch","ncurses_mvhline","ncurses_mvinch","ncurses_mvvline","ncurses_mvwaddstr","ncurses_napms","ncurses_new_panel","ncurses_newpad","ncurses_newwin","ncurses_nl","ncurses_nocbreak","ncurses_noecho","ncurses_nonl","ncurses_noqiflush","ncurses_noraw","ncurses_pair_content","ncurses_panel_above","ncurses_panel_below","ncurses_panel_window","ncurses_pnoutrefresh","ncurses_prefresh","ncurses_putp","ncurses_qiflush","ncurses_raw","ncurses_refresh","ncurses_replace_panel","ncurses_reset_prog_mode","ncurses_reset_shell_mode","ncurses_resetty","ncurses_savetty","ncurses_scr_dump","ncurses_scr_init","ncurses_scr_restore","ncurses_scr_set","ncurses_scrl","ncurses_show_panel","ncurses_slk_attr","ncurses_slk_attroff","ncurses_slk_attron","ncurses_slk_attrset","ncurses_slk_clear","ncurses_slk_color","ncurses_slk_init","ncurses_slk_noutrefresh","ncurses_slk_refresh","ncurses_slk_restore","ncurses_slk_set","ncurses_slk_touch","ncurses_standend","ncurses_standout","ncurses_start_color","ncurses_termattrs","ncurses_termname","ncurses_timeout","ncurses_top_panel","ncurses_typeahead","ncurses_ungetch","ncurses_ungetmouse","ncurses_update_panels","ncurses_use_default_colors","ncurses_use_env","ncurses_use_extended_names","ncurses_vidattr","ncurses_vline","ncurses_waddch","ncurses_waddstr","ncurses_wattroff","ncurses_wattron","ncurses_wattrset","ncurses_wborder","ncurses_wclear","ncurses_wcolor_set","ncurses_werase","ncurses_wgetch","ncurses_whline","ncurses_wmouse_trafo","ncurses_wmove","ncurses_wnoutrefresh","ncurses_wrefresh","ncurses_wstandend","ncurses_wstandout","ncurses_wvline","next","ngettext","nl2br","nl_langinfo","notes_body","notes_copy_db","notes_create_db","notes_create_note","notes_drop_db","notes_find_note","notes_header_info","notes_list_msgs","notes_mark_read","notes_mark_unread","notes_nav_create","notes_search","notes_unread","notes_version","number_format","ob_clean","ob_end_clean","ob_end_flush","ob_flush","ob_get_clean","ob_get_contents","ob_get_flush","ob_get_length","ob_get_level","ob_get_status","ob_gzhandler","ob_iconv_handler","ob_implicit_flush","ob_list_handlers","ob_start","ocibindbyname","ocicancel","ocicollappend","ocicollassign","ocicollassignelem","ocicollgetelem","ocicollmax","ocicollsize","ocicolltrim","ocicolumnisnull","ocicolumnname","ocicolumnprecision","ocicolumnscale","ocicolumnsize","ocicolumntype","ocicolumntyperaw","ocicommit","ocidefinebyname","ocierror","ociexecute","ocifetch","ocifetchinto","ocifetchstatement","ocifreecollection","ocifreecursor","ocifreedesc","ocifreestatement","ociinternaldebug","ociloadlob","ocilogoff","ocilogon","ocinewcollection","ocinewcursor","ocinewdescriptor","ocinlogon","ocinumcols","ociparse","ociplogon","ociresult","ocirollback","ocirowcount","ocisavelob","ocisavelobfile","ociserverversion","ocisetprefetch","ocistatementtype","ociwritelobtofile","octdec","odbc_autocommit","odbc_binmode","odbc_close","odbc_close_all","odbc_columnprivileges","odbc_columns","odbc_commit","odbc_connect","odbc_cursor","odbc_data_source","odbc_do","odbc_error","odbc_errormsg","odbc_exec","odbc_execute","odbc_fetch_array","odbc_fetch_into","odbc_fetch_object","odbc_fetch_row","odbc_field_len","odbc_field_name","odbc_field_num","odbc_field_precision","odbc_field_scale","odbc_field_type","odbc_foreignkeys","odbc_free_result","odbc_gettypeinfo","odbc_longreadlen","odbc_next_result","odbc_num_fields","odbc_num_rows","odbc_pconnect","odbc_prepare","odbc_primarykeys","odbc_procedurecolumns","odbc_procedures","odbc_result","odbc_result_all","odbc_rollback","odbc_setoption","odbc_specialcolumns","odbc_statistics","odbc_tableprivileges","odbc_tables","opendir","openlog","openssl_csr_export","openssl_csr_export_to_file","openssl_csr_new","openssl_csr_sign","openssl_error_string","openssl_free_key","openssl_get_privatekey","openssl_get_publickey","openssl_open","openssl_pkcs7_decrypt","openssl_pkcs7_encrypt","openssl_pkcs7_sign","openssl_pkcs7_verify","openssl_pkey_export","openssl_pkey_export_to_file","openssl_pkey_free","openssl_pkey_get_private","openssl_pkey_get_public","openssl_pkey_new","openssl_private_decrypt","openssl_private_encrypt","openssl_public_decrypt","openssl_public_encrypt","openssl_seal","openssl_sign","openssl_verify","openssl_x509_check_private_key","openssl_x509_checkpurpose","openssl_x509_export","openssl_x509_export_to_file","openssl_x509_free","openssl_x509_parse","openssl_x509_read","ora_bind","ora_close","ora_columnname","ora_columnsize","ora_columntype","ora_commit","ora_commitoff","ora_commiton","ora_do","ora_error","ora_errorcode","ora_exec","ora_fetch","ora_fetch_into","ora_getcolumn","ora_logoff","ora_logon","ora_numcols","ora_numrows","ora_open","ora_parse","ora_plogon","ora_rollback","ord","output_add_rewrite_var","output_reset_rewrite_vars","overload","ovrimos_close","ovrimos_commit","ovrimos_connect","ovrimos_cursor","ovrimos_exec","ovrimos_execute","ovrimos_fetch_into","ovrimos_fetch_row","ovrimos_field_len","ovrimos_field_name","ovrimos_field_num","ovrimos_field_type","ovrimos_free_result","ovrimos_longreadlen","ovrimos_num_fields","ovrimos_num_rows","ovrimos_prepare","ovrimos_result","ovrimos_result_all","ovrimos_rollback","pack","parse_ini_file","parse_str","parse_url","passthru","pathinfo","pclose","pcntl_alarm","pcntl_exec","pcntl_fork","pcntl_getpriority","pcntl_setpriority","pcntl_signal","pcntl_wait","pcntl_waitpid","pcntl_wexitstatus","pcntl_wifexited","pcntl_wifsignaled","pcntl_wifstopped","pcntl_wstopsig","pcntl_wtermsig","pdf_add_annotation","pdf_add_bookmark","pdf_add_launchlink","pdf_add_locallink","pdf_add_note","pdf_add_outline","pdf_add_pdflink","pdf_add_thumbnail","pdf_add_weblink","pdf_arc","pdf_arcn","pdf_attach_file","pdf_begin_page","pdf_begin_pattern","pdf_begin_template","pdf_circle","pdf_clip","pdf_close","pdf_close_image","pdf_close_pdi","pdf_close_pdi_page","pdf_closepath","pdf_closepath_fill_stroke","pdf_closepath_stroke","pdf_concat","pdf_continue_text","pdf_curveto","pdf_delete","pdf_end_page","pdf_end_pattern","pdf_end_template","pdf_endpath","pdf_fill","pdf_fill_stroke","pdf_findfont","pdf_get_buffer","pdf_get_font","pdf_get_fontname","pdf_get_fontsize","pdf_get_image_height","pdf_get_image_width","pdf_get_majorversion","pdf_get_minorversion","pdf_get_parameter","pdf_get_pdi_parameter","pdf_get_pdi_value","pdf_get_value","pdf_initgraphics","pdf_lineto","pdf_makespotcolor","pdf_moveto","pdf_new","pdf_open","pdf_open_ccitt","pdf_open_file","pdf_open_gif","pdf_open_image","pdf_open_image_file","pdf_open_jpeg","pdf_open_memory_image","pdf_open_pdi","pdf_open_pdi_page","pdf_open_png","pdf_open_tiff","pdf_place_image","pdf_place_pdi_page","pdf_rect","pdf_restore","pdf_rotate","pdf_save","pdf_scale","pdf_set_border_color","pdf_set_border_dash","pdf_set_border_style","pdf_set_char_spacing","pdf_set_duration","pdf_set_font","pdf_set_horiz_scaling","pdf_set_info","pdf_set_info_author","pdf_set_info_creator","pdf_set_info_keywords","pdf_set_info_subject","pdf_set_info_title","pdf_set_leading","pdf_set_parameter","pdf_set_text_pos","pdf_set_text_rendering","pdf_set_text_rise","pdf_set_transition","pdf_set_value","pdf_set_word_spacing","pdf_setcolor","pdf_setdash","pdf_setflat","pdf_setfont","pdf_setgray","pdf_setgray_fill","pdf_setgray_stroke","pdf_setlinecap","pdf_setlinejoin","pdf_setlinewidth","pdf_setmatrix","pdf_setmiterlimit","pdf_setpolydash","pdf_setrgbcolor","pdf_setrgbcolor_fill","pdf_setrgbcolor_stroke","pdf_show","pdf_show_boxed","pdf_show_xy","pdf_skew","pdf_stringwidth","pdf_stroke","pdf_translate","pfpro_cleanup","pfpro_init","pfpro_process","pfpro_process_raw","pfpro_version","pfsockopen","pg_affected_rows","pg_cancel_query","pg_client_encoding","pg_clientencoding","pg_close","pg_cmdtuples","pg_connect","pg_connection_busy","pg_connection_reset","pg_connection_status","pg_convert","pg_copy_from","pg_copy_to","pg_dbname","pg_delete","pg_end_copy","pg_errormessage","pg_escape_bytea","pg_escape_string","pg_exec","pg_fetch_all","pg_fetch_array","pg_fetch_assoc","pg_fetch_object","pg_fetch_result","pg_fetch_row","pg_field_is_null","pg_field_name","pg_field_num","pg_field_prtlen","pg_field_size","pg_field_type","pg_fieldisnull","pg_fieldname","pg_fieldnum","pg_fieldprtlen","pg_fieldsize","pg_fieldtype","pg_free_result","pg_freeresult","pg_get_notify","pg_get_pid","pg_get_result","pg_getlastoid","pg_host","pg_insert","pg_last_error","pg_last_notice","pg_last_oid","pg_lo_close","pg_lo_create","pg_lo_export","pg_lo_import","pg_lo_open","pg_lo_read","pg_lo_read_all","pg_lo_seek","pg_lo_tell","pg_lo_unlink","pg_lo_write","pg_loclose","pg_locreate","pg_loexport","pg_loimport","pg_loopen","pg_loread","pg_loreadall","pg_lounlink","pg_lowrite","pg_meta_data","pg_num_fields","pg_num_rows","pg_numfields","pg_numrows","pg_options","pg_parameter_status","pg_pconnect","pg_ping","pg_port","pg_put_line","pg_query","pg_result","pg_result_error","pg_result_seek","pg_result_status","pg_select","pg_send_query","pg_set_client_encoding","pg_setclientencoding","pg_trace","pg_tty","pg_unescape_bytea","pg_untrace","pg_update","pg_version","php_check_syntax","php_egg_logo_guid","php_ini_scanned_files","php_logo_guid","php_real_logo_guid","php_sapi_name","php_strip_whitespace","php_uname","phpcredits","phpinfo","phpversion","pi","png2wbmp","popen","pos","posix_ctermid","posix_errno","posix_get_last_error","posix_getcwd","posix_getegid","posix_geteuid","posix_getgid","posix_getgrgid","posix_getgrnam","posix_getgroups","posix_getlogin","posix_getpgid","posix_getpgrp","posix_getpid","posix_getppid","posix_getpwnam","posix_getpwuid","posix_getrlimit","posix_getsid","posix_getuid","posix_isatty","posix_kill","posix_mkfifo","posix_setegid","posix_seteuid","posix_setgid","posix_setpgid","posix_setsid","posix_setuid","posix_strerror","posix_times","posix_ttyname","posix_uname","pow","preg_grep","preg_match","preg_match_all","preg_quote","preg_replace","preg_replace_callback","preg_split","prev","print","print_r","printer_abort","printer_close","printer_create_brush","printer_create_dc","printer_create_font","printer_create_pen","printer_delete_brush","printer_delete_dc","printer_delete_font","printer_delete_pen","printer_draw_bmp","printer_draw_chord","printer_draw_elipse","printer_draw_line","printer_draw_pie","printer_draw_rectangle","printer_draw_roundrect","printer_draw_text","printer_end_doc","printer_end_page","printer_get_option","printer_list","printer_logical_fontheight","printer_open","printer_select_brush","printer_select_font","printer_select_pen","printer_set_option","printer_start_doc","printer_start_page","printer_write","printf","proc_close","proc_get_status","proc_nice","proc_open","proc_terminate","pspell_add_to_personal","pspell_add_to_session","pspell_check","pspell_clear_session","pspell_config_create","pspell_config_ignore","pspell_config_mode","pspell_config_personal","pspell_config_repl","pspell_config_runtogether","pspell_config_save_repl","pspell_new","pspell_new_config","pspell_new_personal","pspell_save_wordlist","pspell_store_replacement","pspell_suggest","putenv","qdom_error","qdom_tree","quoted_printable_decode","quotemeta","rad2deg","rand","range","rawurldecode","rawurlencode","read_exif_data","readdir","readfile","readgzfile","readline","readline_add_history","readline_clear_history","readline_completion_function","readline_info","readline_list_history","readline_read_history","readline_write_history","readlink","realpath","recode","recode_file","recode_string","register_shutdown_function","register_tick_function","rename","require","require_once","reset","restore_error_handler","restore_exception_handler","restore_include_path","rewind","rewinddir","rmdir","round","rsort","rtrim","scandir","sem_acquire","sem_get","sem_release","sem_remove","serialize","sesam_affected_rows","sesam_commit","sesam_connect","sesam_diagnostic","sesam_disconnect","sesam_errormsg","sesam_execimm","sesam_fetch_array","sesam_fetch_result","sesam_fetch_row","sesam_field_array","sesam_field_name","sesam_free_result","sesam_num_fields","sesam_query","sesam_rollback","sesam_seek_row","sesam_settransaction","session_cache_expire","session_cache_limiter","session_commit","session_decode","session_destroy","session_encode","session_get_cookie_params","session_id","session_is_registered","session_module_name","session_name","session_regenerate_id","session_register","session_save_path","session_set_cookie_params","session_set_save_handler","session_start","session_unregister","session_unset","session_write_close","set_error_handler","set_exception_handler","set_file_buffer","set_include_path","set_magic_quotes_runtime","set_socket_blocking","set_time_limit","setcookie","setlocale","setrawcookie","settype","sha1","sha1_file","shell_exec","shm_attach","shm_detach","shm_get_var","shm_put_var","shm_remove","shm_remove_var","shmop_close","shmop_delete","shmop_open","shmop_read","shmop_size","shmop_write","show_source","shuffle","similar_text","simplexml_load_file","simplexml_load_string","sin","sinh","sizeof","sleep","snmp3_get","snmp3_getnext","snmp3_real_walk","snmp3_set","snmp3_walk","snmp_get_quick_print","snmp_get_valueretrieval","snmp_read_mib","snmp_set_enum_print","snmp_set_oid_numeric_print","snmp_set_quick_print","snmp_set_valueretrieval","snmpget","snmpgetnext","snmprealwalk","snmpset","snmpwalk","snmpwalkoid","socket_accept","socket_bind","socket_clear_error","socket_close","socket_connect","socket_create","socket_create_listen","socket_create_pair","socket_get_option","socket_get_status","socket_getopt","socket_getpeername","socket_getsockname","socket_iovec_add","socket_iovec_alloc","socket_iovec_delete","socket_iovec_fetch","socket_iovec_free","socket_iovec_set","socket_last_error","socket_listen","socket_read","socket_readv","socket_recv","socket_recvfrom","socket_recvmsg","socket_select","socket_send","socket_sendmsg","socket_sendto","socket_set_block","socket_set_blocking","socket_set_nonblock","socket_set_option","socket_set_timeout","socket_setopt","socket_shutdown","socket_strerror","socket_write","socket_writev","sort","soundex","spl_classes","split","spliti","sprintf","sql_regcase","sqlite_array_query","sqlite_busy_timeout","sqlite_changes","sqlite_close","sqlite_column","sqlite_create_aggregate","sqlite_create_function","sqlite_current","sqlite_error_string","sqlite_escape_string","sqlite_exec","sqlite_factory","sqlite_fetch_all","sqlite_fetch_array","sqlite_fetch_column_types","sqlite_fetch_object","sqlite_fetch_single","sqlite_fetch_string","sqlite_field_name","sqlite_has_more","sqlite_has_prev","sqlite_last_error","sqlite_last_insert_rowid","sqlite_libencoding","sqlite_libversion","sqlite_next","sqlite_num_fields","sqlite_num_rows","sqlite_open","sqlite_popen","sqlite_prev","sqlite_query","sqlite_rewind","sqlite_seek","sqlite_single_query","sqlite_udf_decode_binary","sqlite_udf_encode_binary","sqlite_unbuffered_query","sqlite_valid","sqrt","srand","sscanf","stat","str_ireplace","str_pad","str_repeat","str_replace","str_rot13","str_shuffle","str_split","str_word_count","strcasecmp","strchr","strcmp","strcoll","strcspn","stream_bucket_append","stream_bucket_make_writeable","stream_bucket_new","stream_bucket_prepend","stream_context_create","stream_context_get_options","stream_context_set_option","stream_context_set_params","stream_copy_to_stream","stream_filter_append","stream_filter_prepend","stream_filter_register","stream_get_contents","stream_get_filters","stream_get_line","stream_get_meta_data","stream_get_transports","stream_get_wrappers","stream_register_wrapper","stream_select","stream_set_blocking","stream_set_timeout","stream_set_write_buffer","stream_socket_accept","stream_socket_client","stream_socket_get_name","stream_socket_recvfrom","stream_socket_sendto","stream_socket_server","stream_wrapper_register","strftime","strip_tags","stripcslashes","stripos","stripslashes","stristr","strlen","strnatcasecmp","strnatcmp","strncasecmp","strncmp","strpbrk","strpos","strrchr","strrev","strripos","strrpos","strspn","strstr","strtok","strtolower","strtotime","strtoupper","strtr","strval","substr","substr_compare","substr_count","substr_replace","swf_actiongeturl","swf_actiongotoframe","swf_actiongotolabel","swf_actionnextframe","swf_actionplay","swf_actionprevframe","swf_actionsettarget","swf_actionstop","swf_actiontogglequality","swf_actionwaitforframe","swf_addbuttonrecord","swf_addcolor","swf_closefile","swf_definebitmap","swf_definefont","swf_defineline","swf_definepoly","swf_definerect","swf_definetext","swf_endbutton","swf_enddoaction","swf_endshape","swf_endsymbol","swf_fontsize","swf_fontslant","swf_fonttracking","swf_getbitmapinfo","swf_getfontinfo","swf_getframe","swf_labelframe","swf_lookat","swf_modifyobject","swf_mulcolor","swf_nextid","swf_oncondition","swf_openfile","swf_ortho","swf_ortho2","swf_perspective","swf_placeobject","swf_polarview","swf_popmatrix","swf_posround","swf_pushmatrix","swf_removeobject","swf_rotate","swf_scale","swf_setfont","swf_setframe","swf_shapearc","swf_shapecurveto","swf_shapecurveto3","swf_shapefillbitmapclip","swf_shapefillbitmaptile","swf_shapefilloff","swf_shapefillsolid","swf_shapelinesolid","swf_shapelineto","swf_shapemoveto","swf_showframe","swf_startbutton","swf_startdoaction","swf_startshape","swf_startsymbol","swf_textwidth","swf_translate","swf_viewport","swfaction","swfbitmap","swfbitmap.getheight","swfbitmap.getwidth","swfbutton","swfbutton.addaction","swfbutton.addshape","swfbutton.setaction","swfbutton.setdown","swfbutton.sethit","swfbutton.setover","swfbutton.setup","swfbutton_keypress","swfdisplayitem","swfdisplayitem.addcolor","swfdisplayitem.move","swfdisplayitem.moveto","swfdisplayitem.multcolor","swfdisplayitem.remove","swfdisplayitem.rotate","swfdisplayitem.rotateto","swfdisplayitem.scale","swfdisplayitem.scaleto","swfdisplayitem.setdepth","swfdisplayitem.setname","swfdisplayitem.setratio","swfdisplayitem.skewx","swfdisplayitem.skewxto","swfdisplayitem.skewy","swfdisplayitem.skewyto","swffill","swffill.moveto","swffill.rotateto","swffill.scaleto","swffill.skewxto","swffill.skewyto","swffont","swffont.getwidth","swfgradient","swfgradient.addentry","swfmorph","swfmorph.getshape1","swfmorph.getshape2","swfmovie","swfmovie.add","swfmovie.nextframe","swfmovie.output","swfmovie.remove","swfmovie.save","swfmovie.setbackground","swfmovie.setdimension","swfmovie.setframes","swfmovie.setrate","swfmovie.streammp3","swfshape","swfshape.addfill","swfshape.drawcurve","swfshape.drawcurveto","swfshape.drawline","swfshape.drawlineto","swfshape.movepen","swfshape.movepento","swfshape.setleftfill","swfshape.setline","swfshape.setrightfill","swfsprite","swfsprite.add","swfsprite.nextframe","swfsprite.remove","swfsprite.setframes","swftext","swftext.addstring","swftext.getwidth","swftext.moveto","swftext.setcolor","swftext.setfont","swftext.setheight","swftext.setspacing","swftextfield","swftextfield.addstring","swftextfield.align","swftextfield.setbounds","swftextfield.setcolor","swftextfield.setfont","swftextfield.setheight","swftextfield.setindentation","swftextfield.setleftmargin","swftextfield.setlinespacing","swftextfield.setmargins","swftextfield.setname","swftextfield.setrightmargin","sybase_affected_rows","sybase_close","sybase_connect","sybase_data_seek","sybase_fetch_array","sybase_fetch_field","sybase_fetch_object","sybase_fetch_row","sybase_field_seek","sybase_free_result","sybase_get_last_message","sybase_min_client_severity","sybase_min_error_severity","sybase_min_message_severity","sybase_min_server_severity","sybase_num_fields","sybase_num_rows","sybase_pconnect","sybase_query","sybase_result","sybase_select_db","symlink","syslog","system","tan","tanh","tempnam","textdomain","time","time_nanosleep","tmpfile","token_get_all","token_name","touch","trigger_error","trim","uasort","ucfirst","ucwords","udm_add_search_limit","udm_alloc_agent","udm_api_version","udm_cat_list","udm_cat_path","udm_check_charset","udm_check_stored","udm_clear_search_limits","udm_close_stored","udm_crc32","udm_errno","udm_error","udm_find","udm_free_agent","udm_free_ispell_data","udm_free_res","udm_get_doc_count","udm_get_res_field","udm_get_res_param","udm_load_ispell_data","udm_open_stored","udm_set_agent_param","uksort","umask","uniqid","unixtojd","unlink","unpack","unregister_tick_function","unserialize","unset","urldecode","urlencode","use_soap_error_handler","user_error","usleep","usort","utf8_decode","utf8_encode","var_dump","var_export","variant","version_compare","vfprintf","virtual","vpopmail_add_alias_domain","vpopmail_add_alias_domain_ex","vpopmail_add_domain","vpopmail_add_domain_ex","vpopmail_add_user","vpopmail_alias_add","vpopmail_alias_del","vpopmail_alias_del_domain","vpopmail_alias_get","vpopmail_alias_get_all","vpopmail_auth_user","vpopmail_del_domain","vpopmail_del_domain_ex","vpopmail_del_user","vpopmail_error","vpopmail_passwd","vpopmail_set_user_quota","vprintf","vsprintf","w32api_deftype","w32api_init_dtype","w32api_invoke_function","w32api_register_function","w32api_set_call_method","wddx_add_vars","wddx_deserialize","wddx_packet_end","wddx_packet_start","wddx_serialize_value","wddx_serialize_vars","wordwrap","xml_error_string","xml_get_current_byte_index","xml_get_current_column_number","xml_get_current_line_number","xml_get_error_code","xml_parse","xml_parse_into_struct","xml_parser_create","xml_parser_create_ns","xml_parser_free","xml_parser_get_option","xml_parser_set_option","xml_set_character_data_handler","xml_set_default_handler","xml_set_element_handler","xml_set_end_namespace_decl_handler","xml_set_external_entity_ref_handler","xml_set_notation_decl_handler","xml_set_object","xml_set_processing_instruction_handler","xml_set_start_namespace_decl_handler","xml_set_unparsed_entity_decl_handler","xmldoc","xmldocfile","xmlrpc_decode","xmlrpc_decode_request","xmlrpc_encode","xmlrpc_encode_request","xmlrpc_get_type","xmlrpc_is_fault","xmlrpc_parse_method_descriptions","xmlrpc_server_add_introspection_data","xmlrpc_server_call_method","xmlrpc_server_create","xmlrpc_server_destroy","xmlrpc_server_register_introspection_callback","xmlrpc_server_register_method","xmlrpc_set_type","xmltree","xpath_eval","xpath_eval_expression","xpath_new_context","xptr_eval","xptr_new_context","xslt_create","xslt_errno","xslt_error","xslt_free","xslt_process","xslt_set_base","xslt_set_encoding","xslt_set_error_handler","xslt_set_log","xslt_set_sax_handler","xslt_set_sax_handlers","xslt_set_scheme_handler","xslt_set_scheme_handlers","yaz_addinfo","yaz_ccl_conf","yaz_ccl_parse","yaz_close","yaz_connect","yaz_database","yaz_element","yaz_errno","yaz_error","yaz_hits","yaz_itemorder","yaz_present","yaz_range","yaz_record","yaz_scan","yaz_scan_result","yaz_search","yaz_sort","yaz_syntax","yaz_wait","yp_all","yp_cat","yp_err_string","yp_errno","yp_first","yp_get_default_domain","yp_master","yp_match","yp_next","yp_order","zend_logo_guid","zend_version","zip_close","zip_entry_close","zip_entry_compressedsize","zip_entry_compressionmethod","zip_entry_filesize","zip_entry_name","zip_entry_open","zip_entry_read","zip_open","zip_read","zlib_get_coding_type"] >>= withAttribute "Function"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["__autoload","__call","__clone","__construct","__destruct","__get","__isset","__set","__set_state","__sleep","__toString","__unset","__wakeup"] >>= withAttribute "Special method"))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "PHP Text"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "doblequotestring")
+                        <|>
+                        ((pDetectChar False '`' >>= withAttribute "String") >>~ pushContext "backquotestring")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "String") >>~ pushContext "singlequotestring")
+                        <|>
+                        ((pRegExpr (compileRegex "<<<([A-Za-z_][A-Za-z0-9_]*)") >>= withAttribute "Backslash Code") >>~ pushContext "heredoc")
+                        <|>
+                        ((pRegExpr (compileRegex "\\$+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*") >>= withAttribute "Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "[0123456789]*\\.\\.\\.[0123456789]*") >>= withAttribute "String"))
+                        <|>
+                        ((pHlCOct >>= withAttribute "Octal"))
+                        <|>
+                        ((pHlCHex >>= withAttribute "Hex"))
+                        <|>
+                        ((pFloat >>= withAttribute "Float"))
+                        <|>
+                        ((pInt >>= withAttribute "Decimal"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Normal Text") >>~ pushContext "braceregion")
+                        <|>
+                        ((pAnyChar ";():,[]" >>= withAttribute "Other")))
+     return (attr, result)
+
+parseRules "onelinecomment" = 
+  do (attr, result) <- ((pString False "?>" >>= withAttribute "Keyword") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "twolinecomment" = 
+  do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "doublebackquotestringcommon" = 
+  do (attr, result) <- (((pDetect2Chars False '\\' '\\' >>= withAttribute "Backslash Code"))
+                        <|>
+                        ((pDetect2Chars False '\\' 'n' >>= withAttribute "Backslash Code"))
+                        <|>
+                        ((pDetect2Chars False '\\' 'r' >>= withAttribute "Backslash Code"))
+                        <|>
+                        ((pDetect2Chars False '\\' 't' >>= withAttribute "Backslash Code"))
+                        <|>
+                        ((pDetect2Chars False '\\' '$' >>= withAttribute "Backslash Code"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\[0-7]{1,3}") >>= withAttribute "Backslash Code"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\x[0-9A-Fa-f]{1,2}") >>= withAttribute "Backslash Code"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*(\\[[a-zA-Z0-9_]*\\])*") >>= withAttribute "Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$\\{[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*(\\[[a-zA-Z0-9_]*\\])*\\}") >>= withAttribute "Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\{\\$[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*(\\[([0-9]*|\"[^\"]*\")|'[^']*'|\\])*(->[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*(\\[[a-zA-Z0-9_]*\\])*(\\[([0-9]*|\"[a-zA-Z_]*\")|'[a-zA-Z_]*'|\\])*)*\\}") >>= withAttribute "Variable")))
+     return (attr, result)
+
+parseRules "backquotestring" = 
+  do (attr, result) <- (((parseRules "doublebackquotestringcommon"))
+                        <|>
+                        ((pDetect2Chars False '\\' '`' >>= withAttribute "Backslash Code"))
+                        <|>
+                        ((pDetectChar False '`' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "doblequotestring" = 
+  do (attr, result) <- (((parseRules "doublebackquotestringcommon"))
+                        <|>
+                        ((pDetect2Chars False '\\' '"' >>= withAttribute "Backslash Code"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "singlequotestring" = 
+  do (attr, result) <- (((pDetect2Chars False '\\' '\'' >>= withAttribute "Backslash Code"))
+                        <|>
+                        ((pDetect2Chars False '\\' '\\' >>= withAttribute "Backslash Code"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "heredoc" = 
+  do (attr, result) <- (((pColumn 0 >> pRegExprDynamic "%1;?$" >>= withAttribute "Backslash Code") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*(\\[[a-zA-Z0-9_]*\\])*") >>= withAttribute "Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$\\{[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*(\\[[a-zA-Z0-9_]*\\])*\\}") >>= withAttribute "Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\{\\$[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*(\\[([0-9]*|\"[a-zA-Z_]*\")|'[a-zA-Z_]*'|\\])*(->[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*(\\[[a-zA-Z0-9_]*\\])*(\\[([0-9]*|\"[a-zA-Z_]*\")|'[a-zA-Z_]*'|\\])*)*\\}") >>= withAttribute "Variable")))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Postscript.hs b/Text/Highlighting/Kate/Syntax/Postscript.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Postscript.hs
@@ -0,0 +1,104 @@
+{- This module was generated from data in the Kate syntax highlighting file postscript.xml, version 1.01,
+   by   -}
+
+module Text.Highlighting.Kate.Syntax.Postscript ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "PostScript"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.ps;*.ai;*.eps"
+
+-- | 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 = "PostScript" }
+  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 [("PostScript",["Normal"])], synStLanguage = "PostScript", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = False, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "Comment" -> (popContext >> return ())
+    "Header" -> (popContext >> return ())
+    "String" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Comment","Comment"),("Header","Others"),("Float","Float"),("Decimal","DecVal"),("String","String"),("Data Type","DataType")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal Text"),("Comment","Comment"),("Header","Header"),("String","String")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["abs","add","aload","anchorsearch","and","arc","arcn","arct","arcto","array","ashow","astore","awidthshow","begin","bind","bitshift","ceiling","charpath","clear","cleartomark","clip","clippath","closepath","concat","concatmatrix","copy","count","counttomark","currentcmykcolor","currentdash","currentdict","currentfile","currentfont","currentgray","currentgstate","currenthsbcolor","currentlinecap","currentlinejoin","currentlinewidth","currentmatrix","currentpoint","currentrgbcolor","currentshared","curveto","cvi","cvlit","cvn","cvr","cvrs","cvs","cvx","def","defineusername","dict","div","dtransform","dup","end","eoclip","eofill","eoviewclip","eq","exch","exec","exit","file","fill","findfont","flattenpath","floor","flush","flushfile","for","forall","ge","get","getinterval","grestore","gsave","gstate","gt","identmatrix","idiv","idtransform","if","ifelse","image","imagemask","index","ineofill","infill","initviewclip","inueofill","inufill","invertmatrix","itransform","known","le","length","lineto","load","loop","lt","makefont","matrix","maxlength","mod","moveto","mul","ne","neg","newpath","not","null","or","pathbbox","pathforall","pop","print","printobject","put","putinterval","rcurveto","read","readhexstring","readline","readstring","rectclip","rectfill","rectstroke","rectviewclip","repeat","restore","rlineto","rmoveto","roll","rotate","round","save","scale","scalefont","search","selectfont","setbbox","setcachedevice","setcachedevice2","setcharwidth","setcmykcolor","setdash","setfont","setgray","setgstate","sethsbcolor","setlinecap","setlinejoin","setlinewidth","setmatrix","setrgbcolor","setshared","shareddict","show","showpage","stop","stopped","store","string","stringwidth","stroke","strokepath","sub","systemdict","token","transform","translate","truncate","type","uappend","ucache","ueofill","ufill","undef","upath","userdict","ustroke","viewclip","viewclippath","where","widthshow","write","writehexstring","writeobject","writestring","wtranslation","xor","xshow","xyshow","yshow","FontDirectory","SharedFontDirectory","Courier","Courier-Bold","Courier-BoldOblique","Courier-Oblique","Helvetica","Helvetica-Bold","Helvetica-BoldOblique","Helvetica-Oblique","Symbol","Times-Bold","Times-BoldItalic","Times-Italic","Times-Roman","execuserobject","currentcolor","currentcolorspace","currentglobal","execform","filter","findresource","globaldict","makepattern","setcolor","setcolorspace","setglobal","setpagedevice","setpattern","ISOLatin1Encoding","StandardEncoding","atan","banddevice","bytesavailable","cachestatus","closefile","colorimage","condition","copypage","cos","countdictstack","countexecstack","cshow","currentblackgeneration","currentcacheparams","currentcolorscreen","currentcolortransfer","currentcontext","currentflat","currenthalftone","currenthalftonephase","currentmiterlimit","currentobjectformat","currentpacking","currentscreen","currentstrokeadjust","currenttransfer","currentundercolorremoval","defaultmatrix","definefont","deletefile","detach","deviceinfo","dictstack","echo","erasepage","errordict","execstack","executeonly","exp","false","filenameforall","fileposition","fork","framedevice","grestoreall","handleerror","initclip","initgraphics","initmatrix","instroke","inustroke","join","kshow","ln","lock","log","mark","monitor","noaccess","notify","nulldevice","packedarray","quit","rand","rcheck","readonly","realtime","renamefile","renderbands","resetfile","reversepath","rootfont","rrand","run","scheck","setblackgeneration","setcachelimit","setcacheparams","setcolorscreen","setcolortransfer","setfileposition","setflat","sethalftone","sethalftonephase","setmiterlimit","setobjectformat","setpacking","setscreen","setstrokeadjust","settransfer","setucacheparams","setundercolorremoval","sin","sqrt","srand","stack","status","statusdict","true","ucachestatus","undefinefont","usertime","ustrokepath","version","vmreclaim","vmstatus","wait","wcheck","xcheck","yield","defineuserobject","undefineuserobject","UserObjects","cleardictstack","setvmthreshold","currentcolorrendering","currentdevparams","currentoverprint","currentpagedevice","currentsystemparams","currentuserparams","defineresource","findencoding","gcheck","glyphshow","languagelevel","product","pstack","resourceforall","resourcestatus","revision","serialnumber","setcolorrendering","setdevparams","setoverprint","setsystemparams","setuserparams","startjob","undefineresource","GlobalFontDirectory","ASCII85Decode","ASCII85Encode","ASCIIHexDecode","ASCIIHexEncode","CCITTFaxDecode","CCITTFaxEncode","DCTDecode","DCTEncode","LZWDecode","LZWEncode","NullEncode","RunLengthDecode","RunLengthEncode","SubFileDecode","CIEBasedA","CIEBasedABC","DeviceCMYK","DeviceGray","DeviceRGB","Indexed","Pattern","Separation","CIEBasedDEF","CIEBasedDEFG","DeviceN"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pDetect2Chars False '%' '!' >>= withAttribute "Header") >>~ pushContext "Header")
+                        <|>
+                        ((pDetectChar False '%' >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pFloat >>= withAttribute "Float"))
+                        <|>
+                        ((pInt >>= withAttribute "Decimal"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((pRegExpr (compileRegex "\\/{1,2}[^\\s\\(\\)\\{\\}\\[\\]%/]*") >>= withAttribute "Data Type")))
+     return (attr, result)
+
+parseRules "Comment" = 
+  pzero
+
+parseRules "Header" = 
+  pzero
+
+parseRules "String" = 
+  do (attr, result) <- ((pDetectChar False ')' >>= withAttribute "String") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Prolog.hs b/Text/Highlighting/Kate/Syntax/Prolog.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Prolog.hs
@@ -0,0 +1,124 @@
+{- This module was generated from data in the Kate syntax highlighting file prolog.xml, version 1.04,
+   by   -}
+
+module Text.Highlighting.Kate.Syntax.Prolog ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Prolog"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.prolog"
+
+-- | 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 = "Prolog" }
+  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 [("Prolog",["normal"])], synStLanguage = "Prolog", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "normal" -> return ()
+    "comment" -> (popContext >> return ())
+    "string" -> return ()
+    "string2" -> return ()
+    "comment region" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Data Type","DataType"),("Comment","Comment"),("Integer","DecVal"),("Symbol","Normal"),("String","String"),("Identifier","Normal"),("Variable","Others"),("Arithmetic","Keyword")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("normal","Symbol"),("comment","Comment"),("string","String"),("string2","String"),("comment region","Comment")]
+
+parseRules "normal" = 
+  do (attr, result) <- (((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["abstract","align","as","and","class","clauses","constants","database","determ","domains","elsedef","endclass","enddef","erroneous","facts","failure","global","goal","if","ifdef","ifndef","implement","include","language","multi","nocopy","nondeterm","object","or","procedure","protected","predicates","reference","single","static","struct","this"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["ABSTRACT","ALIGN","AS","AND","CLASS","CLAUSES","CONSTANTS","DATABASE","DETERM","DOMAINS","ELSEDEF","ENDCLASS","ENDDEF","ERRONEOUS","FACTS","FAILURE","GLOBAL","GOAL","IF","IFDEF","IFNDEF","IMPLEMENT","INCLUDE","LANGUAGE","MULTI","NOCOPY","NONDETERM","OBJECT","OR","PROCEDURE","PROTECTED","PREDICATES","REFERENCE","SINGLE","STATIC","STRUCT","THIS"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["mod","div","abs","exp","ln","log","sqrt","round","trunc","val","cos","sin","tan","arctan","random","randominit"] >>= withAttribute "Arithmetic"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["bgidriver","bgifont","check_determ","code","config","diagnostics","error","errorlevel","heap","gstacksize","nobreak","nowarnings","printermenu","project"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["assert","asserta","assertz","bound","chain_inserta","chain_insertafter","chain_insertz","chain_terms","consult","db_btrees","db_chains","fail","findall","format","free","msgrecv","msgsend","nl","not","readterm","ref_term","retract","retractall","save","term_bin","term_replace","term_str","trap","write","writef"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["char","real","string","symbol","byte","sbyte","short","ushort","word","integer","unsigned","dword","long","ulong","binary","ref"] >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "[A-Z_][A-Za-z0-9_]*") >>= withAttribute "Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "[a-z][A-Za-z0-9_]*") >>= withAttribute "Identifier"))
+                        <|>
+                        ((pDetectChar False '%' >>= withAttribute "Comment") >>~ pushContext "comment")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "comment region")
+                        <|>
+                        ((pInt >>= withAttribute "Integer"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "string")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "String") >>~ pushContext "string2")
+                        <|>
+                        ((pAnyChar "~!^*()-+=[]|\\:;,./?&<>" >>= withAttribute "Symbol")))
+     return (attr, result)
+
+parseRules "comment" = 
+  pzero
+
+parseRules "string" = 
+  do (attr, result) <- ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "string2" = 
+  do (attr, result) <- ((pDetectChar False '\'' >>= withAttribute "String") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "comment region" = 
+  do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Python.hs b/Text/Highlighting/Kate/Syntax/Python.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Python.hs
@@ -0,0 +1,256 @@
+{- This module was generated from data in the Kate syntax highlighting file python.xml, version 1.98,
+   by  Michael Bueker -}
+
+module Text.Highlighting.Kate.Syntax.Python ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Python"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.py;*.pyw"
+
+-- | 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 = "Python" }
+  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 [("Python",["Normal"])], synStLanguage = "Python", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "parenthesised" -> return ()
+    "Tripple A-comment" -> return ()
+    "Tripple Q-comment" -> return ()
+    "Tripple A-string" -> return ()
+    "Raw Tripple A-string" -> return ()
+    "Tripple Q-string" -> return ()
+    "Raw Tripple Q-string" -> return ()
+    "Single A-comment" -> return ()
+    "Single Q-comment" -> return ()
+    "Single A-string" -> return ()
+    "Single Q-string" -> return ()
+    "Raw A-string" -> return ()
+    "Raw Q-string" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Definition Keyword","Keyword"),("Operator","Normal"),("String Substitution","Normal"),("Command Keyword","Keyword"),("Flow Control Keyword","Keyword"),("Builtin Function","DataType"),("Special Variable","Others"),("Extensions","Others"),("Preprocessor","Char"),("String Char","Char"),("Long","Others"),("Float","Float"),("Int","DecVal"),("Hex","Others"),("Octal","Others"),("Complex","Others"),("Comment","Comment"),("String","String"),("Raw String","String")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal Text"),("parenthesised","Normal Text"),("Tripple A-comment","Comment"),("Tripple Q-comment","Comment"),("Tripple A-string","String"),("Raw Tripple A-string","Raw String"),("Tripple Q-string","String"),("Raw Tripple Q-string","Raw String"),("Single A-comment","Comment"),("Single Q-comment","Comment"),("Single A-string","String"),("Single Q-string","String"),("Raw A-string","Raw String"),("Raw Q-string","Raw String")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["import","from","as"] >>= withAttribute "Preprocessor"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["class","def","del","global","lambda"] >>= withAttribute "Definition Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["and","assert","in","is","not","or"] >>= withAttribute "Operator"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["exec","print"] >>= withAttribute "Command Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["break","continue","elif","else","except","finally","for","if","pass","raise","return","try","while","yield"] >>= withAttribute "Flow Control Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["__import__","abs","all","any","apply","basestring","bool","buffer","callable","chr","classmethod","cmp","coerce","compile","complex","delattr","dict","dir","divmod","enumerate","eval","execfile","file","filter","float","frozenset","getattr","globals","hasattr","hash","hex","id","input","int","intern","isinstance","issubclass","iter","len","list","locals","long","map","max","min","object","oct","open","ord","pow","property","range","raw_input","reduce","reload","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","unichr","unicode","vars","xrange","zip"] >>= withAttribute "Builtin Function"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["None","self","True","False","NotImplemented","Ellipsis"] >>= withAttribute "Special Variable"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["SIGNAL","SLOT","connect"] >>= withAttribute "Extensions"))
+                        <|>
+                        ((pRegExpr (compileRegex "[a-zA-Z_][a-zA-Z_0-9]+") >>= withAttribute "Normal"))
+                        <|>
+                        ((pRegExpr (compileRegex " ((([0-9]*\\.[0-9]+|[0-9]+\\.)|([0-9]+|([0-9]*\\.[0-9]+|[0-9]+\\.))[eE](\\+|-)?[0-9]+)|[0-9]+)[jJ]") >>= withAttribute "Complex"))
+                        <|>
+                        ((pRegExpr (compileRegex "([0-9]+\\.[0-9]*|\\.[0-9]+)([eE][0-9]+)?") >>= withAttribute "Float"))
+                        <|>
+                        ((pRegExpr (compileRegex "([1-9][0-9]*([eE][0-9]+)?|0)") >>= withAttribute "Int"))
+                        <|>
+                        ((pRegExpr (compileRegex "[1-9][0-9]*([eE][0-9.]+)?[Ll]") >>= withAttribute "Long"))
+                        <|>
+                        ((pRegExpr (compileRegex "0[Xx][0-9a-fA-F]+") >>= withAttribute "Hex"))
+                        <|>
+                        ((pRegExpr (compileRegex "0[1-9][0-9]*") >>= withAttribute "Octal"))
+                        <|>
+                        ((pRegExpr (compileRegex "[rR]'''") >>= withAttribute "Raw String") >>~ pushContext "Raw Tripple A-string")
+                        <|>
+                        ((pRegExpr (compileRegex "[rR]\"\"\"") >>= withAttribute "Raw String") >>~ pushContext "Raw Tripple Q-string")
+                        <|>
+                        ((pRegExpr (compileRegex "[rR]'") >>= withAttribute "Raw String") >>~ pushContext "Raw A-string")
+                        <|>
+                        ((pRegExpr (compileRegex "[rR]\"") >>= withAttribute "Raw String") >>~ pushContext "Raw Q-string")
+                        <|>
+                        ((pRegExpr (compileRegex "#.*$") >>= withAttribute "Comment"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "\\s*'''") >>= withAttribute "Comment") >>~ pushContext "Tripple A-comment")
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "\\s*\"\"\"") >>= withAttribute "Comment") >>~ pushContext "Tripple Q-comment")
+                        <|>
+                        ((pString False "'''" >>= withAttribute "String") >>~ pushContext "Tripple A-string")
+                        <|>
+                        ((pString False "\"\"\"" >>= withAttribute "String") >>~ pushContext "Tripple Q-string")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "String") >>~ pushContext "Single A-string")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "Single Q-string")
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Operator") >>~ pushContext "parenthesised")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Operator") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[+*/%\\|=;\\!<>!^&~-]") >>= withAttribute "Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "%[a-zA-Z]") >>= withAttribute "String Substitution")))
+     return (attr, result)
+
+parseRules "parenthesised" = 
+  do (attr, result) <- ((parseRules "Normal"))
+     return (attr, result)
+
+parseRules "Tripple A-comment" = 
+  do (attr, result) <- ((pString False "'''" >>= withAttribute "Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Tripple Q-comment" = 
+  do (attr, result) <- (((pHlCChar >>= withAttribute "Comment"))
+                        <|>
+                        ((pRegExpr (compileRegex "\"\"\"") >>= withAttribute "Comment") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Tripple A-string" = 
+  do (attr, result) <- (((pHlCStringChar >>= withAttribute "String Char"))
+                        <|>
+                        ((pRegExpr (compileRegex "%\\([a-zA-Z0-9_]+\\)[a-zA-Z]") >>= withAttribute "String Substitution"))
+                        <|>
+                        ((pRegExpr (compileRegex "%[a-zA-Z]") >>= withAttribute "String Substitution"))
+                        <|>
+                        ((pRegExpr (compileRegex "'''") >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Raw Tripple A-string" = 
+  do (attr, result) <- (((pHlCStringChar >>= withAttribute "Raw String"))
+                        <|>
+                        ((pRegExpr (compileRegex "%\\([a-zA-Z0-9_]+\\)[a-zA-Z]") >>= withAttribute "String Substitution"))
+                        <|>
+                        ((pRegExpr (compileRegex "%[a-zA-Z]") >>= withAttribute "String Substitution"))
+                        <|>
+                        ((pRegExpr (compileRegex "'''") >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Tripple Q-string" = 
+  do (attr, result) <- (((pHlCStringChar >>= withAttribute "String Char"))
+                        <|>
+                        ((pRegExpr (compileRegex "%\\([a-zA-Z0-9_]+\\)[a-zA-Z]") >>= withAttribute "String Substitution"))
+                        <|>
+                        ((pRegExpr (compileRegex "%[a-zA-Z]") >>= withAttribute "String Substitution"))
+                        <|>
+                        ((pRegExpr (compileRegex "\"\"\"") >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Raw Tripple Q-string" = 
+  do (attr, result) <- (((pHlCStringChar >>= withAttribute "Raw String"))
+                        <|>
+                        ((pRegExpr (compileRegex "%\\([a-zA-Z0-9_]+\\)[a-zA-Z]") >>= withAttribute "String Substitution"))
+                        <|>
+                        ((pRegExpr (compileRegex "%[a-zA-Z]") >>= withAttribute "String Substitution"))
+                        <|>
+                        ((pRegExpr (compileRegex "\"\"\"") >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Single A-comment" = 
+  do (attr, result) <- (((pHlCStringChar >>= withAttribute "Comment"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Comment") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Single Q-comment" = 
+  do (attr, result) <- (((pHlCStringChar >>= withAttribute "Comment"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Comment") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Single A-string" = 
+  do (attr, result) <- (((pHlCStringChar >>= withAttribute "String Char"))
+                        <|>
+                        ((pRegExpr (compileRegex "%\\([a-zA-Z0-9_]+\\)[a-zA-Z]") >>= withAttribute "String Substitution"))
+                        <|>
+                        ((pRegExpr (compileRegex "%[a-zA-Z]") >>= withAttribute "String Substitution"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Single Q-string" = 
+  do (attr, result) <- (((pHlCStringChar >>= withAttribute "String Char"))
+                        <|>
+                        ((pRegExpr (compileRegex "%\\([a-zA-Z0-9_]+\\)[a-zA-Z]") >>= withAttribute "String Substitution"))
+                        <|>
+                        ((pRegExpr (compileRegex "%[a-zA-Z]") >>= withAttribute "String Substitution"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Raw A-string" = 
+  do (attr, result) <- (((pHlCStringChar >>= withAttribute "Raw String"))
+                        <|>
+                        ((pRegExpr (compileRegex "%\\([a-zA-Z0-9_]+\\)[a-zA-Z]") >>= withAttribute "String Substitution"))
+                        <|>
+                        ((pRegExpr (compileRegex "%[a-zA-Z]") >>= withAttribute "String Substitution"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Raw String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Raw Q-string" = 
+  do (attr, result) <- (((pHlCStringChar >>= withAttribute "Raw String"))
+                        <|>
+                        ((pRegExpr (compileRegex "%\\([a-zA-Z0-9_]+\\)[a-zA-Z]") >>= withAttribute "String Substitution"))
+                        <|>
+                        ((pRegExpr (compileRegex "%[a-zA-Z]") >>= withAttribute "String Substitution"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Raw String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Rhtml.hs b/Text/Highlighting/Kate/Syntax/Rhtml.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Rhtml.hs
@@ -0,0 +1,1221 @@
+{- This module was generated from data in the Kate syntax highlighting file rhtml.xml, version 1.00,
+   by  Richard Dale rdale@foton.es -}
+
+module Text.Highlighting.Kate.Syntax.Rhtml ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Alert
+import qualified Text.Highlighting.Kate.Syntax.Css
+import qualified Text.Highlighting.Kate.Syntax.Javascript
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Ruby/Rails/RHTML"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.rhtml;*.html.erb"
+
+-- | 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 = "Ruby/Rails/RHTML" }
+  context <- currentContext <|> (pushContext "Start" >> 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 [("Ruby/Rails/RHTML",["Start"])], synStLanguage = "Ruby/Rails/RHTML", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Start" -> return ()
+    "FindHTML" -> return ()
+    "FindEntityRefs" -> return ()
+    "FindPEntityRefs" -> return ()
+    "FindAttributes" -> return ()
+    "FindDTDRules" -> return ()
+    "Comment" -> return ()
+    "CDATA" -> return ()
+    "PI" -> return ()
+    "Doctype" -> return ()
+    "Doctype Internal Subset" -> return ()
+    "Doctype Markupdecl" -> return ()
+    "Doctype Markupdecl DQ" -> return ()
+    "Doctype Markupdecl SQ" -> return ()
+    "El Open" -> return ()
+    "El Close" -> return ()
+    "El Close 2" -> return ()
+    "El Close 3" -> return ()
+    "CSS" -> return ()
+    "CSS content" -> return ()
+    "JS" -> return ()
+    "JS content" -> return ()
+    "JS comment close" -> (popContext >> return ())
+    "Value" -> return ()
+    "Value NQ" -> (popContext >> popContext >> return ())
+    "Value DQ" -> return ()
+    "Value SQ" -> return ()
+    "rubysourceline" -> (popContext >> return ())
+    "rubysource" -> return ()
+    "Line Continue" -> (popContext >> return ())
+    "Quoted String" -> return ()
+    "Apostrophed String" -> return ()
+    "Command String" -> return ()
+    "Embedded documentation" -> return ()
+    "RegEx 1" -> return ()
+    "Subst" -> return ()
+    "Short Subst" -> (popContext >> return ())
+    "Member Access" -> (popContext >> return ())
+    "Comment Line" -> (popContext >> return ())
+    "General Comment" -> (popContext >> return ())
+    "RDoc Label" -> (popContext >> return ())
+    "find_heredoc" -> (popContext >> return ())
+    "find_indented_heredoc" -> (popContext >> return ())
+    "indented_heredoc" -> return ()
+    "apostrophed_indented_heredoc" -> return ()
+    "normal_heredoc" -> return ()
+    "apostrophed_normal_heredoc" -> return ()
+    "heredoc_rules" -> return ()
+    "find_gdl_input" -> (popContext >> return ())
+    "gdl_dq_string_1" -> return ()
+    "gdl_dq_string_1_nested" -> return ()
+    "gdl_dq_string_2" -> return ()
+    "gdl_dq_string_2_nested" -> return ()
+    "gdl_dq_string_3" -> return ()
+    "gdl_dq_string_3_nested" -> return ()
+    "gdl_dq_string_4" -> return ()
+    "gdl_dq_string_4_nested" -> return ()
+    "gdl_dq_string_5" -> return ()
+    "dq_string_rules" -> return ()
+    "gdl_token_array_1" -> return ()
+    "gdl_token_array_1_nested" -> return ()
+    "gdl_token_array_2" -> return ()
+    "gdl_token_array_2_nested" -> return ()
+    "gdl_token_array_3" -> return ()
+    "gdl_token_array_3_nested" -> return ()
+    "gdl_token_array_4" -> return ()
+    "gdl_token_array_4_nested" -> return ()
+    "gdl_token_array_5" -> return ()
+    "token_array_rules" -> return ()
+    "gdl_apostrophed_1" -> return ()
+    "gdl_apostrophed_1_nested" -> return ()
+    "gdl_apostrophed_2" -> return ()
+    "gdl_apostrophed_2_nested" -> return ()
+    "gdl_apostrophed_3" -> return ()
+    "gdl_apostrophed_3_nested" -> return ()
+    "gdl_apostrophed_4" -> return ()
+    "gdl_apostrophed_4_nested" -> return ()
+    "gdl_apostrophed_5" -> return ()
+    "apostrophed_rules" -> return ()
+    "gdl_shell_command_1" -> return ()
+    "gdl_shell_command_1_nested" -> return ()
+    "gdl_shell_command_2" -> return ()
+    "gdl_shell_command_2_nested" -> return ()
+    "gdl_shell_command_3" -> return ()
+    "gdl_shell_command_3_nested" -> return ()
+    "gdl_shell_command_4" -> return ()
+    "gdl_shell_command_4_nested" -> return ()
+    "gdl_shell_command_5" -> return ()
+    "shell_command_rules" -> return ()
+    "gdl_regexpr_1" -> return ()
+    "gdl_regexpr_1_nested" -> return ()
+    "gdl_regexpr_2" -> return ()
+    "gdl_regexpr_2_nested" -> return ()
+    "gdl_regexpr_3" -> return ()
+    "gdl_regexpr_3_nested" -> return ()
+    "gdl_regexpr_4" -> return ()
+    "gdl_regexpr_4_nested" -> return ()
+    "gdl_regexpr_5" -> return ()
+    "regexpr_rules" -> return ()
+    "DATA" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Ruby Normal Text","Normal"),("Keyword","Keyword"),("Attribute Definition","Others"),("Access Control","Keyword"),("Definition","Keyword"),("Pseudo variable","DecVal"),("Dec","DecVal"),("Float","Float"),("Char","Char"),("Octal","BaseN"),("Hex","BaseN"),("Bin","BaseN"),("Symbol","String"),("String","String"),("Raw String","String"),("Command","String"),("Message","Normal"),("Regular Expression","Others"),("Substitution","Others"),("Data","Normal"),("GDL input","Others"),("Default globals","DataType"),("Global Variable","DataType"),("Global Constant","DataType"),("Constant","DataType"),("Constant Value","DataType"),("Kernel methods","Normal"),("Member","Normal"),("Instance Variable","Others"),("Class Variable","Others"),("Ruby Comment","Comment"),("Blockcomment","Comment"),("Region Marker","Normal"),("RDoc Value","Others"),("Error","Error"),("Alert","Alert"),("Delimiter","Char"),("Expression","Others"),("Operator","Char"),("Normal Text","Normal"),("Comment","Comment"),("CDATA","BaseN"),("Processing Instruction","Keyword"),("Doctype","DataType"),("Element","Keyword"),("Attribute","Others"),("Value","String"),("EntityRef","DecVal"),("PEntityRef","DecVal"),("Error","Error")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Start","Normal Text"),("FindHTML","Normal Text"),("FindEntityRefs","Normal Text"),("FindPEntityRefs","Normal Text"),("FindAttributes","Normal Text"),("FindDTDRules","Normal Text"),("Comment","Comment"),("CDATA","Normal Text"),("PI","Normal Text"),("Doctype","Normal Text"),("Doctype Internal Subset","Normal Text"),("Doctype Markupdecl","Normal Text"),("Doctype Markupdecl DQ","Value"),("Doctype Markupdecl SQ","Value"),("El Open","Normal Text"),("El Close","Normal Text"),("El Close 2","Normal Text"),("El Close 3","Normal Text"),("CSS","Normal Text"),("CSS content","Normal Text"),("JS","Normal Text"),("JS content","Normal Text"),("JS comment close","Comment"),("Value","Normal Text"),("Value NQ","Normal Text"),("Value DQ","Value"),("Value SQ","Value"),("rubysourceline","RUBY RAILS ERB Text"),("rubysource","RUBY RAILS ERB Text"),("Line Continue","Ruby Normal Text"),("Quoted String","String"),("Apostrophed String","Raw String"),("Command String","Command"),("Embedded documentation","Ruby Comment"),("RegEx 1","Regular Expression"),("Subst","Ruby Normal Text"),("Short Subst","Substitution"),("Member Access","Member"),("Comment Line","Ruby Comment"),("General Comment","Ruby Comment"),("RDoc Label","RDoc Value"),("find_heredoc","Ruby Normal Text"),("find_indented_heredoc","Ruby Normal Text"),("indented_heredoc","Ruby Normal Text"),("apostrophed_indented_heredoc","Ruby Normal Text"),("normal_heredoc","Ruby Normal Text"),("apostrophed_normal_heredoc","Ruby Normal Text"),("heredoc_rules","Ruby Normal Text"),("find_gdl_input","Ruby Normal Text"),("gdl_dq_string_1","String"),("gdl_dq_string_1_nested","String"),("gdl_dq_string_2","String"),("gdl_dq_string_2_nested","String"),("gdl_dq_string_3","String"),("gdl_dq_string_3_nested","String"),("gdl_dq_string_4","String"),("gdl_dq_string_4_nested","String"),("gdl_dq_string_5","String"),("dq_string_rules","String"),("gdl_token_array_1","String"),("gdl_token_array_1_nested","String"),("gdl_token_array_2","String"),("gdl_token_array_2_nested","String"),("gdl_token_array_3","String"),("gdl_token_array_3_nested","String"),("gdl_token_array_4","String"),("gdl_token_array_4_nested","String"),("gdl_token_array_5","String"),("token_array_rules","String"),("gdl_apostrophed_1","Raw String"),("gdl_apostrophed_1_nested","Raw String"),("gdl_apostrophed_2","Raw String"),("gdl_apostrophed_2_nested","Raw String"),("gdl_apostrophed_3","Raw String"),("gdl_apostrophed_3_nested","Raw String"),("gdl_apostrophed_4","Raw String"),("gdl_apostrophed_4_nested","Raw String"),("gdl_apostrophed_5","Raw String"),("apostrophed_rules","Raw String"),("gdl_shell_command_1","Command"),("gdl_shell_command_1_nested","Command"),("gdl_shell_command_2","Command"),("gdl_shell_command_2_nested","Command"),("gdl_shell_command_3","Command"),("gdl_shell_command_3_nested","Command"),("gdl_shell_command_4","Command"),("gdl_shell_command_4_nested","Command"),("gdl_shell_command_5","Command"),("shell_command_rules","Command"),("gdl_regexpr_1","Regular Expression"),("gdl_regexpr_1_nested","Regular Expression"),("gdl_regexpr_2","Regular Expression"),("gdl_regexpr_2_nested","Regular Expression"),("gdl_regexpr_3","Regular Expression"),("gdl_regexpr_3_nested","Regular Expression"),("gdl_regexpr_4","Regular Expression"),("gdl_regexpr_4_nested","Regular Expression"),("gdl_regexpr_5","Regular Expression"),("regexpr_rules","Regular Expression"),("DATA","Data")]
+
+parseRules "Start" = 
+  do (attr, result) <- ((parseRules "FindHTML"))
+     return (attr, result)
+
+parseRules "FindHTML" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pRegExpr (compileRegex "<%=?") >>= withAttribute "Keyword") >>~ pushContext "rubysource")
+                        <|>
+                        ((pString False "%" >>= withAttribute "Keyword") >>~ pushContext "rubysourceline")
+                        <|>
+                        ((pString False "<!--" >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pString False "<![CDATA[" >>= withAttribute "CDATA") >>~ pushContext "CDATA")
+                        <|>
+                        ((pRegExpr (compileRegex "<!DOCTYPE\\s+") >>= withAttribute "Doctype") >>~ pushContext "Doctype")
+                        <|>
+                        ((pRegExpr (compileRegex "<\\?[\\w:-]*") >>= withAttribute "Processing Instruction") >>~ pushContext "PI")
+                        <|>
+                        ((pRegExpr (compileRegex "<style\\b") >>= withAttribute "Element") >>~ pushContext "CSS")
+                        <|>
+                        ((pRegExpr (compileRegex "<script\\b") >>= withAttribute "Element") >>~ pushContext "JS")
+                        <|>
+                        ((pRegExpr (compileRegex "<pre\\b") >>= withAttribute "Element") >>~ pushContext "El Open")
+                        <|>
+                        ((pRegExpr (compileRegex "<div\\b") >>= withAttribute "Element") >>~ pushContext "El Open")
+                        <|>
+                        ((pRegExpr (compileRegex "<table\\b") >>= withAttribute "Element") >>~ pushContext "El Open")
+                        <|>
+                        ((pRegExpr (compileRegex "<[A-Za-z_:][\\w.:_-]*") >>= withAttribute "Element") >>~ pushContext "El Open")
+                        <|>
+                        ((pRegExpr (compileRegex "</pre\\b") >>= withAttribute "Element") >>~ pushContext "El Close")
+                        <|>
+                        ((pRegExpr (compileRegex "</div\\b") >>= withAttribute "Element") >>~ pushContext "El Close")
+                        <|>
+                        ((pRegExpr (compileRegex "</table\\b") >>= withAttribute "Element") >>~ pushContext "El Close")
+                        <|>
+                        ((pRegExpr (compileRegex "</[A-Za-z_:][\\w.:_-]*") >>= withAttribute "Element") >>~ pushContext "El Close")
+                        <|>
+                        ((parseRules "FindDTDRules"))
+                        <|>
+                        ((parseRules "FindEntityRefs")))
+     return (attr, result)
+
+parseRules "FindEntityRefs" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "&(#[0-9]+|#[xX][0-9A-Fa-f]+|[A-Za-z_:][\\w.:_-]*);") >>= withAttribute "EntityRef"))
+                        <|>
+                        ((pAnyChar "&<" >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "FindPEntityRefs" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "&(#[0-9]+|#[xX][0-9A-Fa-f]+|[A-Za-z_:][\\w.:_-]*);") >>= withAttribute "EntityRef"))
+                        <|>
+                        ((pRegExpr (compileRegex "%[A-Za-z_:][\\w.:_-]*;") >>= withAttribute "PEntityRef"))
+                        <|>
+                        ((pAnyChar "&%" >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "FindAttributes" = 
+  do (attr, result) <- (((pColumn 0 >> pRegExpr (compileRegex "[A-Za-z_:][\\w.:_-]*") >>= withAttribute "Attribute"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s+[A-Za-z_:][\\w.:_-]*") >>= withAttribute "Attribute"))
+                        <|>
+                        ((pDetectChar False '=' >>= withAttribute "Attribute") >>~ pushContext "Value"))
+     return (attr, result)
+
+parseRules "FindDTDRules" = 
+  do (attr, result) <- ((pRegExpr (compileRegex "<!(ELEMENT|ENTITY|ATTLIST|NOTATION)\\b") >>= withAttribute "Doctype") >>~ pushContext "Doctype Markupdecl")
+     return (attr, result)
+
+parseRules "Comment" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Comment"))
+                        <|>
+                        ((pString False "-->" >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "-(-(?!->))+") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "CDATA" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pString False "]]>" >>= withAttribute "CDATA") >>~ (popContext >> return ()))
+                        <|>
+                        ((pString False "]]&gt;" >>= withAttribute "EntityRef")))
+     return (attr, result)
+
+parseRules "PI" = 
+  do (attr, result) <- ((pDetect2Chars False '?' '>' >>= withAttribute "Processing Instruction") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Doctype" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Doctype") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Doctype") >>~ pushContext "Doctype Internal Subset"))
+     return (attr, result)
+
+parseRules "Doctype Internal Subset" = 
+  do (attr, result) <- (((pDetectChar False ']' >>= withAttribute "Doctype") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindDTDRules"))
+                        <|>
+                        ((pString False "<!--" >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pRegExpr (compileRegex "<\\?[\\w:-]*") >>= withAttribute "Processing Instruction") >>~ pushContext "PI")
+                        <|>
+                        ((parseRules "FindPEntityRefs")))
+     return (attr, result)
+
+parseRules "Doctype Markupdecl" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Doctype") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Value") >>~ pushContext "Doctype Markupdecl DQ")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Value") >>~ pushContext "Doctype Markupdecl SQ"))
+     return (attr, result)
+
+parseRules "Doctype Markupdecl DQ" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "<%=?") >>= withAttribute "Keyword") >>~ pushContext "rubysource")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Value") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindPEntityRefs")))
+     return (attr, result)
+
+parseRules "Doctype Markupdecl SQ" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "<%=?") >>= withAttribute "Keyword") >>~ pushContext "rubysource")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Value") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindPEntityRefs")))
+     return (attr, result)
+
+parseRules "El Open" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "<%=?") >>= withAttribute "Keyword") >>~ pushContext "rubysource")
+                        <|>
+                        ((pDetect2Chars False '/' '>' >>= withAttribute "Element") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Element") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindAttributes"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "El Close" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "<%=?") >>= withAttribute "Keyword") >>~ pushContext "rubysource")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Element") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "El Close 2" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "<%=?") >>= withAttribute "Keyword") >>~ pushContext "rubysource")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Element") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "El Close 3" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "<%=?") >>= withAttribute "Keyword") >>~ pushContext "rubysource")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Element") >>~ (popContext >> popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "CSS" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "<%=?") >>= withAttribute "Keyword") >>~ pushContext "rubysource")
+                        <|>
+                        ((pDetect2Chars False '/' '>' >>= withAttribute "Element") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Element") >>~ pushContext "CSS content")
+                        <|>
+                        ((parseRules "FindAttributes"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "CSS content" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "<%=?") >>= withAttribute "Keyword") >>~ pushContext "rubysource")
+                        <|>
+                        ((pRegExpr (compileRegex "</style\\b") >>= withAttribute "Element") >>~ pushContext "El Close 2")
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Css.parseExpression)))
+     return (attr, result)
+
+parseRules "JS" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "<%=?") >>= withAttribute "Keyword") >>~ pushContext "rubysource")
+                        <|>
+                        ((pDetect2Chars False '/' '>' >>= withAttribute "Element") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Element") >>~ pushContext "JS content")
+                        <|>
+                        ((parseRules "FindAttributes"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "JS content" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "<%=?") >>= withAttribute "Keyword") >>~ pushContext "rubysource")
+                        <|>
+                        ((pRegExpr (compileRegex "</script\\b") >>= withAttribute "Element") >>~ pushContext "El Close 2")
+                        <|>
+                        ((pRegExpr (compileRegex "//(?=.*</script\\b)") >>= withAttribute "Comment") >>~ pushContext "JS comment close")
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Javascript.parseExpression)))
+     return (attr, result)
+
+parseRules "JS comment close" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "</script\\b") >>= withAttribute "Element") >>~ pushContext "El Close 3")
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd))))
+     return (attr, result)
+
+parseRules "Value" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "<%=?") >>= withAttribute "Keyword") >>~ pushContext "rubysource")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Value") >>~ pushContext "Value DQ")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Value") >>~ pushContext "Value SQ")
+                        <|>
+                        ((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        (pushContext "Value NQ" >> return ([], "")))
+     return (attr, result)
+
+parseRules "Value NQ" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "<%=?") >>= withAttribute "Keyword") >>~ pushContext "rubysource")
+                        <|>
+                        ((parseRules "FindEntityRefs"))
+                        <|>
+                        ((pRegExpr (compileRegex "/(?!>)") >>= withAttribute "Value"))
+                        <|>
+                        ((pRegExpr (compileRegex "[^/><\"'\\s]") >>= withAttribute "Value"))
+                        <|>
+                        ((popContext >> popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "Value DQ" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "<%=?") >>= withAttribute "Keyword") >>~ pushContext "rubysource")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Value") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "FindEntityRefs")))
+     return (attr, result)
+
+parseRules "Value SQ" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "<%=?") >>= withAttribute "Keyword") >>~ pushContext "rubysource")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Value") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "FindEntityRefs")))
+     return (attr, result)
+
+parseRules "rubysourceline" = 
+  do (attr, result) <- ((parseRules "rubysource"))
+     return (attr, result)
+
+parseRules "rubysource" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "Ruby Normal Text") >>~ pushContext "Line Continue")
+                        <|>
+                        ((pRegExpr (compileRegex "-?%>") >>= withAttribute "Keyword") >>~ (popContext >> return ()))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "__END__$") >>= withAttribute "Keyword") >>~ pushContext "DATA")
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "#!\\/.*") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "(\\=|\\(|\\[|\\{)\\s*(if|unless|while|until)\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "(while|until)\\b(?!.*\\bdo\\b)") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\;\\s*(while|until)\\b(?!.*\\bdo\\b)") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "(if|unless)\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\;\\s*(if|unless)\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bclass\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bmodule\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bbegin\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bfor\\b(?!.*\\bdo\\b)") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bcase\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bdo\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bdef\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bend\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "(\\b|^\\s*)(else|elsif|rescue|ensure)(\\s+|$)") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pString False "..." >>= withAttribute "Operator"))
+                        <|>
+                        ((pDetect2Chars False '.' '.' >>= withAttribute "Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\.[_a-z][_a-zA-Z0-9]*(\\?|\\!|\\b)") >>= withAttribute "Message"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s\\?(\\\\M\\-)?(\\\\C\\-)?\\\\?\\S") >>= withAttribute "Dec"))
+                        <|>
+                        ((pKeyword " \n\t.():+,-<=>%&*/;[]^{|}~\\" ["BEGIN","END","and","begin","break","case","defined?","do","else","elsif","end","ensure","for","if","in","include","next","not","or","redo","rescue","retry","return","then","unless","until","when","while","yield"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():+,-<=>%&*/;[]^{|}~\\" ["attr_reader","attr_writer","attr_accessor"] >>= withAttribute "Attribute Definition"))
+                        <|>
+                        ((pKeyword " \n\t.():+,-<=>%&*/;[]^{|}~\\" ["private_class_method","private","protected","public_class_method","public"] >>= withAttribute "Access Control"))
+                        <|>
+                        ((pKeyword " \n\t.():+,-<=>%&*/;[]^{|}~\\" ["alias","module","class","def","undef"] >>= withAttribute "Definition"))
+                        <|>
+                        ((pKeyword " \n\t.():+,-<=>%&*/;[]^{|}~\\" ["self","super","nil","false","true","caller","__FILE__","__LINE__"] >>= withAttribute "Pseudo variable"))
+                        <|>
+                        ((pKeyword " \n\t.():+,-<=>%&*/;[]^{|}~\\" ["$stdout","$defout","$stderr","$deferr","$stdin"] >>= withAttribute "Default globals"))
+                        <|>
+                        ((pKeyword " \n\t.():+,-<=>%&*/;[]^{|}~\\" ["abort","at_exit","autoload","autoload?","binding","block_given?","callcc","caller","catch","chomp","chomp!","chop","chop!","eval","exec","exit","exit!","fail","fork","format","getc","gets","global_variables","gsub","gsub!","iterator?","lambda","load","local_variables","loop","method_missing","open","p","print","printf","proc","putc","puts","raise","rand","readline","readlines","require","scan","select","set_trace_func","sleep","split","sprintf","srand","sub","sub!","syscall","system","test","throw","trace_var","trap","untrace_var","warn","auto_complete_field","auto_complete_result","auto_discovery_link_tag","auto_link","benchmark","button_to","cache","capture","check_box","check_box_tag","collection_select","concat","content_for","content_tag","country_options_for_select","country_select","current_page?","date_select","datetime_select","debug","define_javascript_functions","distance_of_time_in_words","distance_of_time_in_words_to_now","draggable_element","drop_receiving_element","end_form_tag","error_message_on","error_messages_for","escape_javascript","evaluate_remote_response","excerpt","file_field","file_field_tag","finish_upload_status","form","form_remote_tag","form_tag","form_tag_with_upload_progress","h","hidden_field","hidden_field_tag","highlight","human_size","image_path","image_submit_tag","image_tag","input","javascript_include_tag","javascript_path","javascript_tag","link_image_to","link_to","link_to_function","link_to_if","link_to_image","link_to_remote","link_to_unless","link_to_unless_current","mail_to","markdown","number_to_currency","number_to_human_size","number_to_percentage","number_to_phone","number_with_delimiter","number_with_precision","observe_field","observe_form","option_groups_from_collection_for_select","options_for_select","options_from_collection_for_select","pagination_links","password_field","password_field_tag","periodically_call_remote","pluralize","radio_button","radio_button_tag","register_template_handler","render","render_file","render_template","sanitize","select","select_date","select_datetime","select_day","select_hour","select_minute","select_month","select_second","select_tag","select_time","select_year","simple_format","sortable_element","start_form_tag","strip_links","stylesheet_link_tag","stylesheet_path","submit_tag","submit_to_remote","tag","text_area","text_area_tag","text_field","text_field_tag","text_field_with_auto_complete","textilize","textilize_without_paragraph","time_ago_in_words","time_zone_options_for_select","time_zone_select","truncate","update_element_function","upload_progress_status","upload_progress_text","upload_progress_update_bar_js","upload_status_progress_bar_tag","upload_status_tag","upload_status_text_tag","url_for","visual_effect","word_wrap"] >>= withAttribute "Kernel methods"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$[a-zA-Z_0-9]+") >>= withAttribute "Global Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$\\-[a-zA-z_]\\b") >>= withAttribute "Global Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$[\\d_*`\\!:?'/\\\\\\-\\&]") >>= withAttribute "Default globals"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[_A-Z]+[A-Z_0-9]+\\b") >>= withAttribute "Global Constant"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[A-Z]+_*([0-9]|[a-z])[_a-zA-Z0-9]*\\b") >>= withAttribute "Constant"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b\\-?0[xX][_0-9a-fA-F]+") >>= withAttribute "Hex"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b\\-?0[bB][_01]+") >>= withAttribute "Bin"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b\\-?0[1-7][_0-7]*") >>= withAttribute "Octal"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b\\-?[0-9][0-9_]*\\.[0-9][0-9_]*([eE]\\-?[1-9][0-9]*(\\.[0-9]*)?)?") >>= withAttribute "Float"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b\\-?[1-9][0-9_]*\\b") >>= withAttribute "Dec"))
+                        <|>
+                        ((pInt >>= withAttribute "Dec"))
+                        <|>
+                        ((pHlCChar >>= withAttribute "Char"))
+                        <|>
+                        ((pColumn 0 >> pString False "=begin" >>= withAttribute "Blockcomment") >>~ pushContext "Embedded documentation")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*<<-(?=\\w+|[\"'])") >>= withAttribute "Operator") >>~ pushContext "find_indented_heredoc")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*<<(?=\\w+|[\"'])") >>= withAttribute "Operator") >>~ pushContext "find_heredoc")
+                        <|>
+                        ((pDetectChar False '.' >>= withAttribute "Operator"))
+                        <|>
+                        ((pDetect2Chars False '&' '&' >>= withAttribute "Operator"))
+                        <|>
+                        ((pDetect2Chars False '|' '|' >>= withAttribute "Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s[\\?\\:\\%/]\\s") >>= withAttribute "Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "[|&<>\\^\\+*~\\-=]+") >>= withAttribute "Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s!") >>= withAttribute "Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "/=\\s") >>= withAttribute "Operator"))
+                        <|>
+                        ((pString False "%=" >>= withAttribute "Operator"))
+                        <|>
+                        ((pDetect2Chars False ':' ':' >>= withAttribute "Operator") >>~ pushContext "Member Access")
+                        <|>
+                        ((pRegExpr (compileRegex ":[a-zA-Z_][a-zA-Z0-9_]*") >>= withAttribute "Symbol"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "Quoted String")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Raw String") >>~ pushContext "Apostrophed String")
+                        <|>
+                        ((pDetectChar False '`' >>= withAttribute "Command") >>~ pushContext "Command String")
+                        <|>
+                        ((pString False "?#" >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "#\\s*BEGIN.*$") >>= withAttribute "Comment"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "#\\s*END.*$") >>= withAttribute "Comment"))
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#") >>= withAttribute "Comment") >>~ pushContext "Comment Line")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s#") >>= withAttribute "Comment") >>~ pushContext "General Comment")
+                        <|>
+                        ((pRegExpr (compileRegex "[\\[\\]]+") >>= withAttribute "Delimiter"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Delimiter"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Delimiter"))
+                        <|>
+                        ((pRegExpr (compileRegex "@[a-zA-Z_0-9]+") >>= withAttribute "Instance Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "@@[a-zA-Z_0-9]+") >>= withAttribute "Class Variable"))
+                        <|>
+                        ((pDetectChar False '/' >>= withAttribute "Regular Expression") >>~ pushContext "RegEx 1")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*[%](?=[Qqxw]?[^\\s>])") >>= withAttribute "GDL input") >>~ pushContext "find_gdl_input"))
+     return (attr, result)
+
+parseRules "Line Continue" = 
+  do (attr, result) <- (((pFirstNonSpace >> pRegExpr (compileRegex "(while|until)\\b(?!.*\\bdo\\b)") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "(if|unless)\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((parseRules "rubysource")))
+     return (attr, result)
+
+parseRules "Quoted String" = 
+  do (attr, result) <- (((pString False "\\\\" >>= withAttribute "String"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\\\\"") >>= withAttribute "String"))
+                        <|>
+                        ((pRegExpr (compileRegex "#@{1,2}") >>= withAttribute "Substitution") >>~ pushContext "Short Subst")
+                        <|>
+                        ((pDetect2Chars False '#' '{' >>= withAttribute "Substitution") >>~ pushContext "Subst")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Apostrophed String" = 
+  do (attr, result) <- (((pString False "\\\\" >>= withAttribute "String"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\\\'") >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Raw String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Command String" = 
+  do (attr, result) <- (((pString False "\\\\" >>= withAttribute "String"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\\\`") >>= withAttribute "String"))
+                        <|>
+                        ((pRegExpr (compileRegex "#@{1,2}") >>= withAttribute "Substitution") >>~ pushContext "Short Subst")
+                        <|>
+                        ((pDetect2Chars False '#' '{' >>= withAttribute "Substitution") >>~ pushContext "Subst")
+                        <|>
+                        ((pHlCChar >>= withAttribute "Char") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '`' >>= withAttribute "Command") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Embedded documentation" = 
+  do (attr, result) <- ((pColumn 0 >> pString False "=end" >>= withAttribute "Ruby Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "RegEx 1" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\\\/") >>= withAttribute "Regular Expression"))
+                        <|>
+                        ((pRegExpr (compileRegex "[^\\\\]$") >>= withAttribute "Regular Expression") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "#@{1,2}") >>= withAttribute "Substitution") >>~ pushContext "Short Subst")
+                        <|>
+                        ((pDetect2Chars False '#' '{' >>= withAttribute "Substitution") >>~ pushContext "Subst")
+                        <|>
+                        ((pRegExpr (compileRegex "/[uiomxn]*") >>= withAttribute "Regular Expression") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Subst" = 
+  do (attr, result) <- (((pDetectChar False '}' >>= withAttribute "Substitution") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "rubysource")))
+     return (attr, result)
+
+parseRules "Short Subst" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "#@{1,2}") >>= withAttribute "Substitution"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\w(?!\\w)") >>= withAttribute "Substitution") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Member Access" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\.?[_a-z]\\w*(\\?|\\!)?(?=[^\\w\\d\\.\\:])") >>= withAttribute "Message") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\.?[_a-z]\\w*(\\?|\\!)?") >>= withAttribute "Message"))
+                        <|>
+                        ((pRegExpr (compileRegex "[A-Z]+_*(\\d|[a-z])\\w*(?=[^\\w\\d\\.\\:])") >>= withAttribute "Constant") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[A-Z]+_*([0-9]|[a-z])\\w*") >>= withAttribute "Constant"))
+                        <|>
+                        ((pRegExpr (compileRegex "[_A-Z][_A-Z0-9]*(?=[^\\w\\d\\.\\:])") >>= withAttribute "Constant Value") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[_A-Z][_A-Z0-9]*") >>= withAttribute "Constant Value"))
+                        <|>
+                        ((pDetect2Chars False ':' ':' >>= withAttribute "Operator"))
+                        <|>
+                        ((pDetectChar False '.' >>= withAttribute "Member"))
+                        <|>
+                        ((pAnyChar "=+-*/%|&[]{}~" >>= withAttribute "Operator") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '#' >>= withAttribute "Ruby Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pAnyChar "()\\" >>= withAttribute "Ruby Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\W") >>= withAttribute "Member") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Comment Line" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\w\\:\\:\\s") >>= withAttribute "Ruby Comment") >>~ pushContext "RDoc Label")
+                        <|>
+                        ((pKeyword " \n\t.():+,-<=>%&*/;[]^{|}~\\" ["TODO","FIXME","NOTE"] >>= withAttribute "Alert"))
+                        <|>
+                        ((pRegExpr (compileRegex "-?%>") >>= withAttribute "Keyword") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "General Comment" = 
+  do (attr, result) <- ((pKeyword " \n\t.():+,-<=>%&*/;[]^{|}~\\" ["TODO","FIXME","NOTE"] >>= withAttribute "Dec"))
+     return (attr, result)
+
+parseRules "RDoc Label" = 
+  pzero
+
+parseRules "find_heredoc" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "'(\\w+)'") >>= withAttribute "Keyword") >>~ pushContext "apostrophed_normal_heredoc")
+                        <|>
+                        ((pRegExpr (compileRegex "\"?(\\w+)\"?") >>= withAttribute "Keyword") >>~ pushContext "normal_heredoc"))
+     return (attr, result)
+
+parseRules "find_indented_heredoc" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "'(\\w+)'") >>= withAttribute "Keyword") >>~ pushContext "apostrophed_indented_heredoc")
+                        <|>
+                        ((pRegExpr (compileRegex "\"?(\\w+)\"?") >>= withAttribute "Keyword") >>~ pushContext "indented_heredoc"))
+     return (attr, result)
+
+parseRules "indented_heredoc" = 
+  do (attr, result) <- (((pFirstNonSpace >> pRegExprDynamic "%1$" >>= withAttribute "Keyword") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "heredoc_rules")))
+     return (attr, result)
+
+parseRules "apostrophed_indented_heredoc" = 
+  do (attr, result) <- ((pFirstNonSpace >> pRegExprDynamic "%1$" >>= withAttribute "Keyword") >>~ (popContext >> popContext >> return ()))
+     return (attr, result)
+
+parseRules "normal_heredoc" = 
+  do (attr, result) <- (((pColumn 0 >> pRegExprDynamic "%1$" >>= withAttribute "Keyword") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "heredoc_rules")))
+     return (attr, result)
+
+parseRules "apostrophed_normal_heredoc" = 
+  do (attr, result) <- ((pColumn 0 >> pRegExprDynamic "%1$" >>= withAttribute "Keyword") >>~ (popContext >> popContext >> return ()))
+     return (attr, result)
+
+parseRules "heredoc_rules" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "#@{1,2}") >>= withAttribute "Substitution") >>~ pushContext "Short Subst")
+                        <|>
+                        ((pDetect2Chars False '#' '{' >>= withAttribute "Substitution") >>~ pushContext "Subst"))
+     return (attr, result)
+
+parseRules "find_gdl_input" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "w\\(") >>= withAttribute "GDL input") >>~ pushContext "gdl_token_array_1")
+                        <|>
+                        ((pRegExpr (compileRegex "w\\{") >>= withAttribute "GDL input") >>~ pushContext "gdl_token_array_2")
+                        <|>
+                        ((pRegExpr (compileRegex "w\\[") >>= withAttribute "GDL input") >>~ pushContext "gdl_token_array_3")
+                        <|>
+                        ((pRegExpr (compileRegex "w<") >>= withAttribute "GDL input") >>~ pushContext "gdl_token_array_4")
+                        <|>
+                        ((pRegExpr (compileRegex "w([^\\s\\w])") >>= withAttribute "GDL input") >>~ pushContext "gdl_token_array_5")
+                        <|>
+                        ((pRegExpr (compileRegex "q\\(") >>= withAttribute "GDL input") >>~ pushContext "gdl_apostrophed_1")
+                        <|>
+                        ((pRegExpr (compileRegex "q\\{") >>= withAttribute "GDL input") >>~ pushContext "gdl_apostrophed_2")
+                        <|>
+                        ((pRegExpr (compileRegex "q\\[") >>= withAttribute "GDL input") >>~ pushContext "gdl_apostrophed_3")
+                        <|>
+                        ((pRegExpr (compileRegex "q<") >>= withAttribute "GDL input") >>~ pushContext "gdl_apostrophed_4")
+                        <|>
+                        ((pRegExpr (compileRegex "q([^\\s\\w])") >>= withAttribute "GDL input") >>~ pushContext "gdl_apostrophed_5")
+                        <|>
+                        ((pRegExpr (compileRegex "x\\(") >>= withAttribute "GDL input") >>~ pushContext "gdl_shell_command_1")
+                        <|>
+                        ((pRegExpr (compileRegex "x\\{") >>= withAttribute "GDL input") >>~ pushContext "gdl_shell_command_2")
+                        <|>
+                        ((pRegExpr (compileRegex "x\\[") >>= withAttribute "GDL input") >>~ pushContext "gdl_shell_command_3")
+                        <|>
+                        ((pRegExpr (compileRegex "x<") >>= withAttribute "GDL input") >>~ pushContext "gdl_shell_command_4")
+                        <|>
+                        ((pRegExpr (compileRegex "x([^\\s\\w])") >>= withAttribute "GDL input") >>~ pushContext "gdl_shell_command_5")
+                        <|>
+                        ((pRegExpr (compileRegex "r\\(") >>= withAttribute "GDL input") >>~ pushContext "gdl_regexpr_1")
+                        <|>
+                        ((pRegExpr (compileRegex "r\\{") >>= withAttribute "GDL input") >>~ pushContext "gdl_regexpr_2")
+                        <|>
+                        ((pRegExpr (compileRegex "r\\[") >>= withAttribute "GDL input") >>~ pushContext "gdl_regexpr_3")
+                        <|>
+                        ((pRegExpr (compileRegex "r<") >>= withAttribute "GDL input") >>~ pushContext "gdl_regexpr_4")
+                        <|>
+                        ((pRegExpr (compileRegex "r([^\\s\\w])") >>= withAttribute "GDL input") >>~ pushContext "gdl_regexpr_5")
+                        <|>
+                        ((pRegExpr (compileRegex "Q?\\(") >>= withAttribute "GDL input") >>~ pushContext "gdl_dq_string_1")
+                        <|>
+                        ((pRegExpr (compileRegex "Q?\\{") >>= withAttribute "GDL input") >>~ pushContext "gdl_dq_string_2")
+                        <|>
+                        ((pRegExpr (compileRegex "Q?\\[") >>= withAttribute "GDL input") >>~ pushContext "gdl_dq_string_3")
+                        <|>
+                        ((pRegExpr (compileRegex "Q?<") >>= withAttribute "GDL input") >>~ pushContext "gdl_dq_string_4")
+                        <|>
+                        ((pRegExpr (compileRegex "Q?([^\\s\\w])") >>= withAttribute "GDL input") >>~ pushContext "gdl_dq_string_5"))
+     return (attr, result)
+
+parseRules "gdl_dq_string_1" = 
+  do (attr, result) <- (((parseRules "dq_string_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' ')' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "String") >>~ pushContext "gdl_dq_string_1_nested")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_dq_string_1_nested" = 
+  do (attr, result) <- (((parseRules "dq_string_rules"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "String") >>~ pushContext "gdl_dq_string_1_nested")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_dq_string_2" = 
+  do (attr, result) <- (((parseRules "dq_string_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' '}' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "String") >>~ pushContext "gdl_dq_string_2_nested"))
+     return (attr, result)
+
+parseRules "gdl_dq_string_2_nested" = 
+  do (attr, result) <- (((pDetectChar False '{' >>= withAttribute "String") >>~ pushContext "gdl_dq_string_2_nested")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "dq_string_rules")))
+     return (attr, result)
+
+parseRules "gdl_dq_string_3" = 
+  do (attr, result) <- (((parseRules "dq_string_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' ']' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "String") >>~ pushContext "gdl_dq_string_3_nested")
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_dq_string_3_nested" = 
+  do (attr, result) <- (((pDetectChar False '[' >>= withAttribute "String") >>~ pushContext "gdl_dq_string_3_nested")
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "dq_string_rules")))
+     return (attr, result)
+
+parseRules "gdl_dq_string_4" = 
+  do (attr, result) <- (((parseRules "dq_string_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' '>' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "String") >>~ pushContext "gdl_dq_string_4_nested")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_dq_string_4_nested" = 
+  do (attr, result) <- (((pDetectChar False '<' >>= withAttribute "String") >>~ pushContext "gdl_dq_string_4_nested")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "dq_string_rules")))
+     return (attr, result)
+
+parseRules "gdl_dq_string_5" = 
+  do (attr, result) <- (((parseRules "dq_string_rules"))
+                        <|>
+                        ((pRegExprDynamic "\\\\%1" >>= withAttribute "String"))
+                        <|>
+                        ((pRegExprDynamic "\\s*%1" >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "dq_string_rules" = 
+  do (attr, result) <- (((pDetect2Chars False '\\' '\\' >>= withAttribute "String"))
+                        <|>
+                        ((pRegExpr (compileRegex "#@{1,2}") >>= withAttribute "Substitution") >>~ pushContext "Short Subst")
+                        <|>
+                        ((pDetect2Chars False '#' '{' >>= withAttribute "Substitution") >>~ pushContext "Subst"))
+     return (attr, result)
+
+parseRules "gdl_token_array_1" = 
+  do (attr, result) <- (((parseRules "token_array_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' ')' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "String") >>~ pushContext "gdl_token_array_1_nested")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_token_array_1_nested" = 
+  do (attr, result) <- (((parseRules "token_array_rules"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "String") >>~ pushContext "gdl_token_array_1_nested")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_token_array_2" = 
+  do (attr, result) <- (((parseRules "token_array_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' '}' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "String") >>~ pushContext "gdl_token_array_2_nested"))
+     return (attr, result)
+
+parseRules "gdl_token_array_2_nested" = 
+  do (attr, result) <- (((parseRules "token_array_rules"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "String") >>~ pushContext "gdl_token_array_2_nested")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_token_array_3" = 
+  do (attr, result) <- (((parseRules "token_array_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' ']' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "String") >>~ pushContext "gdl_token_array_3_nested")
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_token_array_3_nested" = 
+  do (attr, result) <- (((parseRules "token_array_rules"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "String") >>~ pushContext "gdl_token_array_3_nested")
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_token_array_4" = 
+  do (attr, result) <- (((parseRules "token_array_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' '>' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "String") >>~ pushContext "gdl_token_array_4_nested")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_token_array_4_nested" = 
+  do (attr, result) <- (((parseRules "token_array_rules"))
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "String") >>~ pushContext "gdl_token_array_4_nested")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_token_array_5" = 
+  do (attr, result) <- (((parseRules "token_array_rules"))
+                        <|>
+                        ((pRegExprDynamic "\\\\%1" >>= withAttribute "String"))
+                        <|>
+                        ((pRegExprDynamic "\\s*%1" >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "token_array_rules" = 
+  do (attr, result) <- ((pString False "\\\\" >>= withAttribute "String"))
+     return (attr, result)
+
+parseRules "gdl_apostrophed_1" = 
+  do (attr, result) <- (((parseRules "apostrophed_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' ')' >>= withAttribute "Raw String"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Raw String") >>~ pushContext "gdl_apostrophed_1_nested")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_apostrophed_1_nested" = 
+  do (attr, result) <- (((parseRules "apostrophed_rules"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Raw String") >>~ pushContext "gdl_apostrophed_1_nested")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Raw String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_apostrophed_2" = 
+  do (attr, result) <- (((parseRules "apostrophed_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' '}' >>= withAttribute "Raw String"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Raw String") >>~ pushContext "gdl_apostrophed_2_nested"))
+     return (attr, result)
+
+parseRules "gdl_apostrophed_2_nested" = 
+  do (attr, result) <- (((parseRules "apostrophed_rules"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Raw String") >>~ pushContext "gdl_apostrophed_2_nested")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Raw String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_apostrophed_3" = 
+  do (attr, result) <- (((parseRules "apostrophed_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' ']' >>= withAttribute "Raw String"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Raw String") >>~ pushContext "gdl_apostrophed_3_nested")
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_apostrophed_3_nested" = 
+  do (attr, result) <- (((parseRules "apostrophed_rules"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Raw String") >>~ pushContext "gdl_apostrophed_3_nested")
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "Raw String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_apostrophed_4" = 
+  do (attr, result) <- (((parseRules "apostrophed_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' '>' >>= withAttribute "Raw String"))
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "Raw String") >>~ pushContext "gdl_apostrophed_4_nested")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_apostrophed_4_nested" = 
+  do (attr, result) <- (((parseRules "apostrophed_rules"))
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "Raw String") >>~ pushContext "gdl_apostrophed_4_nested")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Raw String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_apostrophed_5" = 
+  do (attr, result) <- (((parseRules "apostrophed_rules"))
+                        <|>
+                        ((pRegExprDynamic "\\\\%1" >>= withAttribute "Raw String"))
+                        <|>
+                        ((pRegExprDynamic "\\s*%1" >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "apostrophed_rules" = 
+  do (attr, result) <- ((pDetect2Chars False '\\' '\\' >>= withAttribute "Raw String"))
+     return (attr, result)
+
+parseRules "gdl_shell_command_1" = 
+  do (attr, result) <- (((parseRules "shell_command_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' ')' >>= withAttribute "Command"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Command") >>~ pushContext "gdl_shell_command_1_nested")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_shell_command_1_nested" = 
+  do (attr, result) <- (((parseRules "shell_command_rules"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Command") >>~ pushContext "gdl_shell_command_1_nested")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Command") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_shell_command_2" = 
+  do (attr, result) <- (((parseRules "shell_command_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' '}' >>= withAttribute "Command"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Command") >>~ pushContext "gdl_shell_command_2_nested"))
+     return (attr, result)
+
+parseRules "gdl_shell_command_2_nested" = 
+  do (attr, result) <- (((parseRules "shell_command_rules"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Command") >>~ pushContext "gdl_shell_command_2_nested")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Command") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_shell_command_3" = 
+  do (attr, result) <- (((parseRules "shell_command_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' ']' >>= withAttribute "Command"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Command") >>~ pushContext "gdl_shell_command_3_nested")
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_shell_command_3_nested" = 
+  do (attr, result) <- (((parseRules "shell_command_rules"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Command") >>~ pushContext "gdl_shell_command_3_nested")
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "Command") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_shell_command_4" = 
+  do (attr, result) <- (((parseRules "shell_command_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' '>' >>= withAttribute "Command"))
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "Command") >>~ pushContext "gdl_shell_command_4_nested")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_shell_command_4_nested" = 
+  do (attr, result) <- (((parseRules "shell_command_rules"))
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "Command") >>~ pushContext "gdl_shell_command_4_nested")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Command") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_shell_command_5" = 
+  do (attr, result) <- (((parseRules "shell_command_rules"))
+                        <|>
+                        ((pRegExprDynamic "\\\\%1" >>= withAttribute "Command"))
+                        <|>
+                        ((pRegExprDynamic "\\s*%1" >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "shell_command_rules" = 
+  do (attr, result) <- (((pDetect2Chars False '\\' '\\' >>= withAttribute "Command"))
+                        <|>
+                        ((pRegExpr (compileRegex "#@{1,2}") >>= withAttribute "Substitution") >>~ pushContext "Short Subst")
+                        <|>
+                        ((pDetect2Chars False '#' '{' >>= withAttribute "Substitution") >>~ pushContext "Subst"))
+     return (attr, result)
+
+parseRules "gdl_regexpr_1" = 
+  do (attr, result) <- (((parseRules "regexpr_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' ')' >>= withAttribute "Regular Expression"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Regular Expression") >>~ pushContext "gdl_regexpr_1_nested")
+                        <|>
+                        ((pRegExpr (compileRegex "\\)[uiomxn]*") >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_regexpr_1_nested" = 
+  do (attr, result) <- (((parseRules "regexpr_rules"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Regular Expression") >>~ pushContext "gdl_regexpr_1_nested")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Regular Expression") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_regexpr_2" = 
+  do (attr, result) <- (((parseRules "regexpr_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' '}' >>= withAttribute "Regular Expression"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\}[uiomxn]*") >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Regular Expression") >>~ pushContext "gdl_regexpr_2_nested"))
+     return (attr, result)
+
+parseRules "gdl_regexpr_2_nested" = 
+  do (attr, result) <- (((parseRules "regexpr_rules"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Regular Expression") >>~ pushContext "gdl_regexpr_2_nested")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Regular Expression") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_regexpr_3" = 
+  do (attr, result) <- (((parseRules "regexpr_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' ']' >>= withAttribute "Regular Expression"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Regular Expression") >>~ pushContext "gdl_regexpr_3_nested")
+                        <|>
+                        ((pRegExpr (compileRegex "\\][uiomxn]*") >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_regexpr_3_nested" = 
+  do (attr, result) <- (((parseRules "regexpr_rules"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Regular Expression") >>~ pushContext "gdl_regexpr_3_nested")
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "Regular Expression") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_regexpr_4" = 
+  do (attr, result) <- (((parseRules "regexpr_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' '>' >>= withAttribute "Regular Expression"))
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "Regular Expression") >>~ pushContext "gdl_regexpr_4_nested")
+                        <|>
+                        ((pRegExpr (compileRegex ">[uiomxn]*") >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_regexpr_4_nested" = 
+  do (attr, result) <- (((parseRules "regexpr_rules"))
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "Regular Expression") >>~ pushContext "gdl_regexpr_4_nested")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Regular Expression") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_regexpr_5" = 
+  do (attr, result) <- (((parseRules "regexpr_rules"))
+                        <|>
+                        ((pRegExprDynamic "\\\\%1" >>= withAttribute "Regular Expression"))
+                        <|>
+                        ((pRegExprDynamic "\\s*%1[uiomxn]*" >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "regexpr_rules" = 
+  do (attr, result) <- (((pDetect2Chars False '\\' '\\' >>= withAttribute "Regular Expression"))
+                        <|>
+                        ((pRegExpr (compileRegex "#@{1,2}") >>= withAttribute "Substitution") >>~ pushContext "Short Subst")
+                        <|>
+                        ((pDetect2Chars False '#' '{' >>= withAttribute "Substitution") >>~ pushContext "Subst"))
+     return (attr, result)
+
+parseRules "DATA" = 
+  pzero
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Ruby.hs b/Text/Highlighting/Kate/Syntax/Ruby.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Ruby.hs
@@ -0,0 +1,927 @@
+{- This module was generated from data in the Kate syntax highlighting file ruby.xml, version 1.17,
+   by  Stefan Lang (langstefan@gmx.at), Sebastian Vuorinen (sebastian.vuorinen@helsinki.fi) -}
+
+module Text.Highlighting.Kate.Syntax.Ruby ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Ruby"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.rb;*.rjs;*.rxml"
+
+-- | 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 = "Ruby" }
+  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 [("Ruby",["Normal"])], synStLanguage = "Ruby", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "Line Continue" -> (popContext >> return ())
+    "Find closing block brace" -> return ()
+    "Quoted String" -> return ()
+    "Apostrophed String" -> return ()
+    "Command String" -> return ()
+    "Embedded documentation" -> return ()
+    "RegEx 1" -> return ()
+    "Subst" -> return ()
+    "Short Subst" -> (popContext >> return ())
+    "Member Access" -> (popContext >> return ())
+    "Comment Line" -> (popContext >> return ())
+    "General Comment" -> (popContext >> return ())
+    "RDoc Label" -> (popContext >> return ())
+    "find_heredoc" -> (popContext >> return ())
+    "find_indented_heredoc" -> (popContext >> return ())
+    "indented_heredoc" -> return ()
+    "apostrophed_indented_heredoc" -> return ()
+    "normal_heredoc" -> return ()
+    "apostrophed_normal_heredoc" -> return ()
+    "heredoc_rules" -> return ()
+    "find_gdl_input" -> (popContext >> return ())
+    "gdl_dq_string_1" -> return ()
+    "gdl_dq_string_1_nested" -> return ()
+    "gdl_dq_string_2" -> return ()
+    "gdl_dq_string_2_nested" -> return ()
+    "gdl_dq_string_3" -> return ()
+    "gdl_dq_string_3_nested" -> return ()
+    "gdl_dq_string_4" -> return ()
+    "gdl_dq_string_4_nested" -> return ()
+    "gdl_dq_string_5" -> return ()
+    "dq_string_rules" -> return ()
+    "gdl_token_array_1" -> return ()
+    "gdl_token_array_1_nested" -> return ()
+    "gdl_token_array_2" -> return ()
+    "gdl_token_array_2_nested" -> return ()
+    "gdl_token_array_3" -> return ()
+    "gdl_token_array_3_nested" -> return ()
+    "gdl_token_array_4" -> return ()
+    "gdl_token_array_4_nested" -> return ()
+    "gdl_token_array_5" -> return ()
+    "token_array_rules" -> return ()
+    "gdl_apostrophed_1" -> return ()
+    "gdl_apostrophed_1_nested" -> return ()
+    "gdl_apostrophed_2" -> return ()
+    "gdl_apostrophed_2_nested" -> return ()
+    "gdl_apostrophed_3" -> return ()
+    "gdl_apostrophed_3_nested" -> return ()
+    "gdl_apostrophed_4" -> return ()
+    "gdl_apostrophed_4_nested" -> return ()
+    "gdl_apostrophed_5" -> return ()
+    "apostrophed_rules" -> return ()
+    "gdl_shell_command_1" -> return ()
+    "gdl_shell_command_1_nested" -> return ()
+    "gdl_shell_command_2" -> return ()
+    "gdl_shell_command_2_nested" -> return ()
+    "gdl_shell_command_3" -> return ()
+    "gdl_shell_command_3_nested" -> return ()
+    "gdl_shell_command_4" -> return ()
+    "gdl_shell_command_4_nested" -> return ()
+    "gdl_shell_command_5" -> return ()
+    "shell_command_rules" -> return ()
+    "gdl_regexpr_1" -> return ()
+    "gdl_regexpr_1_nested" -> return ()
+    "gdl_regexpr_2" -> return ()
+    "gdl_regexpr_2_nested" -> return ()
+    "gdl_regexpr_3" -> return ()
+    "gdl_regexpr_3_nested" -> return ()
+    "gdl_regexpr_4" -> return ()
+    "gdl_regexpr_4_nested" -> return ()
+    "gdl_regexpr_5" -> return ()
+    "regexpr_rules" -> return ()
+    "DATA" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Attribute Definition","Others"),("Access Control","Keyword"),("Definition","Keyword"),("Pseudo variable","DecVal"),("Dec","DecVal"),("Float","Float"),("Char","Char"),("Octal","BaseN"),("Hex","BaseN"),("Bin","BaseN"),("Symbol","String"),("String","String"),("Raw String","String"),("Command","String"),("Message","Normal"),("Regular Expression","Others"),("Substitution","Others"),("Data","Normal"),("GDL input","Others"),("Default globals","DataType"),("Global Variable","DataType"),("Global Constant","DataType"),("Constant","DataType"),("Constant Value","DataType"),("Kernel methods","Normal"),("Member","Normal"),("Instance Variable","Others"),("Class Variable","Others"),("Comment","Comment"),("Blockcomment","Comment"),("Region Marker","Normal"),("RDoc Value","Others"),("Error","Error"),("Alert","Alert"),("Delimiter","Char"),("Expression","Others"),("Operator","Char")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal Text"),("Line Continue","Normal Text"),("Find closing block brace","Normal Text"),("Quoted String","String"),("Apostrophed String","Raw String"),("Command String","Command"),("Embedded documentation","Comment"),("RegEx 1","Regular Expression"),("Subst","Normal Text"),("Short Subst","Substitution"),("Member Access","Member"),("Comment Line","Comment"),("General Comment","Comment"),("RDoc Label","RDoc Value"),("find_heredoc","Normal Text"),("find_indented_heredoc","Normal Text"),("indented_heredoc","Normal Text"),("apostrophed_indented_heredoc","Normal Text"),("normal_heredoc","Normal Text"),("apostrophed_normal_heredoc","Normal Text"),("heredoc_rules","Normal Text"),("find_gdl_input","Normal Text"),("gdl_dq_string_1","String"),("gdl_dq_string_1_nested","String"),("gdl_dq_string_2","String"),("gdl_dq_string_2_nested","String"),("gdl_dq_string_3","String"),("gdl_dq_string_3_nested","String"),("gdl_dq_string_4","String"),("gdl_dq_string_4_nested","String"),("gdl_dq_string_5","String"),("dq_string_rules","String"),("gdl_token_array_1","String"),("gdl_token_array_1_nested","String"),("gdl_token_array_2","String"),("gdl_token_array_2_nested","String"),("gdl_token_array_3","String"),("gdl_token_array_3_nested","String"),("gdl_token_array_4","String"),("gdl_token_array_4_nested","String"),("gdl_token_array_5","String"),("token_array_rules","String"),("gdl_apostrophed_1","Raw String"),("gdl_apostrophed_1_nested","Raw String"),("gdl_apostrophed_2","Raw String"),("gdl_apostrophed_2_nested","Raw String"),("gdl_apostrophed_3","Raw String"),("gdl_apostrophed_3_nested","Raw String"),("gdl_apostrophed_4","Raw String"),("gdl_apostrophed_4_nested","Raw String"),("gdl_apostrophed_5","Raw String"),("apostrophed_rules","Raw String"),("gdl_shell_command_1","Command"),("gdl_shell_command_1_nested","Command"),("gdl_shell_command_2","Command"),("gdl_shell_command_2_nested","Command"),("gdl_shell_command_3","Command"),("gdl_shell_command_3_nested","Command"),("gdl_shell_command_4","Command"),("gdl_shell_command_4_nested","Command"),("gdl_shell_command_5","Command"),("shell_command_rules","Command"),("gdl_regexpr_1","Regular Expression"),("gdl_regexpr_1_nested","Regular Expression"),("gdl_regexpr_2","Regular Expression"),("gdl_regexpr_2_nested","Regular Expression"),("gdl_regexpr_3","Regular Expression"),("gdl_regexpr_3_nested","Regular Expression"),("gdl_regexpr_4","Regular Expression"),("gdl_regexpr_4_nested","Regular Expression"),("gdl_regexpr_5","Regular Expression"),("regexpr_rules","Regular Expression"),("DATA","Data")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "Normal Text") >>~ pushContext "Line Continue")
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "__END__$") >>= withAttribute "Keyword") >>~ pushContext "DATA")
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "#!\\/.*") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Operator") >>~ pushContext "Find closing block brace")
+                        <|>
+                        ((pRegExpr (compileRegex "(\\=|\\(|\\[|\\{)\\s*(if|unless|while|until)\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "(while|until)\\b(?!.*\\bdo\\b)") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\;\\s*(while|until)\\b(?!.*\\bdo\\b)") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "(if|unless)\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\;\\s*(if|unless)\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bclass\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bmodule\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bbegin\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bfor\\b(?!.*\\bdo\\b)") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bcase\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bdo\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bdef\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bend\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pRegExpr (compileRegex "(\\b|^\\s*)(else|elsif|rescue|ensure)(\\b|$)") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pString False "..." >>= withAttribute "Operator"))
+                        <|>
+                        ((pDetect2Chars False '.' '.' >>= withAttribute "Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\.[_a-z][_a-zA-Z0-9]*(\\?|\\!|\\b)") >>= withAttribute "Message"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s\\?(\\\\M\\-)?(\\\\C\\-)?\\\\?\\S") >>= withAttribute "Dec"))
+                        <|>
+                        ((pKeyword " \n\t.():+,-<=>%&*/;[]^{|}~\\" ["BEGIN","END","and","begin","break","case","defined?","do","else","elsif","end","ensure","for","if","in","include","next","not","or","redo","rescue","retry","return","then","unless","until","when","while","yield"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():+,-<=>%&*/;[]^{|}~\\" ["attr_reader","attr_writer","attr_accessor"] >>= withAttribute "Attribute Definition"))
+                        <|>
+                        ((pKeyword " \n\t.():+,-<=>%&*/;[]^{|}~\\" ["private_class_method","private","protected","public_class_method","public"] >>= withAttribute "Access Control"))
+                        <|>
+                        ((pKeyword " \n\t.():+,-<=>%&*/;[]^{|}~\\" ["alias","module","class","def","undef"] >>= withAttribute "Definition"))
+                        <|>
+                        ((pKeyword " \n\t.():+,-<=>%&*/;[]^{|}~\\" ["self","super","nil","false","true","caller","__FILE__","__LINE__"] >>= withAttribute "Pseudo variable"))
+                        <|>
+                        ((pKeyword " \n\t.():+,-<=>%&*/;[]^{|}~\\" ["$stdout","$defout","$stderr","$deferr","$stdin"] >>= withAttribute "Default globals"))
+                        <|>
+                        ((pKeyword " \n\t.():+,-<=>%&*/;[]^{|}~\\" ["abort","at_exit","autoload","autoload?","binding","block_given?","callcc","caller","catch","chomp","chomp!","chop","chop!","eval","exec","exit","exit!","fail","fork","format","getc","gets","global_variables","gsub","gsub!","iterator?","lambda","load","local_variables","loop","method_missing","open","p","print","printf","proc","putc","puts","raise","rand","readline","readlines","require","scan","select","set_trace_func","sleep","split","sprintf","srand","sub","sub!","syscall","system","test","throw","trace_var","trap","untrace_var","warn"] >>= withAttribute "Kernel methods"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$[a-zA-Z_0-9]+") >>= withAttribute "Global Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$\\-[a-zA-z_]\\b") >>= withAttribute "Global Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$[\\d_*`\\!:?'/\\\\\\-\\&\"]") >>= withAttribute "Default globals"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[_A-Z]+[A-Z_0-9]+\\b") >>= withAttribute "Global Constant"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[A-Z]+_*([0-9]|[a-z])[_a-zA-Z0-9]*\\b") >>= withAttribute "Constant"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b\\-?0[xX][_0-9a-fA-F]+") >>= withAttribute "Hex"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b\\-?0[bB][_01]+") >>= withAttribute "Bin"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b\\-?0[1-7][_0-7]*") >>= withAttribute "Octal"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b\\-?[0-9][0-9_]*\\.[0-9][0-9_]*([eE]\\-?[1-9][0-9]*(\\.[0-9]*)?)?") >>= withAttribute "Float"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b\\-?[1-9][0-9_]*\\b") >>= withAttribute "Dec"))
+                        <|>
+                        ((pInt >>= withAttribute "Dec"))
+                        <|>
+                        ((pHlCChar >>= withAttribute "Char"))
+                        <|>
+                        ((pColumn 0 >> pString False "=begin" >>= withAttribute "Blockcomment") >>~ pushContext "Embedded documentation")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*<<-(?=\\w+|[\"'])") >>= withAttribute "Operator") >>~ pushContext "find_indented_heredoc")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*<<(?=\\w+|[\"'])") >>= withAttribute "Operator") >>~ pushContext "find_heredoc")
+                        <|>
+                        ((pDetectChar False '.' >>= withAttribute "Operator"))
+                        <|>
+                        ((pDetect2Chars False '&' '&' >>= withAttribute "Operator"))
+                        <|>
+                        ((pDetect2Chars False '|' '|' >>= withAttribute "Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s[\\?\\:\\%/]\\s") >>= withAttribute "Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "[|&<>\\^\\+*~\\-=]+") >>= withAttribute "Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s!") >>= withAttribute "Operator"))
+                        <|>
+                        ((pRegExpr (compileRegex "/=\\s") >>= withAttribute "Operator"))
+                        <|>
+                        ((pString False "%=" >>= withAttribute "Operator"))
+                        <|>
+                        ((pDetect2Chars False ':' ':' >>= withAttribute "Operator") >>~ pushContext "Member Access")
+                        <|>
+                        ((pRegExpr (compileRegex ":[a-zA-Z_][a-zA-Z0-9_]*") >>= withAttribute "Symbol"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "Quoted String")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Raw String") >>~ pushContext "Apostrophed String")
+                        <|>
+                        ((pDetectChar False '`' >>= withAttribute "Command") >>~ pushContext "Command String")
+                        <|>
+                        ((pString False "?#" >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "#\\s*BEGIN.*$") >>= withAttribute "Comment"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "#\\s*END.*$") >>= withAttribute "Comment"))
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#") >>= withAttribute "Comment") >>~ pushContext "Comment Line")
+                        <|>
+                        ((pRegExpr (compileRegex "(\\b|\\s)#") >>= withAttribute "Comment") >>~ pushContext "General Comment")
+                        <|>
+                        ((pRegExpr (compileRegex "[\\[\\]]+") >>= withAttribute "Delimiter"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Delimiter"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Delimiter"))
+                        <|>
+                        ((pRegExpr (compileRegex "@[a-zA-Z_0-9]+") >>= withAttribute "Instance Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "@@[a-zA-Z_0-9]+") >>= withAttribute "Class Variable"))
+                        <|>
+                        ((pDetectChar False '/' >>= withAttribute "Regular Expression") >>~ pushContext "RegEx 1")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*[%](?=[Qqxw]?[^\\s])") >>= withAttribute "GDL input") >>~ pushContext "find_gdl_input"))
+     return (attr, result)
+
+parseRules "Line Continue" = 
+  do (attr, result) <- (((pFirstNonSpace >> pRegExpr (compileRegex "(while|until)\\b(?!.*\\bdo\\b)") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "(if|unless)\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((parseRules "Normal")))
+     return (attr, result)
+
+parseRules "Find closing block brace" = 
+  do (attr, result) <- (((pDetectChar False '}' >>= withAttribute "Operator") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "Normal")))
+     return (attr, result)
+
+parseRules "Quoted String" = 
+  do (attr, result) <- (((pString False "\\\\" >>= withAttribute "String"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\\\\"") >>= withAttribute "String"))
+                        <|>
+                        ((pRegExpr (compileRegex "#@{1,2}") >>= withAttribute "Substitution") >>~ pushContext "Short Subst")
+                        <|>
+                        ((pDetect2Chars False '#' '{' >>= withAttribute "Substitution") >>~ pushContext "Subst")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Apostrophed String" = 
+  do (attr, result) <- (((pString False "\\\\" >>= withAttribute "String"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\\\'") >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Raw String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Command String" = 
+  do (attr, result) <- (((pString False "\\\\" >>= withAttribute "String"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\\\`") >>= withAttribute "String"))
+                        <|>
+                        ((pRegExpr (compileRegex "#@{1,2}") >>= withAttribute "Substitution") >>~ pushContext "Short Subst")
+                        <|>
+                        ((pDetect2Chars False '#' '{' >>= withAttribute "Substitution") >>~ pushContext "Subst")
+                        <|>
+                        ((pHlCChar >>= withAttribute "Char") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '`' >>= withAttribute "Command") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Embedded documentation" = 
+  do (attr, result) <- ((pColumn 0 >> pString False "=end" >>= withAttribute "Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "RegEx 1" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\\\/") >>= withAttribute "Regular Expression"))
+                        <|>
+                        ((pRegExpr (compileRegex "[^\\\\]$") >>= withAttribute "Regular Expression") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "#@{1,2}") >>= withAttribute "Substitution") >>~ pushContext "Short Subst")
+                        <|>
+                        ((pDetect2Chars False '#' '{' >>= withAttribute "Substitution") >>~ pushContext "Subst")
+                        <|>
+                        ((pRegExpr (compileRegex "/[uiomxn]*") >>= withAttribute "Regular Expression") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Subst" = 
+  do (attr, result) <- (((pDetectChar False '}' >>= withAttribute "Substitution") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "Normal")))
+     return (attr, result)
+
+parseRules "Short Subst" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "#@{1,2}") >>= withAttribute "Substitution"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\w(?!\\w)") >>= withAttribute "Substitution") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Member Access" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\.?[_a-z]\\w*(\\?|\\!)?(?=[^\\w\\d\\.\\:])") >>= withAttribute "Message") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\.?[_a-z]\\w*(\\?|\\!)?") >>= withAttribute "Message"))
+                        <|>
+                        ((pRegExpr (compileRegex "[A-Z]+_*(\\d|[a-z])\\w*(?=[^\\w\\d\\.\\:])") >>= withAttribute "Constant") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[A-Z]+_*([0-9]|[a-z])\\w*") >>= withAttribute "Constant"))
+                        <|>
+                        ((pRegExpr (compileRegex "[_A-Z][_A-Z0-9]*(?=[^\\w\\d\\.\\:])") >>= withAttribute "Constant Value") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "[_A-Z][_A-Z0-9]*") >>= withAttribute "Constant Value"))
+                        <|>
+                        ((pDetect2Chars False ':' ':' >>= withAttribute "Operator"))
+                        <|>
+                        ((pDetectChar False '.' >>= withAttribute "Member"))
+                        <|>
+                        ((pAnyChar "=+-*/%|&[]{}~" >>= withAttribute "Operator") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '#' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pAnyChar "()\\" >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\W") >>= withAttribute "Member") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Comment Line" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\w\\:\\:\\s") >>= withAttribute "Comment") >>~ pushContext "RDoc Label")
+                        <|>
+                        ((pKeyword " \n\t.():+,-<=>%&*/;[]^{|}~\\" ["TODO","FIXME","NOTE"] >>= withAttribute "Alert")))
+     return (attr, result)
+
+parseRules "General Comment" = 
+  do (attr, result) <- ((pKeyword " \n\t.():+,-<=>%&*/;[]^{|}~\\" ["TODO","FIXME","NOTE"] >>= withAttribute "Dec"))
+     return (attr, result)
+
+parseRules "RDoc Label" = 
+  pzero
+
+parseRules "find_heredoc" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "'(\\w+)'") >>= withAttribute "Keyword") >>~ pushContext "apostrophed_normal_heredoc")
+                        <|>
+                        ((pRegExpr (compileRegex "\"?(\\w+)\"?") >>= withAttribute "Keyword") >>~ pushContext "normal_heredoc"))
+     return (attr, result)
+
+parseRules "find_indented_heredoc" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "'(\\w+)'") >>= withAttribute "Keyword") >>~ pushContext "apostrophed_indented_heredoc")
+                        <|>
+                        ((pRegExpr (compileRegex "\"?(\\w+)\"?") >>= withAttribute "Keyword") >>~ pushContext "indented_heredoc"))
+     return (attr, result)
+
+parseRules "indented_heredoc" = 
+  do (attr, result) <- (((pFirstNonSpace >> pRegExprDynamic "%1$" >>= withAttribute "Keyword") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "heredoc_rules")))
+     return (attr, result)
+
+parseRules "apostrophed_indented_heredoc" = 
+  do (attr, result) <- ((pFirstNonSpace >> pRegExprDynamic "%1$" >>= withAttribute "Keyword") >>~ (popContext >> popContext >> return ()))
+     return (attr, result)
+
+parseRules "normal_heredoc" = 
+  do (attr, result) <- (((pColumn 0 >> pRegExprDynamic "%1$" >>= withAttribute "Keyword") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "heredoc_rules")))
+     return (attr, result)
+
+parseRules "apostrophed_normal_heredoc" = 
+  do (attr, result) <- ((pColumn 0 >> pRegExprDynamic "%1$" >>= withAttribute "Keyword") >>~ (popContext >> popContext >> return ()))
+     return (attr, result)
+
+parseRules "heredoc_rules" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "#@{1,2}") >>= withAttribute "Substitution") >>~ pushContext "Short Subst")
+                        <|>
+                        ((pDetect2Chars False '#' '{' >>= withAttribute "Substitution") >>~ pushContext "Subst"))
+     return (attr, result)
+
+parseRules "find_gdl_input" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "w\\(") >>= withAttribute "GDL input") >>~ pushContext "gdl_token_array_1")
+                        <|>
+                        ((pRegExpr (compileRegex "w\\{") >>= withAttribute "GDL input") >>~ pushContext "gdl_token_array_2")
+                        <|>
+                        ((pRegExpr (compileRegex "w\\[") >>= withAttribute "GDL input") >>~ pushContext "gdl_token_array_3")
+                        <|>
+                        ((pRegExpr (compileRegex "w<") >>= withAttribute "GDL input") >>~ pushContext "gdl_token_array_4")
+                        <|>
+                        ((pRegExpr (compileRegex "w([^\\s\\w])") >>= withAttribute "GDL input") >>~ pushContext "gdl_token_array_5")
+                        <|>
+                        ((pRegExpr (compileRegex "q\\(") >>= withAttribute "GDL input") >>~ pushContext "gdl_apostrophed_1")
+                        <|>
+                        ((pRegExpr (compileRegex "q\\{") >>= withAttribute "GDL input") >>~ pushContext "gdl_apostrophed_2")
+                        <|>
+                        ((pRegExpr (compileRegex "q\\[") >>= withAttribute "GDL input") >>~ pushContext "gdl_apostrophed_3")
+                        <|>
+                        ((pRegExpr (compileRegex "q<") >>= withAttribute "GDL input") >>~ pushContext "gdl_apostrophed_4")
+                        <|>
+                        ((pRegExpr (compileRegex "q([^\\s\\w])") >>= withAttribute "GDL input") >>~ pushContext "gdl_apostrophed_5")
+                        <|>
+                        ((pRegExpr (compileRegex "x\\(") >>= withAttribute "GDL input") >>~ pushContext "gdl_shell_command_1")
+                        <|>
+                        ((pRegExpr (compileRegex "x\\{") >>= withAttribute "GDL input") >>~ pushContext "gdl_shell_command_2")
+                        <|>
+                        ((pRegExpr (compileRegex "x\\[") >>= withAttribute "GDL input") >>~ pushContext "gdl_shell_command_3")
+                        <|>
+                        ((pRegExpr (compileRegex "x<") >>= withAttribute "GDL input") >>~ pushContext "gdl_shell_command_4")
+                        <|>
+                        ((pRegExpr (compileRegex "x([^\\s\\w])") >>= withAttribute "GDL input") >>~ pushContext "gdl_shell_command_5")
+                        <|>
+                        ((pRegExpr (compileRegex "r\\(") >>= withAttribute "GDL input") >>~ pushContext "gdl_regexpr_1")
+                        <|>
+                        ((pRegExpr (compileRegex "r\\{") >>= withAttribute "GDL input") >>~ pushContext "gdl_regexpr_2")
+                        <|>
+                        ((pRegExpr (compileRegex "r\\[") >>= withAttribute "GDL input") >>~ pushContext "gdl_regexpr_3")
+                        <|>
+                        ((pRegExpr (compileRegex "r<") >>= withAttribute "GDL input") >>~ pushContext "gdl_regexpr_4")
+                        <|>
+                        ((pRegExpr (compileRegex "r([^\\s\\w])") >>= withAttribute "GDL input") >>~ pushContext "gdl_regexpr_5")
+                        <|>
+                        ((pRegExpr (compileRegex "Q?\\(") >>= withAttribute "GDL input") >>~ pushContext "gdl_dq_string_1")
+                        <|>
+                        ((pRegExpr (compileRegex "Q?\\{") >>= withAttribute "GDL input") >>~ pushContext "gdl_dq_string_2")
+                        <|>
+                        ((pRegExpr (compileRegex "Q?\\[") >>= withAttribute "GDL input") >>~ pushContext "gdl_dq_string_3")
+                        <|>
+                        ((pRegExpr (compileRegex "Q?<") >>= withAttribute "GDL input") >>~ pushContext "gdl_dq_string_4")
+                        <|>
+                        ((pRegExpr (compileRegex "Q?([^\\s\\w])") >>= withAttribute "GDL input") >>~ pushContext "gdl_dq_string_5"))
+     return (attr, result)
+
+parseRules "gdl_dq_string_1" = 
+  do (attr, result) <- (((parseRules "dq_string_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' ')' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "String") >>~ pushContext "gdl_dq_string_1_nested")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_dq_string_1_nested" = 
+  do (attr, result) <- (((parseRules "dq_string_rules"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "String") >>~ pushContext "gdl_dq_string_1_nested")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_dq_string_2" = 
+  do (attr, result) <- (((parseRules "dq_string_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' '}' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "String") >>~ pushContext "gdl_dq_string_2_nested"))
+     return (attr, result)
+
+parseRules "gdl_dq_string_2_nested" = 
+  do (attr, result) <- (((pDetectChar False '{' >>= withAttribute "String") >>~ pushContext "gdl_dq_string_2_nested")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "dq_string_rules")))
+     return (attr, result)
+
+parseRules "gdl_dq_string_3" = 
+  do (attr, result) <- (((parseRules "dq_string_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' ']' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "String") >>~ pushContext "gdl_dq_string_3_nested")
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_dq_string_3_nested" = 
+  do (attr, result) <- (((pDetectChar False '[' >>= withAttribute "String") >>~ pushContext "gdl_dq_string_3_nested")
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "dq_string_rules")))
+     return (attr, result)
+
+parseRules "gdl_dq_string_4" = 
+  do (attr, result) <- (((parseRules "dq_string_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' '>' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "String") >>~ pushContext "gdl_dq_string_4_nested")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_dq_string_4_nested" = 
+  do (attr, result) <- (((pDetectChar False '<' >>= withAttribute "String") >>~ pushContext "gdl_dq_string_4_nested")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "dq_string_rules")))
+     return (attr, result)
+
+parseRules "gdl_dq_string_5" = 
+  do (attr, result) <- (((parseRules "dq_string_rules"))
+                        <|>
+                        ((pRegExprDynamic "\\\\%1" >>= withAttribute "String"))
+                        <|>
+                        ((pRegExprDynamic "\\s*%1" >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "dq_string_rules" = 
+  do (attr, result) <- (((pDetect2Chars False '\\' '\\' >>= withAttribute "String"))
+                        <|>
+                        ((pRegExpr (compileRegex "#@{1,2}") >>= withAttribute "Substitution") >>~ pushContext "Short Subst")
+                        <|>
+                        ((pDetect2Chars False '#' '{' >>= withAttribute "Substitution") >>~ pushContext "Subst"))
+     return (attr, result)
+
+parseRules "gdl_token_array_1" = 
+  do (attr, result) <- (((parseRules "token_array_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' ')' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "String") >>~ pushContext "gdl_token_array_1_nested")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_token_array_1_nested" = 
+  do (attr, result) <- (((parseRules "token_array_rules"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "String") >>~ pushContext "gdl_token_array_1_nested")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_token_array_2" = 
+  do (attr, result) <- (((parseRules "token_array_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' '}' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "String") >>~ pushContext "gdl_token_array_2_nested"))
+     return (attr, result)
+
+parseRules "gdl_token_array_2_nested" = 
+  do (attr, result) <- (((parseRules "token_array_rules"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "String") >>~ pushContext "gdl_token_array_2_nested")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_token_array_3" = 
+  do (attr, result) <- (((parseRules "token_array_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' ']' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "String") >>~ pushContext "gdl_token_array_3_nested")
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_token_array_3_nested" = 
+  do (attr, result) <- (((parseRules "token_array_rules"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "String") >>~ pushContext "gdl_token_array_3_nested")
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_token_array_4" = 
+  do (attr, result) <- (((parseRules "token_array_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' '>' >>= withAttribute "String"))
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "String") >>~ pushContext "gdl_token_array_4_nested")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_token_array_4_nested" = 
+  do (attr, result) <- (((parseRules "token_array_rules"))
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "String") >>~ pushContext "gdl_token_array_4_nested")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_token_array_5" = 
+  do (attr, result) <- (((parseRules "token_array_rules"))
+                        <|>
+                        ((pRegExprDynamic "\\\\%1" >>= withAttribute "String"))
+                        <|>
+                        ((pRegExprDynamic "\\s*%1" >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "token_array_rules" = 
+  do (attr, result) <- ((pString False "\\\\" >>= withAttribute "String"))
+     return (attr, result)
+
+parseRules "gdl_apostrophed_1" = 
+  do (attr, result) <- (((parseRules "apostrophed_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' ')' >>= withAttribute "Raw String"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Raw String") >>~ pushContext "gdl_apostrophed_1_nested")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_apostrophed_1_nested" = 
+  do (attr, result) <- (((parseRules "apostrophed_rules"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Raw String") >>~ pushContext "gdl_apostrophed_1_nested")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Raw String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_apostrophed_2" = 
+  do (attr, result) <- (((parseRules "apostrophed_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' '}' >>= withAttribute "Raw String"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Raw String") >>~ pushContext "gdl_apostrophed_2_nested"))
+     return (attr, result)
+
+parseRules "gdl_apostrophed_2_nested" = 
+  do (attr, result) <- (((parseRules "apostrophed_rules"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Raw String") >>~ pushContext "gdl_apostrophed_2_nested")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Raw String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_apostrophed_3" = 
+  do (attr, result) <- (((parseRules "apostrophed_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' ']' >>= withAttribute "Raw String"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Raw String") >>~ pushContext "gdl_apostrophed_3_nested")
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_apostrophed_3_nested" = 
+  do (attr, result) <- (((parseRules "apostrophed_rules"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Raw String") >>~ pushContext "gdl_apostrophed_3_nested")
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "Raw String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_apostrophed_4" = 
+  do (attr, result) <- (((parseRules "apostrophed_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' '>' >>= withAttribute "Raw String"))
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "Raw String") >>~ pushContext "gdl_apostrophed_4_nested")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_apostrophed_4_nested" = 
+  do (attr, result) <- (((parseRules "apostrophed_rules"))
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "Raw String") >>~ pushContext "gdl_apostrophed_4_nested")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Raw String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_apostrophed_5" = 
+  do (attr, result) <- (((parseRules "apostrophed_rules"))
+                        <|>
+                        ((pRegExprDynamic "\\\\%1" >>= withAttribute "Raw String"))
+                        <|>
+                        ((pRegExprDynamic "\\s*%1" >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "apostrophed_rules" = 
+  do (attr, result) <- ((pDetect2Chars False '\\' '\\' >>= withAttribute "Raw String"))
+     return (attr, result)
+
+parseRules "gdl_shell_command_1" = 
+  do (attr, result) <- (((parseRules "shell_command_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' ')' >>= withAttribute "Command"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Command") >>~ pushContext "gdl_shell_command_1_nested")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_shell_command_1_nested" = 
+  do (attr, result) <- (((parseRules "shell_command_rules"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Command") >>~ pushContext "gdl_shell_command_1_nested")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Command") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_shell_command_2" = 
+  do (attr, result) <- (((parseRules "shell_command_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' '}' >>= withAttribute "Command"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Command") >>~ pushContext "gdl_shell_command_2_nested"))
+     return (attr, result)
+
+parseRules "gdl_shell_command_2_nested" = 
+  do (attr, result) <- (((parseRules "shell_command_rules"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Command") >>~ pushContext "gdl_shell_command_2_nested")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Command") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_shell_command_3" = 
+  do (attr, result) <- (((parseRules "shell_command_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' ']' >>= withAttribute "Command"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Command") >>~ pushContext "gdl_shell_command_3_nested")
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_shell_command_3_nested" = 
+  do (attr, result) <- (((parseRules "shell_command_rules"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Command") >>~ pushContext "gdl_shell_command_3_nested")
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "Command") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_shell_command_4" = 
+  do (attr, result) <- (((parseRules "shell_command_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' '>' >>= withAttribute "Command"))
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "Command") >>~ pushContext "gdl_shell_command_4_nested")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_shell_command_4_nested" = 
+  do (attr, result) <- (((parseRules "shell_command_rules"))
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "Command") >>~ pushContext "gdl_shell_command_4_nested")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Command") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_shell_command_5" = 
+  do (attr, result) <- (((parseRules "shell_command_rules"))
+                        <|>
+                        ((pRegExprDynamic "\\\\%1" >>= withAttribute "Command"))
+                        <|>
+                        ((pRegExprDynamic "\\s*%1" >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "shell_command_rules" = 
+  do (attr, result) <- (((pDetect2Chars False '\\' '\\' >>= withAttribute "Command"))
+                        <|>
+                        ((pRegExpr (compileRegex "#@{1,2}") >>= withAttribute "Substitution") >>~ pushContext "Short Subst")
+                        <|>
+                        ((pDetect2Chars False '#' '{' >>= withAttribute "Substitution") >>~ pushContext "Subst"))
+     return (attr, result)
+
+parseRules "gdl_regexpr_1" = 
+  do (attr, result) <- (((parseRules "regexpr_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' ')' >>= withAttribute "Regular Expression"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Regular Expression") >>~ pushContext "gdl_regexpr_1_nested")
+                        <|>
+                        ((pRegExpr (compileRegex "\\)[uiomxn]*") >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_regexpr_1_nested" = 
+  do (attr, result) <- (((parseRules "regexpr_rules"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Regular Expression") >>~ pushContext "gdl_regexpr_1_nested")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Regular Expression") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_regexpr_2" = 
+  do (attr, result) <- (((parseRules "regexpr_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' '}' >>= withAttribute "Regular Expression"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\}[uiomxn]*") >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Regular Expression") >>~ pushContext "gdl_regexpr_2_nested"))
+     return (attr, result)
+
+parseRules "gdl_regexpr_2_nested" = 
+  do (attr, result) <- (((parseRules "regexpr_rules"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Regular Expression") >>~ pushContext "gdl_regexpr_2_nested")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Regular Expression") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_regexpr_3" = 
+  do (attr, result) <- (((parseRules "regexpr_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' ']' >>= withAttribute "Regular Expression"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Regular Expression") >>~ pushContext "gdl_regexpr_3_nested")
+                        <|>
+                        ((pRegExpr (compileRegex "\\][uiomxn]*") >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_regexpr_3_nested" = 
+  do (attr, result) <- (((parseRules "regexpr_rules"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Regular Expression") >>~ pushContext "gdl_regexpr_3_nested")
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "Regular Expression") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_regexpr_4" = 
+  do (attr, result) <- (((parseRules "regexpr_rules"))
+                        <|>
+                        ((pDetect2Chars False '\\' '>' >>= withAttribute "Regular Expression"))
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "Regular Expression") >>~ pushContext "gdl_regexpr_4_nested")
+                        <|>
+                        ((pRegExpr (compileRegex ">[uiomxn]*") >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_regexpr_4_nested" = 
+  do (attr, result) <- (((parseRules "regexpr_rules"))
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "Regular Expression") >>~ pushContext "gdl_regexpr_4_nested")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Regular Expression") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "gdl_regexpr_5" = 
+  do (attr, result) <- (((parseRules "regexpr_rules"))
+                        <|>
+                        ((pRegExprDynamic "\\\\%1" >>= withAttribute "Regular Expression"))
+                        <|>
+                        ((pRegExprDynamic "\\s*%1[uiomxn]*" >>= withAttribute "GDL input") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules "regexpr_rules" = 
+  do (attr, result) <- (((pDetect2Chars False '\\' '\\' >>= withAttribute "Regular Expression"))
+                        <|>
+                        ((pRegExpr (compileRegex "#@{1,2}") >>= withAttribute "Substitution") >>~ pushContext "Short Subst")
+                        <|>
+                        ((pDetect2Chars False '#' '{' >>= withAttribute "Substitution") >>~ pushContext "Subst"))
+     return (attr, result)
+
+parseRules "DATA" = 
+  pzero
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Scala.hs b/Text/Highlighting/Kate/Syntax/Scala.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Scala.hs
@@ -0,0 +1,181 @@
+{- This module was generated from data in the Kate syntax highlighting file scala.xml, version 1.0,
+   by  Stephane Micheloud (stephane.micheloud@epfl.ch) -}
+
+module Text.Highlighting.Kate.Syntax.Scala ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Javadoc
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Scala"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.scala"
+
+-- | 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 = "Scala" }
+  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 [("Scala",["Normal"])], synStLanguage = "Scala", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "String" -> (popContext >> return ())
+    "Printf" -> (popContext >> return ())
+    "PrintfString" -> (popContext >> return ())
+    "Member" -> (popContext >> return ())
+    "Commentar 1" -> (popContext >> return ())
+    "Commentar 2" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Function","Function"),("StaticImports","Keyword"),("Imports","Keyword"),("Data Type","DataType"),("Decimal","DecVal"),("Octal","BaseN"),("Hex","BaseN"),("Float","Float"),("Char","Char"),("String","String"),("String Char","Char"),("PrintfString","String"),("Comment","Comment"),("Symbol","Normal"),("Scala2","Normal"),("Java15","Normal")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal Text"),("String","String"),("Printf","Printf"),("PrintfString","PrintfString"),("Member","Normal Text"),("Commentar 1","Comment"),("Commentar 2","Comment")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((Text.Highlighting.Kate.Syntax.Javadoc.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["abstract","case","catch","class","def","do","else","extends","false","final","finally","for","forSome","if","implicit","import","lazy","match","new","null","object","override","package","private","protected","requires","return","sealed","super","this","throw","trait","true","try","type","val","var","while","with","yield"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["boolean","byte","char","double","float","int","long","short","unit"] >>= withAttribute "Data Type"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["ACTIVE","ACTIVITY_COMPLETED","ACTIVITY_REQUIRED","ARG_IN","ARG_INOUT","ARG_OUT","AWTError","AWTEvent","AWTEventListener","AWTEventListenerProxy","AWTEventMulticaster","AWTException","AWTKeyStroke","AWTPermission","AbstractAction","AbstractBorder","AbstractButton","AbstractCellEditor","AbstractCollection","AbstractColorChooserPanel","AbstractDocument","AbstractDocument.AttributeContext","AbstractDocument.Content","AbstractDocument.ElementEdit","AbstractExecutorService","AbstractInterruptibleChannel","AbstractLayoutCache","AbstractLayoutCache.NodeDimensions","AbstractList","AbstractListModel","AbstractMap","AbstractMethodError","AbstractPreferences","AbstractQueue","AbstractQueuedSynchronizer","AbstractSelectableChannel","AbstractSelectionKey","AbstractSelector","AbstractSequentialList","AbstractSet","AbstractSpinnerModel","AbstractTableModel","AbstractUndoableEdit","AbstractWriter","AccessControlContext","AccessControlException","AccessController","AccessException","Accessible","AccessibleAction","AccessibleAttributeSequence","AccessibleBundle","AccessibleComponent","AccessibleContext","AccessibleEditableText","AccessibleExtendedComponent","AccessibleExtendedTable","AccessibleExtendedText","AccessibleHyperlink","AccessibleHypertext","AccessibleIcon","AccessibleKeyBinding","AccessibleObject","AccessibleRelation","AccessibleRelationSet","AccessibleResourceBundle","AccessibleRole","AccessibleSelection","AccessibleState","AccessibleStateSet","AccessibleStreamable","AccessibleTable","AccessibleTableModelChange","AccessibleText","AccessibleTextSequence","AccessibleValue","AccountException","AccountExpiredException","AccountLockedException","AccountNotFoundException","Acl","AclEntry","AclNotFoundException","Action","ActionEvent","ActionListener","ActionMap","ActionMapUIResource","Activatable","ActivateFailedException","ActivationDesc","ActivationException","ActivationGroup","ActivationGroupDesc","ActivationGroupDesc.CommandEnvironment","ActivationGroupID","ActivationGroup_Stub","ActivationID","ActivationInstantiator","ActivationMonitor","ActivationSystem","Activator","ActiveEvent","ActivityCompletedException","ActivityRequiredException","AdapterActivator","AdapterActivatorOperations","AdapterAlreadyExists","AdapterAlreadyExistsHelper","AdapterInactive","AdapterInactiveHelper","AdapterManagerIdHelper","AdapterNameHelper","AdapterNonExistent","AdapterNonExistentHelper","AdapterStateHelper","AddressHelper","Adjustable","AdjustmentEvent","AdjustmentListener","Adler32","AffineTransform","AffineTransformOp","AlgorithmParameterGenerator","AlgorithmParameterGeneratorSpi","AlgorithmParameterSpec","AlgorithmParameters","AlgorithmParametersSpi","AllPermission","AlphaComposite","AlreadyBound","AlreadyBoundException","AlreadyBoundHelper","AlreadyBoundHolder","AlreadyConnectedException","AncestorEvent","AncestorListener","AnnotatedElement","Annotation","Annotation","AnnotationFormatError","AnnotationTypeMismatchException","Any","AnyHolder","AnySeqHelper","AnySeqHelper","AnySeqHolder","AppConfigurationEntry","AppConfigurationEntry.LoginModuleControlFlag","Appendable","Applet","AppletContext","AppletInitializer","AppletStub","ApplicationException","Arc2D","Arc2D.Double","Arc2D.Float","Area","AreaAveragingScaleFilter","ArithmeticException","Array","Array","ArrayBlockingQueue","ArrayIndexOutOfBoundsException","ArrayList","ArrayStoreException","ArrayType","Arrays","AssertionError","AsyncBoxView","AsynchronousCloseException","AtomicBoolean","AtomicInteger","AtomicIntegerArray","AtomicIntegerFieldUpdater","AtomicLong","AtomicLongArray","AtomicLongFieldUpdater","AtomicMarkableReference","AtomicReference","AtomicReferenceArray","AtomicReferenceFieldUpdater","AtomicStampedReference","Attr","Attribute","Attribute","Attribute","AttributeChangeNotification","AttributeChangeNotificationFilter","AttributeException","AttributeInUseException","AttributeList","AttributeList","AttributeList","AttributeListImpl","AttributeModificationException","AttributeNotFoundException","AttributeSet","AttributeSet","AttributeSet.CharacterAttribute","AttributeSet.ColorAttribute","AttributeSet.FontAttribute","AttributeSet.ParagraphAttribute","AttributeSetUtilities","AttributeValueExp","AttributedCharacterIterator","AttributedCharacterIterator.Attribute","AttributedString","Attributes","Attributes","Attributes","Attributes.Name","Attributes2","Attributes2Impl","AttributesImpl","AudioClip","AudioFileFormat","AudioFileFormat.Type","AudioFileReader","AudioFileWriter","AudioFormat","AudioFormat.Encoding","AudioInputStream","AudioPermission","AudioSystem","AuthPermission","AuthProvider","AuthenticationException","AuthenticationException","AuthenticationNotSupportedException","Authenticator","Authenticator.RequestorType","AuthorizeCallback","Autoscroll","BAD_CONTEXT","BAD_INV_ORDER","BAD_OPERATION","BAD_PARAM","BAD_POLICY","BAD_POLICY_TYPE","BAD_POLICY_VALUE","BAD_QOS","BAD_TYPECODE","BMPImageWriteParam","BackingStoreException","BadAttributeValueExpException","BadBinaryOpValueExpException","BadKind","BadLocationException","BadPaddingException","BadStringOperationException","BandCombineOp","BandedSampleModel","BaseRowSet","BasicArrowButton","BasicAttribute","BasicAttributes","BasicBorders","BasicBorders.ButtonBorder","BasicBorders.FieldBorder","BasicBorders.MarginBorder","BasicBorders.MenuBarBorder","BasicBorders.RadioButtonBorder","BasicBorders.RolloverButtonBorder","BasicBorders.SplitPaneBorder","BasicBorders.ToggleButtonBorder","BasicButtonListener","BasicButtonUI","BasicCheckBoxMenuItemUI","BasicCheckBoxUI","BasicColorChooserUI","BasicComboBoxEditor","BasicComboBoxEditor.UIResource","BasicComboBoxRenderer","BasicComboBoxRenderer.UIResource","BasicComboBoxUI","BasicComboPopup","BasicControl","BasicDesktopIconUI","BasicDesktopPaneUI","BasicDirectoryModel","BasicEditorPaneUI","BasicFileChooserUI","BasicFormattedTextFieldUI","BasicGraphicsUtils","BasicHTML","BasicIconFactory","BasicInternalFrameTitlePane","BasicInternalFrameUI","BasicLabelUI","BasicListUI","BasicLookAndFeel","BasicMenuBarUI","BasicMenuItemUI","BasicMenuUI","BasicOptionPaneUI","BasicOptionPaneUI.ButtonAreaLayout","BasicPanelUI","BasicPasswordFieldUI","BasicPermission","BasicPopupMenuSeparatorUI","BasicPopupMenuUI","BasicProgressBarUI","BasicRadioButtonMenuItemUI","BasicRadioButtonUI","BasicRootPaneUI","BasicScrollBarUI","BasicScrollPaneUI","BasicSeparatorUI","BasicSliderUI","BasicSpinnerUI","BasicSplitPaneDivider","BasicSplitPaneUI","BasicStroke","BasicTabbedPaneUI","BasicTableHeaderUI","BasicTableUI","BasicTextAreaUI","BasicTextFieldUI","BasicTextPaneUI","BasicTextUI","BasicTextUI.BasicCaret","BasicTextUI.BasicHighlighter","BasicToggleButtonUI","BasicToolBarSeparatorUI","BasicToolBarUI","BasicToolTipUI","BasicTreeUI","BasicViewportUI","BatchUpdateException","BeanContext","BeanContextChild","BeanContextChildComponentProxy","BeanContextChildSupport","BeanContextContainerProxy","BeanContextEvent","BeanContextMembershipEvent","BeanContextMembershipListener","BeanContextProxy","BeanContextServiceAvailableEvent","BeanContextServiceProvider","BeanContextServiceProviderBeanInfo","BeanContextServiceRevokedEvent","BeanContextServiceRevokedListener","BeanContextServices","BeanContextServicesListener","BeanContextServicesSupport","BeanContextServicesSupport.BCSSServiceProvider","BeanContextSupport","BeanContextSupport.BCSIterator","BeanDescriptor","BeanInfo","Beans","BevelBorder","Bidi","BigDecimal","BigInteger","BinaryRefAddr","BindException","Binding","Binding","BindingHelper","BindingHolder","BindingIterator","BindingIteratorHelper","BindingIteratorHolder","BindingIteratorOperations","BindingIteratorPOA","BindingListHelper","BindingListHolder","BindingType","BindingTypeHelper","BindingTypeHolder","BitSet","Blob","BlockView","BlockingQueue","Book","Boolean","BooleanControl","BooleanControl.Type","BooleanHolder","BooleanSeqHelper","BooleanSeqHolder","Border","BorderFactory","BorderLayout","BorderUIResource","BorderUIResource.BevelBorderUIResource","BorderUIResource.CompoundBorderUIResource","BorderUIResource.EmptyBorderUIResource","BorderUIResource.EtchedBorderUIResource","BorderUIResource.LineBorderUIResource","BorderUIResource.MatteBorderUIResource","BorderUIResource.TitledBorderUIResource","BoundedRangeModel","Bounds","Bounds","Box","Box.Filler","BoxLayout","BoxView","BoxedValueHelper","BreakIterator","BrokenBarrierException","Buffer","BufferCapabilities","BufferCapabilities.FlipContents","BufferOverflowException","BufferStrategy","BufferUnderflowException","BufferedImage","BufferedImageFilter","BufferedImageOp","BufferedInputStream","BufferedOutputStream","BufferedReader","BufferedWriter","Button","ButtonGroup","ButtonModel","ButtonUI","Byte","ByteArrayInputStream","ByteArrayOutputStream","ByteBuffer","ByteChannel","ByteHolder","ByteLookupTable","ByteOrder","CDATASection","CMMException","CODESET_INCOMPATIBLE","COMM_FAILURE","CRC32","CRL","CRLException","CRLSelector","CSS","CSS.Attribute","CTX_RESTRICT_SCOPE","CacheRequest","CacheResponse","CachedRowSet","Calendar","Callable","CallableStatement","Callback","CallbackHandler","CancelablePrintJob","CancellationException","CancelledKeyException","CannotProceed","CannotProceedException","CannotProceedHelper","CannotProceedHolder","CannotRedoException","CannotUndoException","Canvas","CardLayout","Caret","CaretEvent","CaretListener","CellEditor","CellEditorListener","CellRendererPane","CertPath","CertPath.CertPathRep","CertPathBuilder","CertPathBuilderException","CertPathBuilderResult","CertPathBuilderSpi","CertPathParameters","CertPathTrustManagerParameters","CertPathValidator","CertPathValidatorException","CertPathValidatorResult","CertPathValidatorSpi","CertSelector","CertStore","CertStoreException","CertStoreParameters","CertStoreSpi","Certificate","Certificate","Certificate","Certificate.CertificateRep","CertificateEncodingException","CertificateEncodingException","CertificateException","CertificateException","CertificateExpiredException","CertificateExpiredException","CertificateFactory","CertificateFactorySpi","CertificateNotYetValidException","CertificateNotYetValidException","CertificateParsingException","CertificateParsingException","ChangeEvent","ChangeListener","ChangedCharSetException","Channel","ChannelBinding","Channels","CharArrayReader","CharArrayWriter","CharBuffer","CharConversionException","CharHolder","CharSeqHelper","CharSeqHolder","CharSequence","Character","Character.Subset","Character.UnicodeBlock","CharacterCodingException","CharacterData","CharacterIterator","Charset","CharsetDecoder","CharsetEncoder","CharsetProvider","Checkbox","CheckboxGroup","CheckboxMenuItem","CheckedInputStream","CheckedOutputStream","Checksum","Choice","ChoiceCallback","ChoiceFormat","Chromaticity","Cipher","CipherInputStream","CipherOutputStream","CipherSpi","Class","ClassCastException","ClassCircularityError","ClassDefinition","ClassDesc","ClassFileTransformer","ClassFormatError","ClassLoader","ClassLoaderRepository","ClassLoadingMXBean","ClassNotFoundException","ClientRequestInfo","ClientRequestInfoOperations","ClientRequestInterceptor","ClientRequestInterceptorOperations","Clip","Clipboard","ClipboardOwner","Clob","CloneNotSupportedException","Cloneable","Closeable","ClosedByInterruptException","ClosedChannelException","ClosedSelectorException","CodeSets","CodeSigner","CodeSource","Codec","CodecFactory","CodecFactoryHelper","CodecFactoryOperations","CodecOperations","CoderMalfunctionError","CoderResult","CodingErrorAction","CollationElementIterator","CollationKey","Collator","Collection","CollectionCertStoreParameters","Collections","Color","ColorChooserComponentFactory","ColorChooserUI","ColorConvertOp","ColorModel","ColorSelectionModel","ColorSpace","ColorSupported","ColorType","ColorUIResource","ComboBoxEditor","ComboBoxModel","ComboBoxUI","ComboPopup","Comment","CommunicationException","Comparable","Comparator","CompilationMXBean","Compiler","CompletionService","CompletionStatus","CompletionStatusHelper","Component","ComponentAdapter","ComponentColorModel","ComponentEvent","ComponentIdHelper","ComponentInputMap","ComponentInputMapUIResource","ComponentListener","ComponentOrientation","ComponentSampleModel","ComponentUI","ComponentView","Composite","CompositeContext","CompositeData","CompositeDataSupport","CompositeName","CompositeType","CompositeView","CompoundBorder","CompoundControl","CompoundControl.Type","CompoundEdit","CompoundName","Compression","ConcurrentHashMap","ConcurrentLinkedQueue","ConcurrentMap","ConcurrentModificationException","Condition","Configuration","ConfigurationException","ConfirmationCallback","ConnectException","ConnectException","ConnectIOException","Connection","ConnectionEvent","ConnectionEventListener","ConnectionPendingException","ConnectionPoolDataSource","ConsoleHandler","Constructor","Container","ContainerAdapter","ContainerEvent","ContainerListener","ContainerOrderFocusTraversalPolicy","ContentHandler","ContentHandler","ContentHandlerFactory","ContentModel","Context","Context","ContextList","ContextNotEmptyException","ContextualRenderedImageFactory","Control","Control","Control.Type","ControlFactory","ControllerEventListener","ConvolveOp","CookieHandler","CookieHolder","Copies","CopiesSupported","CopyOnWriteArrayList","CopyOnWriteArraySet","CountDownLatch","CounterMonitor","CounterMonitorMBean","CredentialException","CredentialExpiredException","CredentialNotFoundException","CropImageFilter","CubicCurve2D","CubicCurve2D.Double","CubicCurve2D.Float","Currency","Current","Current","Current","CurrentHelper","CurrentHelper","CurrentHelper","CurrentHolder","CurrentOperations","CurrentOperations","CurrentOperations","Cursor","CustomMarshal","CustomValue","Customizer","CyclicBarrier","DATA_CONVERSION","DESKeySpec","DESedeKeySpec","DGC","DHGenParameterSpec","DHKey","DHParameterSpec","DHPrivateKey","DHPrivateKeySpec","DHPublicKey","DHPublicKeySpec","DISCARDING","DOMConfiguration","DOMError","DOMErrorHandler","DOMException","DOMImplementation","DOMImplementationLS","DOMImplementationList","DOMImplementationRegistry","DOMImplementationSource","DOMLocator","DOMLocator","DOMResult","DOMSource","DOMStringList","DSAKey","DSAKeyPairGenerator","DSAParameterSpec","DSAParams","DSAPrivateKey","DSAPrivateKeySpec","DSAPublicKey","DSAPublicKeySpec","DTD","DTDConstants","DTDHandler","DataBuffer","DataBufferByte","DataBufferDouble","DataBufferFloat","DataBufferInt","DataBufferShort","DataBufferUShort","DataFlavor","DataFormatException","DataInput","DataInputStream","DataInputStream","DataLine","DataLine.Info","DataOutput","DataOutputStream","DataOutputStream","DataSource","DataTruncation","DatabaseMetaData","DatagramChannel","DatagramPacket","DatagramSocket","DatagramSocketImpl","DatagramSocketImplFactory","DatatypeConfigurationException","DatatypeConstants","DatatypeConstants.Field","DatatypeFactory","Date","Date","DateFormat","DateFormat.Field","DateFormatSymbols","DateFormatter","DateTimeAtCompleted","DateTimeAtCreation","DateTimeAtProcessing","DateTimeSyntax","DebugGraphics","DecimalFormat","DecimalFormatSymbols","DeclHandler","DefaultBoundedRangeModel","DefaultButtonModel","DefaultCaret","DefaultCellEditor","DefaultColorSelectionModel","DefaultComboBoxModel","DefaultDesktopManager","DefaultEditorKit","DefaultEditorKit.BeepAction","DefaultEditorKit.CopyAction","DefaultEditorKit.CutAction","DefaultEditorKit.DefaultKeyTypedAction","DefaultEditorKit.InsertBreakAction","DefaultEditorKit.InsertContentAction","DefaultEditorKit.InsertTabAction","DefaultEditorKit.PasteAction","DefaultFocusManager","DefaultFocusTraversalPolicy","DefaultFormatter","DefaultFormatterFactory","DefaultHandler","DefaultHandler2","DefaultHighlighter","DefaultHighlighter.DefaultHighlightPainter","DefaultKeyboardFocusManager","DefaultListCellRenderer","DefaultListCellRenderer.UIResource","DefaultListModel","DefaultListSelectionModel","DefaultLoaderRepository","DefaultLoaderRepository","DefaultMenuLayout","DefaultMetalTheme","DefaultMutableTreeNode","DefaultPersistenceDelegate","DefaultSingleSelectionModel","DefaultStyledDocument","DefaultStyledDocument.AttributeUndoableEdit","DefaultStyledDocument.ElementSpec","DefaultTableCellRenderer","DefaultTableCellRenderer.UIResource","DefaultTableColumnModel","DefaultTableModel","DefaultTextUI","DefaultTreeCellEditor","DefaultTreeCellRenderer","DefaultTreeModel","DefaultTreeSelectionModel","DefinitionKind","DefinitionKindHelper","Deflater","DeflaterOutputStream","DelayQueue","Delayed","Delegate","Delegate","Delegate","DelegationPermission","Deprecated","Descriptor","DescriptorAccess","DescriptorSupport","DesignMode","DesktopIconUI","DesktopManager","DesktopPaneUI","Destination","DestroyFailedException","Destroyable","Dialog","Dictionary","DigestException","DigestInputStream","DigestOutputStream","Dimension","Dimension2D","DimensionUIResource","DirContext","DirObjectFactory","DirStateFactory","DirStateFactory.Result","DirectColorModel","DirectoryManager","DisplayMode","DnDConstants","Doc","DocAttribute","DocAttributeSet","DocFlavor","DocFlavor.BYTE_ARRAY","DocFlavor.CHAR_ARRAY","DocFlavor.INPUT_STREAM","DocFlavor.READER","DocFlavor.SERVICE_FORMATTED","DocFlavor.STRING","DocFlavor.URL","DocPrintJob","Document","Document","DocumentBuilder","DocumentBuilderFactory","DocumentEvent","DocumentEvent.ElementChange","DocumentEvent.EventType","DocumentFilter","DocumentFilter.FilterBypass","DocumentFragment","DocumentHandler","DocumentListener","DocumentName","DocumentParser","DocumentType","Documented","DomainCombiner","DomainManager","DomainManagerOperations","Double","DoubleBuffer","DoubleHolder","DoubleSeqHelper","DoubleSeqHolder","DragGestureEvent","DragGestureListener","DragGestureRecognizer","DragSource","DragSourceAdapter","DragSourceContext","DragSourceDragEvent","DragSourceDropEvent","DragSourceEvent","DragSourceListener","DragSourceMotionListener","Driver","DriverManager","DriverPropertyInfo","DropTarget","DropTarget.DropTargetAutoScroller","DropTargetAdapter","DropTargetContext","DropTargetDragEvent","DropTargetDropEvent","DropTargetEvent","DropTargetListener","DuplicateFormatFlagsException","DuplicateName","DuplicateNameHelper","Duration","DynAny","DynAny","DynAnyFactory","DynAnyFactoryHelper","DynAnyFactoryOperations","DynAnyHelper","DynAnyOperations","DynAnySeqHelper","DynArray","DynArray","DynArrayHelper","DynArrayOperations","DynEnum","DynEnum","DynEnumHelper","DynEnumOperations","DynFixed","DynFixed","DynFixedHelper","DynFixedOperations","DynSequence","DynSequence","DynSequenceHelper","DynSequenceOperations","DynStruct","DynStruct","DynStructHelper","DynStructOperations","DynUnion","DynUnion","DynUnionHelper","DynUnionOperations","DynValue","DynValue","DynValueBox","DynValueBoxOperations","DynValueCommon","DynValueCommonOperations","DynValueHelper","DynValueOperations","DynamicImplementation","DynamicImplementation","DynamicMBean","ECField","ECFieldF2m","ECFieldFp","ECGenParameterSpec","ECKey","ECParameterSpec","ECPoint","ECPrivateKey","ECPrivateKeySpec","ECPublicKey","ECPublicKeySpec","ENCODING_CDR_ENCAPS","EOFException","EditorKit","Element","Element","Element","ElementIterator","ElementType","Ellipse2D","Ellipse2D.Double","Ellipse2D.Float","EllipticCurve","EmptyBorder","EmptyStackException","EncodedKeySpec","Encoder","Encoding","EncryptedPrivateKeyInfo","Entity","Entity","EntityReference","EntityResolver","EntityResolver2","Enum","EnumConstantNotPresentException","EnumControl","EnumControl.Type","EnumMap","EnumSet","EnumSyntax","Enumeration","Environment","Error","ErrorHandler","ErrorListener","ErrorManager","EtchedBorder","Event","EventContext","EventDirContext","EventHandler","EventListener","EventListenerList","EventListenerProxy","EventObject","EventQueue","EventSetDescriptor","Exception","ExceptionDetailMessage","ExceptionInInitializerError","ExceptionList","ExceptionListener","Exchanger","ExecutionException","Executor","ExecutorCompletionService","ExecutorService","Executors","ExemptionMechanism","ExemptionMechanismException","ExemptionMechanismSpi","ExpandVetoException","ExportException","Expression","ExtendedRequest","ExtendedResponse","Externalizable","FREE_MEM","FactoryConfigurationError","FailedLoginException","FeatureDescriptor","Fidelity","Field","FieldNameHelper","FieldNameHelper","FieldPosition","FieldView","File","FileCacheImageInputStream","FileCacheImageOutputStream","FileChannel","FileChannel.MapMode","FileChooserUI","FileDescriptor","FileDialog","FileFilter","FileFilter","FileHandler","FileImageInputStream","FileImageOutputStream","FileInputStream","FileLock","FileLockInterruptionException","FileNameMap","FileNotFoundException","FileOutputStream","FilePermission","FileReader","FileSystemView","FileView","FileWriter","FilenameFilter","Filter","FilterInputStream","FilterOutputStream","FilterReader","FilterWriter","FilteredImageSource","FilteredRowSet","Finishings","FixedHeightLayoutCache","FixedHolder","FlatteningPathIterator","FlavorEvent","FlavorException","FlavorListener","FlavorMap","FlavorTable","Float","FloatBuffer","FloatControl","FloatControl.Type","FloatHolder","FloatSeqHelper","FloatSeqHolder","FlowLayout","FlowView","FlowView.FlowStrategy","Flushable","FocusAdapter","FocusEvent","FocusListener","FocusManager","FocusTraversalPolicy","Font","FontFormatException","FontMetrics","FontRenderContext","FontUIResource","FormSubmitEvent","FormSubmitEvent.MethodType","FormView","Format","Format.Field","FormatConversionProvider","FormatFlagsConversionMismatchException","FormatMismatch","FormatMismatchHelper","Formattable","FormattableFlags","Formatter","Formatter","FormatterClosedException","ForwardRequest","ForwardRequest","ForwardRequestHelper","ForwardRequestHelper","Frame","Future","FutureTask","GSSContext","GSSCredential","GSSException","GSSManager","GSSName","GZIPInputStream","GZIPOutputStream","GapContent","GarbageCollectorMXBean","GatheringByteChannel","GaugeMonitor","GaugeMonitorMBean","GeneralPath","GeneralSecurityException","GenericArrayType","GenericDeclaration","GenericSignatureFormatError","GlyphJustificationInfo","GlyphMetrics","GlyphVector","GlyphView","GlyphView.GlyphPainter","GradientPaint","GraphicAttribute","Graphics","Graphics2D","GraphicsConfigTemplate","GraphicsConfiguration","GraphicsDevice","GraphicsEnvironment","GrayFilter","GregorianCalendar","GridBagConstraints","GridBagLayout","GridLayout","Group","Guard","GuardedObject","HOLDING","HTML","HTML.Attribute","HTML.Tag","HTML.UnknownTag","HTMLDocument","HTMLDocument.Iterator","HTMLEditorKit","HTMLEditorKit.HTMLFactory","HTMLEditorKit.HTMLTextAction","HTMLEditorKit.InsertHTMLTextAction","HTMLEditorKit.LinkController","HTMLEditorKit.Parser","HTMLEditorKit.ParserCallback","HTMLFrameHyperlinkEvent","HTMLWriter","Handler","HandlerBase","HandshakeCompletedEvent","HandshakeCompletedListener","HasControls","HashAttributeSet","HashDocAttributeSet","HashMap","HashPrintJobAttributeSet","HashPrintRequestAttributeSet","HashPrintServiceAttributeSet","HashSet","Hashtable","HeadlessException","HierarchyBoundsAdapter","HierarchyBoundsListener","HierarchyEvent","HierarchyListener","Highlighter","Highlighter.Highlight","Highlighter.HighlightPainter","HostnameVerifier","HttpRetryException","HttpURLConnection","HttpsURLConnection","HyperlinkEvent","HyperlinkEvent.EventType","HyperlinkListener","ICC_ColorSpace","ICC_Profile","ICC_ProfileGray","ICC_ProfileRGB","IDLEntity","IDLType","IDLTypeHelper","IDLTypeOperations","ID_ASSIGNMENT_POLICY_ID","ID_UNIQUENESS_POLICY_ID","IIOByteBuffer","IIOException","IIOImage","IIOInvalidTreeException","IIOMetadata","IIOMetadataController","IIOMetadataFormat","IIOMetadataFormatImpl","IIOMetadataNode","IIOParam","IIOParamController","IIOReadProgressListener","IIOReadUpdateListener","IIOReadWarningListener","IIORegistry","IIOServiceProvider","IIOWriteProgressListener","IIOWriteWarningListener","IMPLICIT_ACTIVATION_POLICY_ID","IMP_LIMIT","INACTIVE","INITIALIZE","INTERNAL","INTF_REPOS","INVALID_ACTIVITY","INVALID_TRANSACTION","INV_FLAG","INV_IDENT","INV_OBJREF","INV_POLICY","IOException","IOR","IORHelper","IORHolder","IORInfo","IORInfoOperations","IORInterceptor","IORInterceptorOperations","IORInterceptor_3_0","IORInterceptor_3_0Helper","IORInterceptor_3_0Holder","IORInterceptor_3_0Operations","IRObject","IRObjectOperations","Icon","IconUIResource","IconView","IdAssignmentPolicy","IdAssignmentPolicyOperations","IdAssignmentPolicyValue","IdUniquenessPolicy","IdUniquenessPolicyOperations","IdUniquenessPolicyValue","IdentifierHelper","Identity","IdentityHashMap","IdentityScope","IllegalAccessError","IllegalAccessException","IllegalArgumentException","IllegalBlockSizeException","IllegalBlockingModeException","IllegalCharsetNameException","IllegalClassFormatException","IllegalComponentStateException","IllegalFormatCodePointException","IllegalFormatConversionException","IllegalFormatException","IllegalFormatFlagsException","IllegalFormatPrecisionException","IllegalFormatWidthException","IllegalMonitorStateException","IllegalPathStateException","IllegalSelectorException","IllegalStateException","IllegalThreadStateException","Image","ImageCapabilities","ImageConsumer","ImageFilter","ImageGraphicAttribute","ImageIO","ImageIcon","ImageInputStream","ImageInputStreamImpl","ImageInputStreamSpi","ImageObserver","ImageOutputStream","ImageOutputStreamImpl","ImageOutputStreamSpi","ImageProducer","ImageReadParam","ImageReader","ImageReaderSpi","ImageReaderWriterSpi","ImageTranscoder","ImageTranscoderSpi","ImageTypeSpecifier","ImageView","ImageWriteParam","ImageWriter","ImageWriterSpi","ImagingOpException","ImplicitActivationPolicy","ImplicitActivationPolicyOperations","ImplicitActivationPolicyValue","IncompatibleClassChangeError","IncompleteAnnotationException","InconsistentTypeCode","InconsistentTypeCode","InconsistentTypeCodeHelper","IndexColorModel","IndexOutOfBoundsException","IndexedPropertyChangeEvent","IndexedPropertyDescriptor","IndirectionException","Inet4Address","Inet6Address","InetAddress","InetSocketAddress","Inflater","InflaterInputStream","InheritableThreadLocal","Inherited","InitialContext","InitialContextFactory","InitialContextFactoryBuilder","InitialDirContext","InitialLdapContext","InlineView","InputContext","InputEvent","InputMap","InputMapUIResource","InputMethod","InputMethodContext","InputMethodDescriptor","InputMethodEvent","InputMethodHighlight","InputMethodListener","InputMethodRequests","InputMismatchException","InputSource","InputStream","InputStream","InputStream","InputStreamReader","InputSubset","InputVerifier","Insets","InsetsUIResource","InstanceAlreadyExistsException","InstanceNotFoundException","InstantiationError","InstantiationException","Instrument","Instrumentation","InsufficientResourcesException","IntBuffer","IntHolder","Integer","IntegerSyntax","Interceptor","InterceptorOperations","InternalError","InternalFrameAdapter","InternalFrameEvent","InternalFrameFocusTraversalPolicy","InternalFrameListener","InternalFrameUI","InternationalFormatter","InterruptedException","InterruptedIOException","InterruptedNamingException","InterruptibleChannel","IntrospectionException","IntrospectionException","Introspector","Invalid","InvalidActivityException","InvalidAddress","InvalidAddressHelper","InvalidAddressHolder","InvalidAlgorithmParameterException","InvalidApplicationException","InvalidAttributeIdentifierException","InvalidAttributeValueException","InvalidAttributeValueException","InvalidAttributesException","InvalidClassException","InvalidDnDOperationException","InvalidKeyException","InvalidKeyException","InvalidKeySpecException","InvalidMarkException","InvalidMidiDataException","InvalidName","InvalidName","InvalidName","InvalidNameException","InvalidNameHelper","InvalidNameHelper","InvalidNameHolder","InvalidObjectException","InvalidOpenTypeException","InvalidParameterException","InvalidParameterSpecException","InvalidPolicy","InvalidPolicyHelper","InvalidPreferencesFormatException","InvalidPropertiesFormatException","InvalidRelationIdException","InvalidRelationServiceException","InvalidRelationTypeException","InvalidRoleInfoException","InvalidRoleValueException","InvalidSearchControlsException","InvalidSearchFilterException","InvalidSeq","InvalidSlot","InvalidSlotHelper","InvalidTargetObjectTypeException","InvalidTransactionException","InvalidTypeForEncoding","InvalidTypeForEncodingHelper","InvalidValue","InvalidValue","InvalidValueHelper","InvocationEvent","InvocationHandler","InvocationTargetException","InvokeHandler","IstringHelper","ItemEvent","ItemListener","ItemSelectable","Iterable","Iterator","IvParameterSpec","JApplet","JButton","JCheckBox","JCheckBoxMenuItem","JColorChooser","JComboBox","JComboBox.KeySelectionManager","JComponent","JDesktopPane","JDialog","JEditorPane","JFileChooser","JFormattedTextField","JFormattedTextField.AbstractFormatter","JFormattedTextField.AbstractFormatterFactory","JFrame","JInternalFrame","JInternalFrame.JDesktopIcon","JLabel","JLayeredPane","JList","JMException","JMRuntimeException","JMXAuthenticator","JMXConnectionNotification","JMXConnector","JMXConnectorFactory","JMXConnectorProvider","JMXConnectorServer","JMXConnectorServerFactory","JMXConnectorServerMBean","JMXConnectorServerProvider","JMXPrincipal","JMXProviderException","JMXServerErrorException","JMXServiceURL","JMenu","JMenuBar","JMenuItem","JOptionPane","JPEGHuffmanTable","JPEGImageReadParam","JPEGImageWriteParam","JPEGQTable","JPanel","JPasswordField","JPopupMenu","JPopupMenu.Separator","JProgressBar","JRadioButton","JRadioButtonMenuItem","JRootPane","JScrollBar","JScrollPane","JSeparator","JSlider","JSpinner","JSpinner.DateEditor","JSpinner.DefaultEditor","JSpinner.ListEditor","JSpinner.NumberEditor","JSplitPane","JTabbedPane","JTable","JTable.PrintMode","JTableHeader","JTextArea","JTextComponent","JTextComponent.KeyBinding","JTextField","JTextPane","JToggleButton","JToggleButton.ToggleButtonModel","JToolBar","JToolBar.Separator","JToolTip","JTree","JTree.DynamicUtilTreeNode","JTree.EmptySelectionModel","JViewport","JWindow","JarEntry","JarException","JarFile","JarInputStream","JarOutputStream","JarURLConnection","JdbcRowSet","JobAttributes","JobAttributes.DefaultSelectionType","JobAttributes.DestinationType","JobAttributes.DialogType","JobAttributes.MultipleDocumentHandlingType","JobAttributes.SidesType","JobHoldUntil","JobImpressions","JobImpressionsCompleted","JobImpressionsSupported","JobKOctets","JobKOctetsProcessed","JobKOctetsSupported","JobMediaSheets","JobMediaSheetsCompleted","JobMediaSheetsSupported","JobMessageFromOperator","JobName","JobOriginatingUserName","JobPriority","JobPrioritySupported","JobSheets","JobState","JobStateReason","JobStateReasons","JoinRowSet","Joinable","KerberosKey","KerberosPrincipal","KerberosTicket","Kernel","Key","KeyAdapter","KeyAgreement","KeyAgreementSpi","KeyAlreadyExistsException","KeyEvent","KeyEventDispatcher","KeyEventPostProcessor","KeyException","KeyFactory","KeyFactorySpi","KeyGenerator","KeyGeneratorSpi","KeyListener","KeyManagementException","KeyManager","KeyManagerFactory","KeyManagerFactorySpi","KeyPair","KeyPairGenerator","KeyPairGeneratorSpi","KeyRep","KeyRep.Type","KeySpec","KeyStore","KeyStore.Builder","KeyStore.CallbackHandlerProtection","KeyStore.Entry","KeyStore.LoadStoreParameter","KeyStore.PasswordProtection","KeyStore.PrivateKeyEntry","KeyStore.ProtectionParameter","KeyStore.SecretKeyEntry","KeyStore.TrustedCertificateEntry","KeyStoreBuilderParameters","KeyStoreException","KeyStoreSpi","KeyStroke","KeyboardFocusManager","Keymap","LDAPCertStoreParameters","LIFESPAN_POLICY_ID","LOCATION_FORWARD","LSException","LSInput","LSLoadEvent","LSOutput","LSParser","LSParserFilter","LSProgressEvent","LSResourceResolver","LSSerializer","LSSerializerFilter","Label","LabelUI","LabelView","LanguageCallback","LastOwnerException","LayeredHighlighter","LayeredHighlighter.LayerPainter","LayoutFocusTraversalPolicy","LayoutManager","LayoutManager2","LayoutQueue","LdapContext","LdapName","LdapReferralException","Lease","Level","LexicalHandler","LifespanPolicy","LifespanPolicyOperations","LifespanPolicyValue","LimitExceededException","Line","Line.Info","Line2D","Line2D.Double","Line2D.Float","LineBorder","LineBreakMeasurer","LineEvent","LineEvent.Type","LineListener","LineMetrics","LineNumberInputStream","LineNumberReader","LineUnavailableException","LinkException","LinkLoopException","LinkRef","LinkageError","LinkedBlockingQueue","LinkedHashMap","LinkedHashSet","LinkedList","List","List","ListCellRenderer","ListDataEvent","ListDataListener","ListIterator","ListModel","ListResourceBundle","ListSelectionEvent","ListSelectionListener","ListSelectionModel","ListUI","ListView","ListenerNotFoundException","LoaderHandler","LocalObject","Locale","LocateRegistry","Locator","Locator2","Locator2Impl","LocatorImpl","Lock","LockSupport","LogManager","LogRecord","LogStream","Logger","LoggingMXBean","LoggingPermission","LoginContext","LoginException","LoginModule","Long","LongBuffer","LongHolder","LongLongSeqHelper","LongLongSeqHolder","LongSeqHelper","LongSeqHolder","LookAndFeel","LookupOp","LookupTable","MARSHAL","MBeanAttributeInfo","MBeanConstructorInfo","MBeanException","MBeanFeatureInfo","MBeanInfo","MBeanNotificationInfo","MBeanOperationInfo","MBeanParameterInfo","MBeanPermission","MBeanRegistration","MBeanRegistrationException","MBeanServer","MBeanServerBuilder","MBeanServerConnection","MBeanServerDelegate","MBeanServerDelegateMBean","MBeanServerFactory","MBeanServerForwarder","MBeanServerInvocationHandler","MBeanServerNotification","MBeanServerNotificationFilter","MBeanServerPermission","MBeanTrustPermission","MGF1ParameterSpec","MLet","MLetMBean","Mac","MacSpi","MalformedInputException","MalformedLinkException","MalformedObjectNameException","MalformedParameterizedTypeException","MalformedURLException","ManageReferralControl","ManagementFactory","ManagementPermission","ManagerFactoryParameters","Manifest","Map","Map.Entry","MappedByteBuffer","MarshalException","MarshalledObject","MaskFormatter","MatchResult","Matcher","Math","MathContext","MatteBorder","Media","MediaName","MediaPrintableArea","MediaSize","MediaSize.Engineering","MediaSize.ISO","MediaSize.JIS","MediaSize.NA","MediaSize.Other","MediaSizeName","MediaTracker","MediaTray","Member","MemoryCacheImageInputStream","MemoryCacheImageOutputStream","MemoryHandler","MemoryImageSource","MemoryMXBean","MemoryManagerMXBean","MemoryNotificationInfo","MemoryPoolMXBean","MemoryType","MemoryUsage","Menu","MenuBar","MenuBarUI","MenuComponent","MenuContainer","MenuDragMouseEvent","MenuDragMouseListener","MenuElement","MenuEvent","MenuItem","MenuItemUI","MenuKeyEvent","MenuKeyListener","MenuListener","MenuSelectionManager","MenuShortcut","MessageDigest","MessageDigestSpi","MessageFormat","MessageFormat.Field","MessageProp","MetaEventListener","MetaMessage","MetalBorders","MetalBorders.ButtonBorder","MetalBorders.Flush3DBorder","MetalBorders.InternalFrameBorder","MetalBorders.MenuBarBorder","MetalBorders.MenuItemBorder","MetalBorders.OptionDialogBorder","MetalBorders.PaletteBorder","MetalBorders.PopupMenuBorder","MetalBorders.RolloverButtonBorder","MetalBorders.ScrollPaneBorder","MetalBorders.TableHeaderBorder","MetalBorders.TextFieldBorder","MetalBorders.ToggleButtonBorder","MetalBorders.ToolBarBorder","MetalButtonUI","MetalCheckBoxIcon","MetalCheckBoxUI","MetalComboBoxButton","MetalComboBoxEditor","MetalComboBoxEditor.UIResource","MetalComboBoxIcon","MetalComboBoxUI","MetalDesktopIconUI","MetalFileChooserUI","MetalIconFactory","MetalIconFactory.FileIcon16","MetalIconFactory.FolderIcon16","MetalIconFactory.PaletteCloseIcon","MetalIconFactory.TreeControlIcon","MetalIconFactory.TreeFolderIcon","MetalIconFactory.TreeLeafIcon","MetalInternalFrameTitlePane","MetalInternalFrameUI","MetalLabelUI","MetalLookAndFeel","MetalMenuBarUI","MetalPopupMenuSeparatorUI","MetalProgressBarUI","MetalRadioButtonUI","MetalRootPaneUI","MetalScrollBarUI","MetalScrollButton","MetalScrollPaneUI","MetalSeparatorUI","MetalSliderUI","MetalSplitPaneUI","MetalTabbedPaneUI","MetalTextFieldUI","MetalTheme","MetalToggleButtonUI","MetalToolBarUI","MetalToolTipUI","MetalTreeUI","Method","MethodDescriptor","MidiChannel","MidiDevice","MidiDevice.Info","MidiDeviceProvider","MidiEvent","MidiFileFormat","MidiFileReader","MidiFileWriter","MidiMessage","MidiSystem","MidiUnavailableException","MimeTypeParseException","MinimalHTMLWriter","MissingFormatArgumentException","MissingFormatWidthException","MissingResourceException","Mixer","Mixer.Info","MixerProvider","ModelMBean","ModelMBeanAttributeInfo","ModelMBeanConstructorInfo","ModelMBeanInfo","ModelMBeanInfoSupport","ModelMBeanNotificationBroadcaster","ModelMBeanNotificationInfo","ModelMBeanOperationInfo","ModificationItem","Modifier","Monitor","MonitorMBean","MonitorNotification","MonitorSettingException","MouseAdapter","MouseDragGestureRecognizer","MouseEvent","MouseInfo","MouseInputAdapter","MouseInputListener","MouseListener","MouseMotionAdapter","MouseMotionListener","MouseWheelEvent","MouseWheelListener","MultiButtonUI","MultiColorChooserUI","MultiComboBoxUI","MultiDesktopIconUI","MultiDesktopPaneUI","MultiDoc","MultiDocPrintJob","MultiDocPrintService","MultiFileChooserUI","MultiInternalFrameUI","MultiLabelUI","MultiListUI","MultiLookAndFeel","MultiMenuBarUI","MultiMenuItemUI","MultiOptionPaneUI","MultiPanelUI","MultiPixelPackedSampleModel","MultiPopupMenuUI","MultiProgressBarUI","MultiRootPaneUI","MultiScrollBarUI","MultiScrollPaneUI","MultiSeparatorUI","MultiSliderUI","MultiSpinnerUI","MultiSplitPaneUI","MultiTabbedPaneUI","MultiTableHeaderUI","MultiTableUI","MultiTextUI","MultiToolBarUI","MultiToolTipUI","MultiTreeUI","MultiViewportUI","MulticastSocket","MultipleComponentProfileHelper","MultipleComponentProfileHolder","MultipleDocumentHandling","MultipleMaster","MutableAttributeSet","MutableComboBoxModel","MutableTreeNode","NON_EXISTENT","NO_IMPLEMENT","NO_MEMORY","NO_PERMISSION","NO_RESOURCES","NO_RESPONSE","NVList","Name","NameAlreadyBoundException","NameCallback","NameClassPair","NameComponent","NameComponentHelper","NameComponentHolder","NameDynAnyPair","NameDynAnyPairHelper","NameDynAnyPairSeqHelper","NameHelper","NameHolder","NameList","NameNotFoundException","NameParser","NameValuePair","NameValuePair","NameValuePairHelper","NameValuePairHelper","NameValuePairSeqHelper","NamedNodeMap","NamedValue","NamespaceChangeListener","NamespaceContext","NamespaceSupport","Naming","NamingContext","NamingContextExt","NamingContextExtHelper","NamingContextExtHolder","NamingContextExtOperations","NamingContextExtPOA","NamingContextHelper","NamingContextHolder","NamingContextOperations","NamingContextPOA","NamingEnumeration","NamingEvent","NamingException","NamingExceptionEvent","NamingListener","NamingManager","NamingSecurityException","NavigationFilter","NavigationFilter.FilterBypass","NegativeArraySizeException","NetPermission","NetworkInterface","NoClassDefFoundError","NoConnectionPendingException","NoContext","NoContextHelper","NoInitialContextException","NoPermissionException","NoRouteToHostException","NoServant","NoServantHelper","NoSuchAlgorithmException","NoSuchAttributeException","NoSuchElementException","NoSuchFieldError","NoSuchFieldException","NoSuchMethodError","NoSuchMethodException","NoSuchObjectException","NoSuchPaddingException","NoSuchProviderException","Node","NodeChangeEvent","NodeChangeListener","NodeList","NonReadableChannelException","NonWritableChannelException","NoninvertibleTransformException","NotActiveException","NotBoundException","NotCompliantMBeanException","NotContextException","NotEmpty","NotEmptyHelper","NotEmptyHolder","NotFound","NotFoundHelper","NotFoundHolder","NotFoundReason","NotFoundReasonHelper","NotFoundReasonHolder","NotOwnerException","NotSerializableException","NotYetBoundException","NotYetConnectedException","Notation","Notification","NotificationBroadcaster","NotificationBroadcasterSupport","NotificationEmitter","NotificationFilter","NotificationFilterSupport","NotificationListener","NotificationResult","NullCipher","NullPointerException","Number","NumberFormat","NumberFormat.Field","NumberFormatException","NumberFormatter","NumberOfDocuments","NumberOfInterveningJobs","NumberUp","NumberUpSupported","NumericShaper","OAEPParameterSpec","OBJECT_NOT_EXIST","OBJ_ADAPTER","OMGVMCID","ORB","ORB","ORBIdHelper","ORBInitInfo","ORBInitInfoOperations","ORBInitializer","ORBInitializerOperations","ObjID","Object","Object","ObjectAlreadyActive","ObjectAlreadyActiveHelper","ObjectChangeListener","ObjectFactory","ObjectFactoryBuilder","ObjectHelper","ObjectHolder","ObjectIdHelper","ObjectIdHelper","ObjectImpl","ObjectImpl","ObjectInput","ObjectInputStream","ObjectInputStream.GetField","ObjectInputValidation","ObjectInstance","ObjectName","ObjectNotActive","ObjectNotActiveHelper","ObjectOutput","ObjectOutputStream","ObjectOutputStream.PutField","ObjectReferenceFactory","ObjectReferenceFactoryHelper","ObjectReferenceFactoryHolder","ObjectReferenceTemplate","ObjectReferenceTemplateHelper","ObjectReferenceTemplateHolder","ObjectReferenceTemplateSeqHelper","ObjectReferenceTemplateSeqHolder","ObjectStreamClass","ObjectStreamConstants","ObjectStreamException","ObjectStreamField","ObjectView","Observable","Observer","OceanTheme","OctetSeqHelper","OctetSeqHolder","Oid","OpenDataException","OpenMBeanAttributeInfo","OpenMBeanAttributeInfoSupport","OpenMBeanConstructorInfo","OpenMBeanConstructorInfoSupport","OpenMBeanInfo","OpenMBeanInfoSupport","OpenMBeanOperationInfo","OpenMBeanOperationInfoSupport","OpenMBeanParameterInfo","OpenMBeanParameterInfoSupport","OpenType","OpenType","OperatingSystemMXBean","Operation","OperationNotSupportedException","OperationsException","Option","OptionPaneUI","OptionalDataException","OrientationRequested","OutOfMemoryError","OutputDeviceAssigned","OutputKeys","OutputStream","OutputStream","OutputStream","OutputStreamWriter","OverlappingFileLockException","OverlayLayout","Override","Owner","PBEKey","PBEKeySpec","PBEParameterSpec","PDLOverrideSupported","PERSIST_STORE","PKCS8EncodedKeySpec","PKIXBuilderParameters","PKIXCertPathBuilderResult","PKIXCertPathChecker","PKIXCertPathValidatorResult","PKIXParameters","POA","POAHelper","POAManager","POAManagerOperations","POAOperations","PRIVATE_MEMBER","PSSParameterSpec","PSource","PSource.PSpecified","PUBLIC_MEMBER","Pack200","Pack200.Packer","Pack200.Unpacker","Package","PackedColorModel","PageAttributes","PageAttributes.ColorType","PageAttributes.MediaType","PageAttributes.OrientationRequestedType","PageAttributes.OriginType","PageAttributes.PrintQualityType","PageFormat","PageRanges","Pageable","PagedResultsControl","PagedResultsResponseControl","PagesPerMinute","PagesPerMinuteColor","Paint","PaintContext","PaintEvent","Panel","PanelUI","Paper","ParagraphView","ParagraphView","Parameter","ParameterBlock","ParameterDescriptor","ParameterMetaData","ParameterMode","ParameterModeHelper","ParameterModeHolder","ParameterizedType","ParseException","ParsePosition","Parser","Parser","ParserAdapter","ParserConfigurationException","ParserDelegator","ParserFactory","PartialResultException","PasswordAuthentication","PasswordCallback","PasswordView","Patch","PathIterator","Pattern","PatternSyntaxException","Permission","Permission","PermissionCollection","Permissions","PersistenceDelegate","PersistentMBean","PhantomReference","Pipe","Pipe.SinkChannel","Pipe.SourceChannel","PipedInputStream","PipedOutputStream","PipedReader","PipedWriter","PixelGrabber","PixelInterleavedSampleModel","PlainDocument","PlainView","Point","Point2D","Point2D.Double","Point2D.Float","PointerInfo","Policy","Policy","Policy","PolicyError","PolicyErrorCodeHelper","PolicyErrorHelper","PolicyErrorHolder","PolicyFactory","PolicyFactoryOperations","PolicyHelper","PolicyHolder","PolicyListHelper","PolicyListHolder","PolicyNode","PolicyOperations","PolicyQualifierInfo","PolicyTypeHelper","Polygon","PooledConnection","Popup","PopupFactory","PopupMenu","PopupMenuEvent","PopupMenuListener","PopupMenuUI","Port","Port.Info","PortUnreachableException","PortableRemoteObject","PortableRemoteObjectDelegate","Position","Position.Bias","Predicate","PreferenceChangeEvent","PreferenceChangeListener","Preferences","PreferencesFactory","PreparedStatement","PresentationDirection","Principal","Principal","PrincipalHolder","PrintEvent","PrintException","PrintGraphics","PrintJob","PrintJobAdapter","PrintJobAttribute","PrintJobAttributeEvent","PrintJobAttributeListener","PrintJobAttributeSet","PrintJobEvent","PrintJobListener","PrintQuality","PrintRequestAttribute","PrintRequestAttributeSet","PrintService","PrintServiceAttribute","PrintServiceAttributeEvent","PrintServiceAttributeListener","PrintServiceAttributeSet","PrintServiceLookup","PrintStream","PrintWriter","Printable","PrinterAbortException","PrinterException","PrinterGraphics","PrinterIOException","PrinterInfo","PrinterIsAcceptingJobs","PrinterJob","PrinterLocation","PrinterMakeAndModel","PrinterMessageFromOperator","PrinterMoreInfo","PrinterMoreInfoManufacturer","PrinterName","PrinterResolution","PrinterState","PrinterStateReason","PrinterStateReasons","PrinterURI","PriorityBlockingQueue","PriorityQueue","PrivateClassLoader","PrivateCredentialPermission","PrivateKey","PrivateMLet","PrivilegedAction","PrivilegedActionException","PrivilegedExceptionAction","Process","ProcessBuilder","ProcessingInstruction","ProfileDataException","ProfileIdHelper","ProgressBarUI","ProgressMonitor","ProgressMonitorInputStream","Properties","PropertyChangeEvent","PropertyChangeListener","PropertyChangeListenerProxy","PropertyChangeSupport","PropertyDescriptor","PropertyEditor","PropertyEditorManager","PropertyEditorSupport","PropertyPermission","PropertyResourceBundle","PropertyVetoException","ProtectionDomain","ProtocolException","Provider","Provider.Service","ProviderException","Proxy","Proxy","Proxy.Type","ProxySelector","PublicKey","PushbackInputStream","PushbackReader","QName","QuadCurve2D","QuadCurve2D.Double","QuadCurve2D.Float","Query","QueryEval","QueryExp","Queue","QueuedJobCount","RC2ParameterSpec","RC5ParameterSpec","REBIND","REQUEST_PROCESSING_POLICY_ID","RGBImageFilter","RMIClassLoader","RMIClassLoaderSpi","RMIClientSocketFactory","RMIConnection","RMIConnectionImpl","RMIConnectionImpl_Stub","RMIConnector","RMIConnectorServer","RMICustomMaxStreamFormat","RMIFailureHandler","RMIIIOPServerImpl","RMIJRMPServerImpl","RMISecurityException","RMISecurityManager","RMIServer","RMIServerImpl","RMIServerImpl_Stub","RMIServerSocketFactory","RMISocketFactory","RSAKey","RSAKeyGenParameterSpec","RSAMultiPrimePrivateCrtKey","RSAMultiPrimePrivateCrtKeySpec","RSAOtherPrimeInfo","RSAPrivateCrtKey","RSAPrivateCrtKeySpec","RSAPrivateKey","RSAPrivateKeySpec","RSAPublicKey","RSAPublicKeySpec","RTFEditorKit","Random","RandomAccess","RandomAccessFile","Raster","RasterFormatException","RasterOp","Rdn","ReadOnlyBufferException","ReadWriteLock","Readable","ReadableByteChannel","Reader","RealmCallback","RealmChoiceCallback","Receiver","Rectangle","Rectangle2D","Rectangle2D.Double","Rectangle2D.Float","RectangularShape","ReentrantLock","ReentrantReadWriteLock","ReentrantReadWriteLock.ReadLock","ReentrantReadWriteLock.WriteLock","Ref","RefAddr","Reference","Reference","ReferenceQueue","ReferenceUriSchemesSupported","Referenceable","ReferralException","ReflectPermission","ReflectionException","RefreshFailedException","Refreshable","Region","RegisterableService","Registry","RegistryHandler","RejectedExecutionException","RejectedExecutionHandler","Relation","RelationException","RelationNotFoundException","RelationNotification","RelationService","RelationServiceMBean","RelationServiceNotRegisteredException","RelationSupport","RelationSupportMBean","RelationType","RelationTypeNotFoundException","RelationTypeSupport","RemarshalException","Remote","RemoteCall","RemoteException","RemoteObject","RemoteObjectInvocationHandler","RemoteRef","RemoteServer","RemoteStub","RenderContext","RenderableImage","RenderableImageOp","RenderableImageProducer","RenderedImage","RenderedImageFactory","Renderer","RenderingHints","RenderingHints.Key","RepaintManager","ReplicateScaleFilter","RepositoryIdHelper","Request","RequestInfo","RequestInfoOperations","RequestProcessingPolicy","RequestProcessingPolicyOperations","RequestProcessingPolicyValue","RequestingUserName","RequiredModelMBean","RescaleOp","ResolutionSyntax","ResolveResult","Resolver","ResourceBundle","ResponseCache","ResponseHandler","Result","ResultSet","ResultSetMetaData","Retention","RetentionPolicy","ReverbType","Robot","Role","RoleInfo","RoleInfoNotFoundException","RoleList","RoleNotFoundException","RoleResult","RoleStatus","RoleUnresolved","RoleUnresolvedList","RootPaneContainer","RootPaneUI","RoundRectangle2D","RoundRectangle2D.Double","RoundRectangle2D.Float","RoundingMode","RowMapper","RowSet","RowSetEvent","RowSetInternal","RowSetListener","RowSetMetaData","RowSetMetaDataImpl","RowSetReader","RowSetWarning","RowSetWriter","RuleBasedCollator","RunTime","RunTimeOperations","Runnable","Runtime","RuntimeErrorException","RuntimeException","RuntimeMBeanException","RuntimeMXBean","RuntimeOperationsException","RuntimePermission","SAXException","SAXNotRecognizedException","SAXNotSupportedException","SAXParseException","SAXParser","SAXParserFactory","SAXResult","SAXSource","SAXTransformerFactory","SERVANT_RETENTION_POLICY_ID","SQLData","SQLException","SQLInput","SQLInputImpl","SQLOutput","SQLOutputImpl","SQLPermission","SQLWarning","SSLContext","SSLContextSpi","SSLEngine","SSLEngineResult","SSLEngineResult.HandshakeStatus","SSLEngineResult.Status","SSLException","SSLHandshakeException","SSLKeyException","SSLPeerUnverifiedException","SSLPermission","SSLProtocolException","SSLServerSocket","SSLServerSocketFactory","SSLSession","SSLSessionBindingEvent","SSLSessionBindingListener","SSLSessionContext","SSLSocket","SSLSocketFactory","SUCCESSFUL","SYNC_WITH_TRANSPORT","SYSTEM_EXCEPTION","SampleModel","Sasl","SaslClient","SaslClientFactory","SaslException","SaslServer","SaslServerFactory","Savepoint","Scanner","ScatteringByteChannel","ScheduledExecutorService","ScheduledFuture","ScheduledThreadPoolExecutor","Schema","SchemaFactory","SchemaFactoryLoader","SchemaViolationException","ScrollBarUI","ScrollPane","ScrollPaneAdjustable","ScrollPaneConstants","ScrollPaneLayout","ScrollPaneLayout.UIResource","ScrollPaneUI","Scrollable","Scrollbar","SealedObject","SearchControls","SearchResult","SecretKey","SecretKeyFactory","SecretKeyFactorySpi","SecretKeySpec","SecureCacheResponse","SecureClassLoader","SecureRandom","SecureRandomSpi","Security","SecurityException","SecurityManager","SecurityPermission","Segment","SelectableChannel","SelectionKey","Selector","SelectorProvider","Semaphore","SeparatorUI","Sequence","SequenceInputStream","Sequencer","Sequencer.SyncMode","SerialArray","SerialBlob","SerialClob","SerialDatalink","SerialException","SerialJavaObject","SerialRef","SerialStruct","Serializable","SerializablePermission","Servant","ServantActivator","ServantActivatorHelper","ServantActivatorOperations","ServantActivatorPOA","ServantAlreadyActive","ServantAlreadyActiveHelper","ServantLocator","ServantLocatorHelper","ServantLocatorOperations","ServantLocatorPOA","ServantManager","ServantManagerOperations","ServantNotActive","ServantNotActiveHelper","ServantObject","ServantRetentionPolicy","ServantRetentionPolicyOperations","ServantRetentionPolicyValue","ServerCloneException","ServerError","ServerException","ServerIdHelper","ServerNotActiveException","ServerRef","ServerRequest","ServerRequestInfo","ServerRequestInfoOperations","ServerRequestInterceptor","ServerRequestInterceptorOperations","ServerRuntimeException","ServerSocket","ServerSocketChannel","ServerSocketFactory","ServiceContext","ServiceContextHelper","ServiceContextHolder","ServiceContextListHelper","ServiceContextListHolder","ServiceDetail","ServiceDetailHelper","ServiceIdHelper","ServiceInformation","ServiceInformationHelper","ServiceInformationHolder","ServiceNotFoundException","ServicePermission","ServiceRegistry","ServiceRegistry.Filter","ServiceUI","ServiceUIFactory","ServiceUnavailableException","Set","SetOfIntegerSyntax","SetOverrideType","SetOverrideTypeHelper","Severity","Shape","ShapeGraphicAttribute","SheetCollate","Short","ShortBuffer","ShortBufferException","ShortHolder","ShortLookupTable","ShortMessage","ShortSeqHelper","ShortSeqHolder","Sides","Signature","SignatureException","SignatureSpi","SignedObject","Signer","SimpleAttributeSet","SimpleBeanInfo","SimpleDateFormat","SimpleDoc","SimpleFormatter","SimpleTimeZone","SimpleType","SinglePixelPackedSampleModel","SingleSelectionModel","Size2DSyntax","SizeLimitExceededException","SizeRequirements","SizeSequence","Skeleton","SkeletonMismatchException","SkeletonNotFoundException","SliderUI","Socket","SocketAddress","SocketChannel","SocketException","SocketFactory","SocketHandler","SocketImpl","SocketImplFactory","SocketOptions","SocketPermission","SocketSecurityException","SocketTimeoutException","SoftBevelBorder","SoftReference","SortControl","SortKey","SortResponseControl","SortedMap","SortedSet","SortingFocusTraversalPolicy","Soundbank","SoundbankReader","SoundbankResource","Source","SourceDataLine","SourceLocator","SpinnerDateModel","SpinnerListModel","SpinnerModel","SpinnerNumberModel","SpinnerUI","SplitPaneUI","Spring","SpringLayout","SpringLayout.Constraints","SslRMIClientSocketFactory","SslRMIServerSocketFactory","Stack","StackOverflowError","StackTraceElement","StandardMBean","StartTlsRequest","StartTlsResponse","State","StateEdit","StateEditable","StateFactory","Statement","Statement","StreamCorruptedException","StreamHandler","StreamPrintService","StreamPrintServiceFactory","StreamResult","StreamSource","StreamTokenizer","Streamable","StreamableValue","StrictMath","String","StringBuffer","StringBufferInputStream","StringBuilder","StringCharacterIterator","StringContent","StringHolder","StringIndexOutOfBoundsException","StringMonitor","StringMonitorMBean","StringNameHelper","StringReader","StringRefAddr","StringSelection","StringSeqHelper","StringSeqHolder","StringTokenizer","StringValueExp","StringValueHelper","StringWriter","Stroke","Struct","StructMember","StructMemberHelper","Stub","StubDelegate","StubNotFoundException","Style","StyleConstants","StyleConstants.CharacterConstants","StyleConstants.ColorConstants","StyleConstants.FontConstants","StyleConstants.ParagraphConstants","StyleContext","StyleSheet","StyleSheet.BoxPainter","StyleSheet.ListPainter","StyledDocument","StyledEditorKit","StyledEditorKit.AlignmentAction","StyledEditorKit.BoldAction","StyledEditorKit.FontFamilyAction","StyledEditorKit.FontSizeAction","StyledEditorKit.ForegroundAction","StyledEditorKit.ItalicAction","StyledEditorKit.StyledTextAction","StyledEditorKit.UnderlineAction","Subject","SubjectDelegationPermission","SubjectDomainCombiner","SupportedValuesAttribute","SuppressWarnings","SwingConstants","SwingPropertyChangeSupport","SwingUtilities","SyncFactory","SyncFactoryException","SyncFailedException","SyncProvider","SyncProviderException","SyncResolver","SyncScopeHelper","SynchronousQueue","SynthConstants","SynthContext","SynthGraphicsUtils","SynthLookAndFeel","SynthPainter","SynthStyle","SynthStyleFactory","Synthesizer","SysexMessage","System","SystemColor","SystemException","SystemFlavorMap","TAG_ALTERNATE_IIOP_ADDRESS","TAG_CODE_SETS","TAG_INTERNET_IOP","TAG_JAVA_CODEBASE","TAG_MULTIPLE_COMPONENTS","TAG_ORB_TYPE","TAG_POLICIES","TAG_RMI_CUSTOM_MAX_STREAM_FORMAT","TCKind","THREAD_POLICY_ID","TIMEOUT","TRANSACTION_MODE","TRANSACTION_REQUIRED","TRANSACTION_ROLLEDBACK","TRANSACTION_UNAVAILABLE","TRANSIENT","TRANSPORT_RETRY","TabExpander","TabSet","TabStop","TabableView","TabbedPaneUI","TableCellEditor","TableCellRenderer","TableColumn","TableColumnModel","TableColumnModelEvent","TableColumnModelListener","TableHeaderUI","TableModel","TableModelEvent","TableModelListener","TableUI","TableView","TabularData","TabularDataSupport","TabularType","TagElement","TaggedComponent","TaggedComponentHelper","TaggedComponentHolder","TaggedProfile","TaggedProfileHelper","TaggedProfileHolder","Target","TargetDataLine","TargetedNotification","Templates","TemplatesHandler","Text","TextAction","TextArea","TextAttribute","TextComponent","TextEvent","TextField","TextHitInfo","TextInputCallback","TextLayout","TextLayout.CaretPolicy","TextListener","TextMeasurer","TextOutputCallback","TextSyntax","TextUI","TexturePaint","Thread","Thread.State","Thread.UncaughtExceptionHandler","ThreadDeath","ThreadFactory","ThreadGroup","ThreadInfo","ThreadLocal","ThreadMXBean","ThreadPolicy","ThreadPolicyOperations","ThreadPolicyValue","ThreadPoolExecutor","ThreadPoolExecutor.AbortPolicy","ThreadPoolExecutor.CallerRunsPolicy","ThreadPoolExecutor.DiscardOldestPolicy","ThreadPoolExecutor.DiscardPolicy","Throwable","Tie","TileObserver","Time","TimeLimitExceededException","TimeUnit","TimeZone","TimeoutException","Timer","Timer","Timer","TimerAlarmClockNotification","TimerMBean","TimerNotification","TimerTask","Timestamp","Timestamp","TitledBorder","TooManyListenersException","ToolBarUI","ToolTipManager","ToolTipUI","Toolkit","Track","TransactionRequiredException","TransactionRolledbackException","TransactionService","TransactionalWriter","TransferHandler","Transferable","TransformAttribute","Transformer","TransformerConfigurationException","TransformerException","TransformerFactory","TransformerFactoryConfigurationError","TransformerHandler","Transmitter","Transparency","TreeCellEditor","TreeCellRenderer","TreeExpansionEvent","TreeExpansionListener","TreeMap","TreeModel","TreeModelEvent","TreeModelListener","TreeNode","TreePath","TreeSelectionEvent","TreeSelectionListener","TreeSelectionModel","TreeSet","TreeUI","TreeWillExpandListener","TrustAnchor","TrustManager","TrustManagerFactory","TrustManagerFactorySpi","Type","TypeCode","TypeCodeHolder","TypeInfo","TypeInfoProvider","TypeMismatch","TypeMismatch","TypeMismatch","TypeMismatchHelper","TypeMismatchHelper","TypeNotPresentException","TypeVariable","Types","UID","UIDefaults","UIDefaults.ActiveValue","UIDefaults.LazyInputMap","UIDefaults.LazyValue","UIDefaults.ProxyLazyValue","UIManager","UIManager.LookAndFeelInfo","UIResource","ULongLongSeqHelper","ULongLongSeqHolder","ULongSeqHelper","ULongSeqHolder","UNKNOWN","UNKNOWN","UNSUPPORTED_POLICY","UNSUPPORTED_POLICY_VALUE","URI","URIException","URIResolver","URISyntax","URISyntaxException","URL","URLClassLoader","URLConnection","URLDecoder","URLEncoder","URLStreamHandler","URLStreamHandlerFactory","URLStringHelper","USER_EXCEPTION","UShortSeqHelper","UShortSeqHolder","UTFDataFormatException","UUID","UndeclaredThrowableException","UndoManager","UndoableEdit","UndoableEditEvent","UndoableEditListener","UndoableEditSupport","UnexpectedException","UnicastRemoteObject","UnionMember","UnionMemberHelper","UnknownEncoding","UnknownEncodingHelper","UnknownError","UnknownException","UnknownFormatConversionException","UnknownFormatFlagsException","UnknownGroupException","UnknownHostException","UnknownHostException","UnknownObjectException","UnknownServiceException","UnknownUserException","UnknownUserExceptionHelper","UnknownUserExceptionHolder","UnmappableCharacterException","UnmarshalException","UnmodifiableClassException","UnmodifiableSetException","UnrecoverableEntryException","UnrecoverableKeyException","Unreferenced","UnresolvedAddressException","UnresolvedPermission","UnsatisfiedLinkError","UnsolicitedNotification","UnsolicitedNotificationEvent","UnsolicitedNotificationListener","UnsupportedAddressTypeException","UnsupportedAudioFileException","UnsupportedCallbackException","UnsupportedCharsetException","UnsupportedClassVersionError","UnsupportedEncodingException","UnsupportedFlavorException","UnsupportedLookAndFeelException","UnsupportedOperationException","UserDataHandler","UserException","Util","UtilDelegate","Utilities","VMID","VM_ABSTRACT","VM_CUSTOM","VM_NONE","VM_TRUNCATABLE","Validator","ValidatorHandler","ValueBase","ValueBaseHelper","ValueBaseHolder","ValueExp","ValueFactory","ValueHandler","ValueHandlerMultiFormat","ValueInputStream","ValueMember","ValueMemberHelper","ValueOutputStream","VariableHeightLayoutCache","Vector","VerifyError","VersionSpecHelper","VetoableChangeListener","VetoableChangeListenerProxy","VetoableChangeSupport","View","ViewFactory","ViewportLayout","ViewportUI","VirtualMachineError","Visibility","VisibilityHelper","VoiceStatus","Void","VolatileImage","WCharSeqHelper","WCharSeqHolder","WStringSeqHelper","WStringSeqHolder","WStringValueHelper","WeakHashMap","WeakReference","WebRowSet","WildcardType","Window","WindowAdapter","WindowConstants","WindowEvent","WindowFocusListener","WindowListener","WindowStateListener","WrappedPlainView","WritableByteChannel","WritableRaster","WritableRenderedImage","WriteAbortedException","Writer","WrongAdapter","WrongAdapterHelper","WrongPolicy","WrongPolicyHelper","WrongTransaction","WrongTransactionHelper","WrongTransactionHolder","X500Principal","X500PrivateCredential","X509CRL","X509CRLEntry","X509CRLSelector","X509CertSelector","X509Certificate","X509Certificate","X509EncodedKeySpec","X509ExtendedKeyManager","X509Extension","X509KeyManager","X509TrustManager","XAConnection","XADataSource","XAException","XAResource","XMLConstants","XMLDecoder","XMLEncoder","XMLFilter","XMLFilterImpl","XMLFormatter","XMLGregorianCalendar","XMLParseException","XMLReader","XMLReaderAdapter","XMLReaderFactory","XPath","XPathConstants","XPathException","XPathExpression","XPathExpressionException","XPathFactory","XPathFactoryConfigurationException","XPathFunction","XPathFunctionException","XPathFunctionResolver","XPathVariableResolver","Xid","XmlReader","XmlWriter","ZipEntry","ZipException","ZipFile","ZipInputStream","ZipOutputStream","ZoneView","_BindingIteratorImplBase","_BindingIteratorStub","_DynAnyFactoryStub","_DynAnyStub","_DynArrayStub","_DynEnumStub","_DynFixedStub","_DynSequenceStub","_DynStructStub","_DynUnionStub","_DynValueStub","_IDLTypeStub","_NamingContextExtStub","_NamingContextImplBase","_NamingContextStub","_PolicyStub","_Remote_Stub","_ServantActivatorStub","_ServantLocatorStub"] >>= withAttribute "Java15"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["Actor","ActorProxy","ActorTask","ActorThread","AllRef","Any","AnyRef","Application","AppliedType","Array","ArrayBuffer","Attribute","BoxedArray","BoxedBooleanArray","BoxedByteArray","BoxedCharArray","Buffer","BufferedIterator","Char","Console","Enumeration","Fluid","Function","IScheduler","ImmutableMapAdaptor","ImmutableSetAdaptor","Int","Iterable","List","ListBuffer","None","Option","Ordered","Pair","PartialFunction","Pid","Predef","PriorityQueue","PriorityQueueProxy","Reaction","Ref","Responder","RichInt","RichString","Rule","RuleTransformer","Script","Seq","SerialVersionUID","Some","Stream","Symbol","TcpService","TcpServiceWorker","Triple","Unit","Value","WorkerThread","serializable","transient","volatile"] >>= withAttribute "Scala2"))
+                        <|>
+                        (withChildren (pFloat >>= withAttribute "Float") ((pAnyChar "fF" >>= withAttribute "Float")))
+                        <|>
+                        ((pHlCOct >>= withAttribute "Octal"))
+                        <|>
+                        ((pHlCHex >>= withAttribute "Hex"))
+                        <|>
+                        (withChildren (pInt >>= withAttribute "Decimal") (((pString False "ULL" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "LUL" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "LLU" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "UL" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "LU" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "LL" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "U" >>= withAttribute "Decimal"))
+                                                                          <|>
+                                                                          ((pString False "L" >>= withAttribute "Decimal"))))
+                        <|>
+                        ((pHlCChar >>= withAttribute "Char"))
+                        <|>
+                        ((pRegExpr (compileRegex "//\\s*BEGIN.*$") >>= withAttribute "Decimal"))
+                        <|>
+                        ((pRegExpr (compileRegex "//\\s*END.*$") >>= withAttribute "Decimal"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((pRegExpr (compileRegex "\\.(format|printf)\\b") >>= withAttribute "Function") >>~ pushContext "Printf")
+                        <|>
+                        ((pDetect2Chars False '/' '/' >>= withAttribute "Comment") >>~ pushContext "Commentar 1")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "Commentar 2")
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Symbol"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Symbol"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\b[_\\w][_\\w\\d]*(?=[\\s]*(/\\*\\s*\\d+\\s*\\*/\\s*)?[(])") >>= withAttribute "Function"))
+                        <|>
+                        ((pRegExpr (compileRegex "[.]{1,1}") >>= withAttribute "Symbol") >>~ pushContext "Member")
+                        <|>
+                        ((pAnyChar ":!%&()+,-/.*<=>?[]|~^;" >>= withAttribute "Symbol")))
+     return (attr, result)
+
+parseRules "String" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "String"))
+                        <|>
+                        ((pHlCStringChar >>= withAttribute "String Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Printf" = 
+  do (attr, result) <- (((pDetectChar False ';' >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "PrintfString"))
+     return (attr, result)
+
+parseRules "PrintfString" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "String"))
+                        <|>
+                        ((pHlCStringChar >>= withAttribute "String Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "%(\\d+\\$)?(-|#|\\+|\\ |0|,|\\()*\\d*(\\.\\d+)?[a-hosxA-CEGHSX]") >>= withAttribute "String Char"))
+                        <|>
+                        ((pRegExpr (compileRegex "%(\\d+\\$)?(-|#|\\+|\\ |0|,|\\()*\\d*(t|T)(a|A|b|B|c|C|d|D|e|F|h|H|I|j|k|l|L|m|M|N|p|P|Q|r|R|s|S|T|y|Y|z|Z)") >>= withAttribute "String Char"))
+                        <|>
+                        ((pRegExpr (compileRegex "%(%|n)") >>= withAttribute "String Char")))
+     return (attr, result)
+
+parseRules "Member" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\b[_a-zA-Z]\\w*(?=[\\s]*)") >>= withAttribute "Function") >>~ (popContext >> return ()))
+                        <|>
+                        ((popContext >> return ()) >> return ([], "")))
+     return (attr, result)
+
+parseRules "Commentar 1" = 
+  pzero
+
+parseRules "Commentar 2" = 
+  do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Scheme.hs b/Text/Highlighting/Kate/Syntax/Scheme.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Scheme.hs
@@ -0,0 +1,198 @@
+{- This module was generated from data in the Kate syntax highlighting file scheme.xml, version 1.12,
+   by  Dominik Haumann (dhdev@gmx.de) -}
+
+module Text.Highlighting.Kate.Syntax.Scheme ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Scheme"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.scm;*.ss;*.scheme;*.guile"
+
+-- | 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 = "Scheme" }
+  context <- currentContext <|> (pushContext "Level0" >> 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 [("Scheme",["Level0"])], synStLanguage = "Scheme", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Level0" -> return ()
+    "Default" -> return ()
+    "MultiLineComment" -> return ()
+    "SpecialNumber" -> (popContext >> return ())
+    "String" -> return ()
+    "function_decl" -> return ()
+    "Level1" -> return ()
+    "Level2" -> return ()
+    "Level3" -> return ()
+    "Level4" -> return ()
+    "Level5" -> return ()
+    "Level6" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal","Normal"),("Keyword","Keyword"),("Definition","Keyword"),("Operator","Keyword"),("Function","Function"),("Data","DataType"),("Decimal","DecVal"),("BaseN","BaseN"),("Float","Float"),("Char","Char"),("String","String"),("Comment","Comment"),("Region Marker","RegionMarker"),("Brackets1","Normal"),("Brackets2","Normal"),("Brackets3","Normal"),("Brackets4","Normal"),("Brackets5","Normal"),("Brackets6","Normal")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Level0","Normal"),("Default","Normal"),("MultiLineComment","Comment"),("SpecialNumber","Normal"),("String","String"),("function_decl","Function"),("Level1","Normal"),("Level2","Normal"),("Level3","Normal"),("Level4","Normal"),("Level5","Normal"),("Level6","Normal")]
+
+parseRules "Level0" = 
+  do (attr, result) <- (((pDetectChar False '(' >>= withAttribute "Brackets1") >>~ pushContext "Level1")
+                        <|>
+                        ((parseRules "Default")))
+     return (attr, result)
+
+parseRules "Default" = 
+  do (attr, result) <- (((pRegExpr (compileRegex ";+\\s*BEGIN.*$") >>= withAttribute "Region Marker"))
+                        <|>
+                        ((pRegExpr (compileRegex ";+\\s*END.*$") >>= withAttribute "Region Marker"))
+                        <|>
+                        ((pRegExpr (compileRegex ";.*$") >>= withAttribute "Comment"))
+                        <|>
+                        ((pDetect2Chars False '#' '!' >>= withAttribute "Comment") >>~ pushContext "MultiLineComment")
+                        <|>
+                        ((pKeyword " \n\t.(),%&;[]^{|}~" ["abs","acos","and","angle","append","applymap","asin","assoc","assq","assv","atan","begin","boolean?","break","caaaar","caaadr","caaar","caadar","caaddr","caadr","caar","cadaar","cadadr","cadar","caddar","cadddr","caddr","cadr","call/cc","call-with-current-continuation","call-with-input-file","call-with-output-file","call-with-values","car","case","catch","cdaaar","cdaadr","cdaar","cdadar","cdaddr","cdadr","cdar","cddaar","cddadr","cddar","cdddar","cddddr","cdddr","cddr","cdr","ceiling","char-alphabetic?","char-ci>=?","char-ci>?","char-ci=?","char-ci<=?","char-downcase","char->integer","char>=?","char>?","char=?","char?","char-lower-case?","char<?c","char<=?","char-numeric?","char-ready?","char-upcase","char-upper-case?","char-whitespace?","close-input-port","close-output-port","complex?","cond","cons","continue","cos","current-input-port","current-output-port","denominator","display","do","dynamic-wind","else","eof-object?","eq?","equal?","eqv?","eval","even?","exact->inexact","exact?","exp","expt","floor","force","for-each","gcd","har-ci<?","if","imag-part","inexact->exact","inexact?","input-port?","integer->char","integer?","interaction-environment","lambda","lcm","length","let","let*","letrec","letrec-syntax","let-syntax","list->string","list","list?","list-ref","list-tail","load","log","magnitude","make-polar","make-rectangular","make-string","make-vector","max","member","memq","memv","min","modulo","negative?","newline","not","null-environment","null?","number?","number->string","numerator","odd?","open-input-file","open-output-file","or","output-port?","pair?","peek-char","port?","positive?","procedure?","quotient","rational?","rationalize","read-char","read","real?","real-part","remainder","reverse","round","scheme-report-environment","set-car!","set-cdr!","sin","sqrt","string-append","string-ci>=?","string-ci>?","string-ci=?","string-ci<=?","string-ci<?","string-copy","string-fill!","string>=?","string>?","string->list","string->number","string->symbol","string=?","string","string?","string-length","string<=?","string<?","string-ref","string-set!","substring","symbol->string","symbol?","syntax-rules","tan","transcript-off","transcript-on","truncate","values","vector-fill!","vector->listlist->vector","vector","vector?","vector-length","vector-ref","vector-set!","while","with-input-from-file","with-output-to-file","write-char","write","zero?"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.(),%&;[]^{|}~" ["<=","<","=","=>",">=",">","-","/","*,*","*)","+"] >>= withAttribute "Operator"))
+                        <|>
+                        ((pKeyword " \n\t.(),%&;[]^{|}~" ["define","define*","define-accessor","define-class","defined?","define-generic","define-macro","define-method","define-module","define-private","define-public","define*-public","define-reader-ctor","define-syntax","define-syntax-macro","defmacro","defmacro*","defmacro*-public"] >>= withAttribute "Definition") >>~ pushContext "function_decl")
+                        <|>
+                        ((pKeyword " \n\t.(),%&;[]^{|}~" ["#\\nul","#\\soh","#\\stx","#\\etx","#\\eot","#\\enq","#\\ack","#\\bel","#\\bs","#\\ht","#\\nl","#\\vt","#\\np","#\\cr","#\\so","#\\si","#\\dle","#\\dc1","#\\dc2","#\\dc3","#\\dc4","#\\nak","#\\syn","#\\etb","#\\can","#\\em","#\\sub","#\\esc","#\\fs","#\\gs","#\\rs","#\\us","#\\space","#\\sp","#\\newline","#\\nl","#\\tab","#\\ht","#\\backspace","#\\bs","#\\return","#\\cr","#\\page","#\\np","#\\null","#\\nul"] >>= withAttribute "Char"))
+                        <|>
+                        ((pRegExpr (compileRegex "#\\\\.") >>= withAttribute "Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((pRegExpr (compileRegex "#[bodxei]") >>= withAttribute "Char") >>~ pushContext "SpecialNumber")
+                        <|>
+                        ((pRegExpr (compileRegex "#[tf]") >>= withAttribute "Decimal"))
+                        <|>
+                        ((pFloat >>= withAttribute "Float"))
+                        <|>
+                        ((pInt >>= withAttribute "Decimal"))
+                        <|>
+                        ((pDetectChar False '(' >>= withAttribute "Brackets1") >>~ pushContext "Level1"))
+     return (attr, result)
+
+parseRules "MultiLineComment" = 
+  do (attr, result) <- ((pColumn 0 >> pRegExpr (compileRegex "!#\\s*$") >>= withAttribute "Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "SpecialNumber" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\d*(\\.\\d+)?") >>= withAttribute "Decimal") >>~ (popContext >> return ()))
+                        <|>
+                        (return () >> return ([], "")))
+     return (attr, result)
+
+parseRules "String" = 
+  do (attr, result) <- (((pKeyword " \n\t.(),%&;[]^{|}~" ["#\\nul","#\\soh","#\\stx","#\\etx","#\\eot","#\\enq","#\\ack","#\\bel","#\\bs","#\\ht","#\\nl","#\\vt","#\\np","#\\cr","#\\so","#\\si","#\\dle","#\\dc1","#\\dc2","#\\dc3","#\\dc4","#\\nak","#\\syn","#\\etb","#\\can","#\\em","#\\sub","#\\esc","#\\fs","#\\gs","#\\rs","#\\us","#\\space","#\\sp","#\\newline","#\\nl","#\\tab","#\\ht","#\\backspace","#\\bs","#\\return","#\\cr","#\\page","#\\np","#\\null","#\\nul"] >>= withAttribute "Char"))
+                        <|>
+                        ((pRegExpr (compileRegex "#\\\\.") >>= withAttribute "Char"))
+                        <|>
+                        ((pDetect2Chars False '\\' '"' >>= withAttribute "Char"))
+                        <|>
+                        ((pDetect2Chars False '\\' '\\' >>= withAttribute "Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "function_decl" = 
+  do (attr, result) <- ((pRegExpr (compileRegex "\\s*[A-Za-z0-9-+\\<\\>//\\*]*\\s*") >>= withAttribute "Function") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Level1" = 
+  do (attr, result) <- (((pDetectChar False '(' >>= withAttribute "Brackets2") >>~ pushContext "Level2")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Brackets1") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "Default")))
+     return (attr, result)
+
+parseRules "Level2" = 
+  do (attr, result) <- (((pDetectChar False '(' >>= withAttribute "Brackets3") >>~ pushContext "Level3")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Brackets2") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "Default")))
+     return (attr, result)
+
+parseRules "Level3" = 
+  do (attr, result) <- (((pDetectChar False '(' >>= withAttribute "Brackets4") >>~ pushContext "Level4")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Brackets3") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "Default")))
+     return (attr, result)
+
+parseRules "Level4" = 
+  do (attr, result) <- (((pDetectChar False '(' >>= withAttribute "Brackets5") >>~ pushContext "Level5")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Brackets4") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "Default")))
+     return (attr, result)
+
+parseRules "Level5" = 
+  do (attr, result) <- (((pDetectChar False '(' >>= withAttribute "Brackets6") >>~ pushContext "Level6")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Brackets5") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "Default")))
+     return (attr, result)
+
+parseRules "Level6" = 
+  do (attr, result) <- (((pDetectChar False '(' >>= withAttribute "Brackets1") >>~ pushContext "Level1")
+                        <|>
+                        ((pDetectChar False ')' >>= withAttribute "Brackets6") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "Default")))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Sgml.hs b/Text/Highlighting/Kate/Syntax/Sgml.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Sgml.hs
@@ -0,0 +1,109 @@
+{- This module was generated from data in the Kate syntax highlighting file sgml.xml, version 1.02,
+   by   -}
+
+module Text.Highlighting.Kate.Syntax.Sgml ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "SGML"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.sgml"
+
+-- | 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 = "SGML" }
+  context <- currentContext <|> (pushContext "Normal Text" >> 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 [("SGML",["Normal Text"])], synStLanguage = "SGML", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = False, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal Text" -> return ()
+    "Attribute" -> return ()
+    "Value" -> return ()
+    "Value 2" -> return ()
+    "Comment" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Tag","Keyword"),("Attribute Name","Others"),("Attribute Value","DataType"),("Comment","Comment")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal Text","Normal Text"),("Attribute","Attribute Name"),("Value","Attribute Value"),("Value 2","Attribute Value"),("Comment","Comment")]
+
+parseRules "Normal Text" = 
+  do (attr, result) <- (((pString False "<!--" >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pRegExpr (compileRegex "<\\s*\\/?\\s*[a-zA-Z_:][a-zA-Z0-9._:-]*") >>= withAttribute "Tag") >>~ pushContext "Attribute"))
+     return (attr, result)
+
+parseRules "Attribute" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '>' >>= withAttribute "Tag") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Tag") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*=\\s*") >>= withAttribute "Normal Text") >>~ pushContext "Value"))
+     return (attr, result)
+
+parseRules "Value" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '>' >>= withAttribute "Tag") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Tag") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Attribute Value") >>~ pushContext "Value 2"))
+     return (attr, result)
+
+parseRules "Value 2" = 
+  do (attr, result) <- ((pDetectChar False '"' >>= withAttribute "Attribute Value") >>~ (popContext >> popContext >> return ()))
+     return (attr, result)
+
+parseRules "Comment" = 
+  do (attr, result) <- ((pString False "-->" >>= withAttribute "Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Sql.hs b/Text/Highlighting/Kate/Syntax/Sql.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Sql.hs
@@ -0,0 +1,156 @@
+{- This module was generated from data in the Kate syntax highlighting file sql.xml, version 1.13,
+   by  Yury Lebedev (yurylebedev@mail.ru) -}
+
+module Text.Highlighting.Kate.Syntax.Sql ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "SQL"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.sql;*.SQL"
+
+-- | 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 = "SQL" }
+  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 [("SQL",["Normal"])], synStLanguage = "SQL", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = False, synStKeywordCaseSensitive = False, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "String literal" -> return ()
+    "Singleline PL/SQL-style comment" -> (popContext >> return ())
+    "Multiline C-style comment" -> return ()
+    "SQL*Plus remark directive" -> (popContext >> return ())
+    "User-defined identifier" -> (popContext >> return ())
+    "SQL*Plus directive to include file" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Operator","Normal"),("Function","Function"),("Data Type","DataType"),("Decimal","DecVal"),("Float","Float"),("String","String"),("String Char","Char"),("Comment","Comment"),("Identifier","Others"),("External Variable","Char"),("Symbol","Char"),("Preprocessor","Others")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal Text"),("String literal","String"),("Singleline PL/SQL-style comment","Comment"),("Multiline C-style comment","Comment"),("SQL*Plus remark directive","Comment"),("User-defined identifier","Identifier"),("SQL*Plus directive to include file","Preprocessor")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((pKeyword " \n\t(),%&;?[]{}\\" ["ACCESS","ACCOUNT","ADD","ADMIN","ADMINISTER","ADVISE","AFTER","AGENT","ALL","ALL_ROWS","ALLOCATE","ALTER","ANALYZE","ANCILLARY","AND","ANY","ARCHIVE","ARCHIVELOG","AS","ASC","ASSERTION","ASSOCIATE","AT","ATTRIBUTE","ATTRIBUTES","AUDIT","AUTHENTICATED","AUTHID","AUTHORIZATION","AUTOALLOCATE","AUTOEXTEND","AUTOMATIC","BACKUP","BECOME","BEFORE","BEGIN","BEHALF","BETWEEN","BINDING","BITMAP","BLOCK","BLOCK_RANGE","BODY","BOUND","BOTH","BREAK","BROADCAST","BTITLE","BUFFER_POOL","BUILD","BULK","BY","CACHE","CACHE_INSTANCES","CALL","CANCEL","CASCADE","CASE","CATEGORY","CHAINED","CHANGE","CHECK","CHECKPOINT","CHILD","CHOOSE","CHUNK","CLASS","CLEAR","CLONE","CLOSE","CLOSE_CACHED_OPEN_CURSORS","CLUSTER","COALESCE","COLUMN","COLUMNS","COLUMN_VALUE","COMMENT","COMMIT","COMMITTED","COMPATIBILITY","COMPILE","COMPLETE","COMPOSITE_LIMIT","COMPRESS","COMPUTE","CONNECT","CONNECT_TIME","CONSIDER","CONSISTENT","CONSTANT","CONSTRAINT","CONSTRAINTS","CONTAINER","CONTENTS","CONTEXT","CONTINUE","CONTROLFILE","COPY","COST","CPU_PER_CALL","CPU_PER_SESSION","CREATE","CREATE_STORED_OUTLINES","CROSS","CUBE","CURRENT","CURSOR","CYCLE","DANGLING","DATA","DATABASE","DATAFILE","DATAFILES","DBA","DDL","DEALLOCATE","DEBUG","DECLARE","DEFAULT","DEFERRABLE","DEFERRED","DEFINER","DEGREE","DELETE","DEMAND","DESC","DETERMINES","DICTIONARY","DIMENSION","DIRECTORY","DISABLE","DISASSOCIATE","DISCONNECT","DISKGROUP","DISMOUNT","DISTINCT","DISTRIBUTED","DOMAIN","DROP","DYNAMIC","EACH","ELSE","ELSIF","EMPTY","ENABLE","END","ENFORCE","ENTRY","ESCAPE","ESTIMATE","EVENTS","EXCEPT","EXCEPTION","EXCEPTIONS","EXCHANGE","EXCLUDING","EXCLUSIVE","EXEC","EXECUTE","EXISTS","EXPIRE","EXPLAIN","EXPLOSION","EXTENDS","EXTENT","EXTENTS","EXTERNALLY","FAILED_LOGIN_ATTEMPTS","FALSE","FAST","FILE","FILTER","FIRST_ROWS","FLAGGER","FLASHBACK","FLUSH","FOLLOWING","FOR","FORCE","FOREIGN","FREELIST","FREELISTS","FRESH","FROM","FULL","FUNCTION","FUNCTIONS","GENERATED","GLOBAL","GLOBALLY","GLOBAL_NAME","GRANT","GROUP","GROUPS","HASH","HASHKEYS","HAVING","HEADER","HEAP","HIERARCHY","HOUR","ID","IDENTIFIED","IDENTIFIER","IDGENERATORS","IDLE_TIME","IF","IMMEDIATE","IN","INCLUDING","INCREMENT","INCREMENTAL","INDEX","INDEXED","INDEXES","INDEXTYPE","INDEXTYPES","INDICATOR","INITIAL","INITIALIZED","INITIALLY","INITRANS","INNER","INSERT","INSTANCE","INSTANCES","INSTEAD","INTERMEDIATE","INTERSECT","INTO","INVALIDATE","IS","ISOLATION","ISOLATION_LEVEL","JAVA","JOIN","KEEP","KEY","KILL","LABEL","LAYER","LEADING","LEFT","LESS","LEVEL","LIBRARY","LIKE","LIMIT","LINK","LIST","LOCAL","LOCATOR","LOCK","LOCKED","LOGFILE","LOGGING","LOGICAL_READS_PER_CALL","LOGICAL_READS_PER_SESSION","LOGOFF","LOGON","LOOP","MANAGE","MANAGED","MANAGEMENT","MASTER","MATERIALIZED","MAXARCHLOGS","MAXDATAFILES","MAXEXTENTS","MAXINSTANCES","MAXLOGFILES","MAXLOGHISTORY","MAXLOGMEMBERS","MAXSIZE","MAXTRANS","MAXVALUE","METHOD","MEMBER","MERGE","MINIMIZE","MINIMUM","MINEXTENTS","MINUS","MINUTE","MINVALUE","MODE","MODIFY","MONITORING","MOUNT","MOVE","MOVEMENT","MTS_DISPATCHERS","MULTISET","NAMED","NATURAL","NEEDED","NESTED","NESTED_TABLE_ID","NETWORK","NEVER","NEW","NEXT","NLS_CALENDAR","NLS_CHARACTERSET","NLS_COMP","NLS_CURRENCY","NLS_DATE_FORMAT","NLS_DATE_LANGUAGE","NLS_ISO_CURRENCY","NLS_LANG","NLS_LANGUAGE","NLS_NUMERIC_CHARACTERS","NLS_SORT","NLS_SPECIAL_CHARS","NLS_TERRITORY","NO","NOARCHIVELOG","NOAUDIT","NOCACHE","NOCOMPRESS","NOCYCLE","NOFORCE","NOLOGGING","NOMAXVALUE","NOMINIMIZE","NOMINVALUE","NOMONITORING","NONE","NOORDER","NOOVERRIDE","NOPARALLEL","NORELY","NORESETLOGS","NOREVERSE","NORMAL","NOSEGMENT","NOSORT","NOT","NOTHING","NOVALIDATE","NOWAIT","NULL","NULLS","OBJNO","OBJNO_REUSE","OF","OFF","OFFLINE","OID","OIDINDEX","OLD","ON","ONLINE","ONLY","OPCODE","OPEN","OPERATOR","OPTIMAL","OPTIMIZER_GOAL","OPTION","OR","ORDER","ORGANIZATION","OUT","OUTER","OUTLINE","OVER","OVERFLOW","OVERLAPS","OWN","PACKAGE","PACKAGES","PARALLEL","PARAMETERS","PARENT","PARTITION","PARTITIONS","PARTITION_HASH","PARTITION_RANGE","PASSWORD","PASSWORD_GRACE_TIME","PASSWORD_LIFE_TIME","PASSWORD_LOCK_TIME","PASSWORD_REUSE_MAX","PASSWORD_REUSE_TIME","PASSWORD_VERIFY_FUNCTION","PCTFREE","PCTINCREASE","PCTTHRESHOLD","PCTUSED","PCTVERSION","PERCENT","PERMANENT","PLAN","PLSQL_DEBUG","POST_TRANSACTION","PREBUILT","PRECEDING","PREPARE","PRESENT","PRESERVE","PREVIOUS","PRIMARY","PRIOR","PRIVATE","PRIVATE_SGA","PRIVILEGE","PRIVILEGES","PROCEDURE","PROFILE","PUBLIC","PURGE","QUERY","QUEUE","QUOTA","RANDOM","RANGE","RBA","READ","READS","REBUILD","RECORDS_PER_BLOCK","RECOVER","RECOVERABLE","RECOVERY","RECYCLE","REDUCED","REFERENCES","REFERENCING","REFRESH","RELY","RENAME","REPLACE","RESET","RESETLOGS","RESIZE","RESOLVE","RESOLVER","RESOURCE","RESTRICT","RESTRICTED","RESUME","RETURN","RETURNING","REUSE","REVERSE","REVOKE","REWRITE","RIGHT","ROLE","ROLES","ROLLBACK","ROLLUP","ROW","ROWNUM","ROWS","RULE","SAMPLE","SAVEPOINT","SCAN","SCAN_INSTANCES","SCHEMA","SCN","SCOPE","SD_ALL","SD_INHIBIT","SD_SHOW","SEGMENT","SEG_BLOCK","SEG_FILE","SELECT","SELECTIVITY","SEQUENCE","SERIALIZABLE","SERVERERROR","SESSION","SESSION_CACHED_CURSORS","SESSIONS_PER_USER","SET","SHARE","SHARED","SHARED_POOL","SHRINK","SHUTDOWN","SINGLETASK","SIZE","SKIP","SKIP_UNUSABLE_INDEXES","SNAPSHOT","SOME","SORT","SOURCE","SPECIFICATION","SPLIT","SQL_TRACE","STANDBY","START","STARTUP","STATEMENT_ID","STATISTICS","STATIC","STOP","STORAGE","STORE","STRUCTURE","SUBMULTISET","SUBPARTITION","SUBPARTITIONS","SUCCESSFUL","SUMMARY","SUPPLEMENTAL","SUSPEND","SWITCH","SYS_OP_BITVEC","SYS_OP_ENFORCE_NOT_NULL$","SYS_OP_NOEXPAND","SYS_OP_NTCIMG$","SYNONYM","SYSDBA","SYSOPER","SYSTEM","TABLE","TABLES","TABLESPACE","TABLESPACE_NO","TABNO","TEMPFILE","TEMPORARY","THAN","THE","THEN","THREAD","THROUGH","TIMEOUT","TIMEZONE_HOUR","TIMEZONE_MINUTE","TIME_ZONE","TO","TOPLEVEL","TRACE","TRACING","TRAILING","TRANSACTION","TRANSITIONAL","TRIGGER","TRIGGERS","TRUE","TRUNCATE","TYPE","TYPES","UNARCHIVED","UNBOUND","UNBOUNDED","UNDO","UNIFORM","UNION","UNIQUE","UNLIMITED","UNLOCK","UNRECOVERABLE","UNTIL","UNUSABLE","UNUSED","UPD_INDEXES","UPDATABLE","UPDATE","UPPPER","USAGE","USE","USE_STORED_OUTLINES","USER_DEFINED","USING","VALIDATE","VALIDATION","VALUES","VIEW","WHEN","WHENEVER","WHERE","WITH","WITHOUT","WORK","WRITE"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t(),%&;?[]{}\\" ["+","-","*","/","||","=","!=","<>","<","<=",">",">=","~=","^=",":=","=>","**",".."] >>= withAttribute "Operator"))
+                        <|>
+                        ((pKeyword " \n\t(),%&;?[]{}\\" ["ABS","ACOS","ADD_MONTHS","ASCII","ASCIISTR","ASIN","ATAN","ATAN2","AVG","BFILENAME","BIN_TO_NUM","BITAND","CARDINALITY","CAST","CEIL","CHARTOROWID","CHR","COALESCE","COLLECT","COMPOSE","CONCAT","CONVERT","CORR","CORR_K","CORR_S","COS","COSH","COUNT","COVAR_POP","COVAR_SAMP","CUME_DIST","CURRENT_DATE","CURRENT_TIMESTAMP","CV","DBTIMEZONE","DECODE","DECOMPOSE","DENSE_RANK","DEPTH","DEREF","DUMP","EMPTY_BLOB","EMPTY_CLOB","EXISTSNODE","EXP","EXTRACT","EXTRACTVALUE","FIRST","FIRST_VALUE","FLOOR","FROM_TZ","GREATEST","GROUP_ID","GROUPING","GROUPING_ID","HEXTORAW","INITCAP","INSTR","INSTRB","LAG","LAST","LAST_DAY","LAST_VALUE","LEAD","LEAST","LENGTH","LENGTHB","LN","LNNVL","LOCALTIMESTAMP","LOG","LOWER","LPAD","LTRIM","MAKE_REF","MAX","MEDIAN","MIN","MOD","MONTHS_BETWEEN","NANVL","NCHR","NEW_TIME","NEXT_DAY","NLS_CHARSET_DECL_LEN","NLS_CHARSET_ID","NLS_CHARSET_NAME","NLS_INITCAP","NLS_LOWER","NLS_UPPER","NLSSORT","NTILE","NULLIF","NUMTODSINTERVAL","NUMTOYMINTERVAL","NVL","NVL2","ORA_HASH","ORA_ROWSCN","PERCENT_RANK","PERCENTILE_CONT","PERCENTILE_DISC","POWER","POWERMULTISET","POWERMULTISET_BY_CARDINALITY","PRESENTNNV","PRESENTV","RANK","RATIO_TO_REPORT","RAWTOHEX","RAWTONHEX","REF","REFTOHEX","REGEXP_INSTR","REGEXP_LIKE","REGEXP_REPLACE","REGEXP_SUBSTR","REGR_SLOPE","REGR_INTERCEPT","REGR_COUNT","REGR_R2","REGR_AVGX","REGR_AVGY","REGR_SXX","REGR_SYY","REGR_SXY","REMAINDER","ROUND","ROW_NUMBER","ROWIDTOCHAR","ROWIDTONCHAR","RPAD","RTRIM","SCN_TO_TIMESTAMP","SESSIONTIMEZONE","SIGN","SIN","SINH","SOUNDEX","SQRT","STATS_BINOMIAL_TEST","STATS_CROSSTAB","STATS_F_TEST","STATS_KS_TEST","STATS_MODE","STATS_MW_TEST","STATS_ONE_WAY_ANOVA","STATS_T_TEST_ONE","STATS_T_TEST_PAIRED","STATS_T_TEST_INDEP","STATS_T_TEST_INDEPU","STATS_WSR_TEST","STDDEV","STDDEV_POP","STDDEV_SAMP","SUBSTR","SUBSTRB","SUM","SYS_CONNECT_BY_PATH","SYS_CONTEXT","SYS_DBURIGEN","SYS_EXTRACT_UTC","SYS_GUID","SYS_TYPEID","SYS_XMLAGG","SYS_XMLGEN","SYSDATE","SYSTIMESTAMP","TAN","TANH","TIMESTAMP_TO_SCN","TO_BINARY_DOUBLE","TO_BINARY_FLOAT","TO_CHAR","TO_CLOB","TO_DATE","TO_DSINTERVAL","TO_LOB","TO_MULTI_BYTE","TO_NCHAR","TO_NCLOB","TO_NUMBER","TO_SINGLE_BYTE","TO_TIMESTAMP","TO_TIMESTAMP_TZ","TO_YMINTERVAL","TRANSLATE","TREAT","TRIM","TRUNC","TZ_OFFSET","UID","UNISTR","UPDATEXML","UPPER","USER","USERENV","VALUE","VAR_POP","VAR_SAMP","VARIANCE","VSIZE","WIDTH_BUCKET","XMLAGG","XMLCOLATTVAL","XMLCONCAT","XMLELEMENT","XMLFOREST","XMLSEQUENCE","XMLTRANSFORM"] >>= withAttribute "Function"))
+                        <|>
+                        ((pKeyword " \n\t(),%&;?[]{}\\" ["ANYDATA","ANYDATASET","ANYTYPE","ARRAY","BFILE","BINARY_DOUBLE","BINARY_FLOAT","BINARY_INTEGER","BLOB","BOOLEAN","CFILE","CHAR","CHARACTER","CLOB","DATE","DAY","DBURITYPE","DEC","DECIMAL","DOUBLE","FLOAT","FLOB","HTTPURITYPE","INT","INTEGER","INTERVAL","LOB","LONG","MLSLABEL","MONTH","NATIONAL","NCHAR","NCLOB","NUMBER","NUMERIC","NVARCHAR","OBJECT","PLS_INTEGER","PRECISION","RAW","RECORD","REAL","ROWID","SECOND","SINGLE","SMALLINT","TIME","TIMESTAMP","URIFACTORYTYPE","URITYPE","UROWID","VARCHAR","VARCHAR2","VARYING","VARRAY","XMLTYPE","YEAR","ZONE"] >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%bulk_exceptions\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%bulk_rowcount\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%found\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%isopen\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%notfound\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%rowcount\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%rowtype\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%type\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pFloat >>= withAttribute "Float"))
+                        <|>
+                        ((pInt >>= withAttribute "Decimal"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "String") >>~ pushContext "String literal")
+                        <|>
+                        ((pDetect2Chars False '-' '-' >>= withAttribute "Comment") >>~ pushContext "Singleline PL/SQL-style comment")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "Multiline C-style comment")
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "rem\\b") >>= withAttribute "Comment") >>~ pushContext "SQL*Plus remark directive")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Identifier") >>~ pushContext "User-defined identifier")
+                        <|>
+                        ((pRegExpr (compileRegex "(:|&&?)\\w+") >>= withAttribute "External Variable"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "/$") >>= withAttribute "Symbol"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "@@?[^@ \\t\\r\\n]") >>= withAttribute "Preprocessor") >>~ pushContext "SQL*Plus directive to include file"))
+     return (attr, result)
+
+parseRules "String literal" = 
+  do (attr, result) <- (((pDetect2Chars False '\\' '\'' >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((pHlCStringChar >>= withAttribute "String Char"))
+                        <|>
+                        ((pRegExpr (compileRegex "&&?\\w+") >>= withAttribute "External Variable"))
+                        <|>
+                        ((pDetect2Chars False '\'' '\'' >>= withAttribute "String Char"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Singleline PL/SQL-style comment" = 
+  pzero
+
+parseRules "Multiline C-style comment" = 
+  do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "SQL*Plus remark directive" = 
+  pzero
+
+parseRules "User-defined identifier" = 
+  do (attr, result) <- ((pDetectChar False '"' >>= withAttribute "Identifier") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "SQL*Plus directive to include file" = 
+  pzero
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/SqlMysql.hs b/Text/Highlighting/Kate/Syntax/SqlMysql.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/SqlMysql.hs
@@ -0,0 +1,177 @@
+{- This module was generated from data in the Kate syntax highlighting file sql-mysql.xml, version 1.09,
+   by  Shane Wright (me@shanewright.co.uk) -}
+
+module Text.Highlighting.Kate.Syntax.SqlMysql ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "SQL (MySQL)"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.sql;*.SQL"
+
+-- | 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 = "SQL (MySQL)" }
+  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 [("SQL (MySQL)",["Normal"])], synStLanguage = "SQL (MySQL)", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = False, synStKeywordCaseSensitive = False, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "String" -> return ()
+    "String2" -> return ()
+    "Name" -> return ()
+    "SingleLineComment" -> (popContext >> return ())
+    "MultiLineComment" -> return ()
+    "Preprocessor" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Operator","Normal"),("Function","Function"),("Data Type","DataType"),("Decimal","DecVal"),("Float","Float"),("String","String"),("Name","String"),("String Char","Char"),("Comment","Comment"),("Symbol","Char"),("Preprocessor","Others")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal Text"),("String","String"),("String2","String"),("Name","Name"),("SingleLineComment","Comment"),("MultiLineComment","Comment"),("Preprocessor","Preprocessor")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "SET(?=\\s*\\()") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\bCHARACTER SET\\b") >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t(),%&;?[]{}\\" ["ACCESS","ADD","ALL","ALTER","ANALYZE","AND","AS","ASC","AUTO_INCREMENT","BDB","BERKELEYDB","BETWEEN","BOTH","BY","CASCADE","CASE","CHANGE","CHARSET","COLUMN","COLUMNS","CONSTRAINT","CREATE","CROSS","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","DATABASE","DATABASES","DAY_HOUR","DAY_MINUTE","DAY_SECOND","DEC","DEFAULT","DELAYED","DELETE","DESC","DESCRIBE","DISTINCT","DISTINCTROW","DROP","ELSE","ENCLOSED","ESCAPED","EXISTS","EXPLAIN","FIELDS","FOR","FOREIGN","FROM","FULLTEXT","FUNCTION","GRANT","GROUP","HAVING","HIGH_PRIORITY","IF","IGNORE","IN","INDEX","INFILE","INNER","INNODB","INSERT","INTERVAL","INTO","IS","JOIN","KEY","KEYS","KILL","LEADING","LEFT","LIKE","LIMIT","LINES","LOAD","LOCK","LOW_PRIORITY","MASTER_SERVER_ID","MATCH","MRG_MYISAM","NATURAL","NATIONAL","NOT","NULL","NUMERIC","ON","OPTIMIZE","OPTION","OPTIONALLY","OR","ORDER","OUTER","OUTFILE","PARTIAL","PRECISION","PRIMARY","PRIVILEGES","PROCEDURE","PURGE","READ","REFERENCES","REGEXP","RENAME","REPLACE","REQUIRE","RESTRICT","RETURNS","REVOKE","RIGHT","RLIKE","SELECT","SET","SHOW","SONAME","SQL_BIG_RESULT","SQL_CALC_FOUND_ROWS","SQL_SMALL_RESULT","SSL","STARTING","STRAIGHT_JOIN","STRIPED","TABLE","TABLES","TERMINATED","THEN","TO","TRAILING","TRUNCATE","TYPE","UNION","UNIQUE","UNLOCK","UNSIGNED","UPDATE","USAGE","USE","USER_RESOURCES","USING","VALUES","VARYING","WHEN","WHERE","WITH","WRITE","XOR","YEAR_MONTH","ZEROFILL"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t(),%&;?[]{}\\" ["+","-","*","/","||","=","!=","<>","<","<=",">",">=","~=","^=",":=","=>","**",".."] >>= withAttribute "Operator"))
+                        <|>
+                        ((pKeyword " \n\t(),%&;?[]{}\\" ["ASCII","ORD","CONV","BIN","OCT","HEX","CHAR","CONCAT","CONCAT_WS","LENGTH","OCTET_LENGTH","CHAR_LENGTH","CHARACTER_LENGTH","BIT_LENGTH","LOCATE","POSITION","INSTR","LPAD","RPAD","LEFT","RIGHT","SUBSTRING","SUBSTRING_INDEX","MID","LTRIM","RTRIM","TRIM","SOUNDEX","SPACE","REPLACE","REPEAT","REVERSE","INSERT","ELT","FIELD","FIND_IN_SET","MAKE_SET","EXPORT_SET","LCASE","LOWER","UCASE","UPPER","LOAD_FILE","QUOTE","ABS","SIGN","MOD","FLOOR","CEILING","ROUND","EXP","LN","LOG","LOG2","LOG10","POW","POWER","SQRT","PI","COS","SIN","TAN","ACOS","ASIN","ATAN","ATAN2","COT","RAND","LEAST","GREATEST","DEGREES","RADIANS","DAYOFWEEK","WEEKDAY","DAYOFMONTH","DAYOFYEAR","MONTH","DAYNAME","MONTHNAME","QUARTER","WEEK","YEAR","YEARWEEK","HOUR","MINUTE","SECOND","PERIOD_ADD","PERIOD_DIFF","DATE_ADD","DATE_SUB","ADDDATE","SUBDATE","EXTRACT","TO_DAYS","FROM_DAYS","DATE_FORMAT","TIME_FORMAT","CURDATE","CURRENT_DATE","CURTIME","CURRENT_TIME","NOW","SYSDATE","CURRENT_TIMESTAMP","UNIX_TIMESTAMP","FROM_UNIXTIME","SEC_TO_TIME","TIME_TO_SEC","CAST","CONVERT","BIT_COUNT","DATABASE","USER","SYSTEM_USER","SESSION_USER","PASSWORD","ENCRYPT","ENCODE","DECODE","MD5","SHA1","SHA","AES_ENCRYPT","AES_DECRYPT","DES_ENCRYPT","DES_DECRYPT","LAST_INSERT_ID","FORMAT","VERSION","CONNECTION_ID","GET_LOCK","RELEASE_LOCK","IS_FREE_LOCK","BENCHMARK","INET_NTOA","INET_ATON","MASTER_POS_WAIT","FOUND_ROWS","COUNT","AVG","MIN","MAX","SUM","STD","STDDEV","BIT_OR","BIT_AND"] >>= withAttribute "Function"))
+                        <|>
+                        ((pKeyword " \n\t(),%&;?[]{}\\" ["CHAR","CHARACTER","VARCHAR","BINARY","VARBINARY","TINYBLOB","MEDIUMBLOB","BLOB","LONGBLOB","TINYTEXT","MEDIUMTEXT","TEXT","LONGTEXT","ENUM","BIT","BOOL","BOOLEAN","TINYINT","SMALLINT","MEDIUMINT","MIDDLEINT","INT","INTEGER","BIGINT","FLOAT","DOUBLE","REAL","DECIMAL","DEC","FIXED","NUMERIC","LONG","SERIAL","DATE","DATETIME","TIME","TIMESTAMP","YEAR"] >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%bulk_exceptions\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%bulk_rowcount\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%found\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%isopen\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%notfound\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%rowcount\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%rowtype\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%type\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pFloat >>= withAttribute "Float"))
+                        <|>
+                        ((pInt >>= withAttribute "Decimal"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String2")
+                        <|>
+                        ((pDetectChar False '`' >>= withAttribute "Name") >>~ pushContext "Name")
+                        <|>
+                        ((pDetectChar False '#' >>= withAttribute "Comment") >>~ pushContext "SingleLineComment")
+                        <|>
+                        ((pDetect2Chars False '-' '-' >>= withAttribute "Comment") >>~ pushContext "SingleLineComment")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "MultiLineComment")
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "rem\\b") >>= withAttribute "Comment") >>~ pushContext "SingleLineComment")
+                        <|>
+                        ((pAnyChar ":&" >>= withAttribute "Symbol"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "/$") >>= withAttribute "Symbol"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "@@?[^@ \\t\\r\\n]") >>= withAttribute "Preprocessor") >>~ pushContext "Preprocessor")
+                        <|>
+                        ((pDetectChar False '.' >>= withAttribute "String Char")))
+     return (attr, result)
+
+parseRules "String" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((pHlCStringChar >>= withAttribute "String Char"))
+                        <|>
+                        ((pDetectChar False '&' >>= withAttribute "Symbol"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "String2" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((pHlCStringChar >>= withAttribute "String Char"))
+                        <|>
+                        ((pDetectChar False '&' >>= withAttribute "Symbol"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Name" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "Name") >>~ (popContext >> return ()))
+                        <|>
+                        ((pHlCStringChar >>= withAttribute "String Char"))
+                        <|>
+                        ((pDetectChar False '`' >>= withAttribute "Name") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "SingleLineComment" = 
+  pzero
+
+parseRules "MultiLineComment" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Preprocessor" = 
+  pzero
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/SqlPostgresql.hs b/Text/Highlighting/Kate/Syntax/SqlPostgresql.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/SqlPostgresql.hs
@@ -0,0 +1,154 @@
+{- This module was generated from data in the Kate syntax highlighting file sql-postgresql.xml, version 1.08,
+   by  Shane Wright (me@shanewright.co.uk) -}
+
+module Text.Highlighting.Kate.Syntax.SqlPostgresql ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "SQL (PostgreSQL)"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.sql;*.SQL"
+
+-- | 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 = "SQL (PostgreSQL)" }
+  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 [("SQL (PostgreSQL)",["Normal"])], synStLanguage = "SQL (PostgreSQL)", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = False, synStKeywordCaseSensitive = False, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal" -> return ()
+    "String" -> return ()
+    "SingleLineComment" -> (popContext >> return ())
+    "MultiLineComment" -> return ()
+    "Identifier" -> (popContext >> return ())
+    "Preprocessor" -> (popContext >> return ())
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Operator","Normal"),("Function","Function"),("Data Type","DataType"),("Decimal","DecVal"),("Float","Float"),("String","String"),("String Char","Char"),("Comment","Comment"),("Identifier","Others"),("Symbol","Char"),("Preprocessor","Others")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal","Normal Text"),("String","String"),("SingleLineComment","Comment"),("MultiLineComment","Comment"),("Identifier","Identifier"),("Preprocessor","Preprocessor")]
+
+parseRules "Normal" = 
+  do (attr, result) <- (((pKeyword " \n\t(),;[]{}\\" ["ABORT","ACCESS","ACTION","ADD","ADMIN","AFTER","AGGREGATE","ALIAS","ALL","ALLOCATE","ALTER","ANALYSE","ANALYZE","ANY","ARE","AS","ASC","ASENSITIVE","ASSERTION","ASSIGNMENT","ASYMMETRIC","AT","ATOMIC","AUTHORIZATION","BACKWARD","BEFORE","BEGIN","BETWEEN","BINARY","BOTH","BREADTH","BY","C","CACHE","CALL","CALLED","CARDINALITY","CASCADE","CASCADED","CASE","CAST","CATALOG","CATALOG_NAME","CHAIN","CHAR_LENGTH","CHARACTER_LENGTH","CHARACTER_SET_CATALOG","CHARACTER_SET_NAME","CHARACTER_SET_SCHEMA","CHARACTERISTICS","CHECK","CHECKED","CHECKPOINT","CLASS","CLASS_ORIGIN","CLOB","CLOSE","CLUSTER","COALESCE","COBOL","COLLATE","COLLATION","COLLATION_CATALOG","COLLATION_NAME","COLLATION_SCHEMA","COLUMN","COLUMN_NAME","COMMAND_FUNCTION","COMMAND_FUNCTION_CODE","COMMENT","COMMIT","COMMITTED","COMPLETION","CONDITION_NUMBER","CONNECT","CONNECTION","CONNECTION_NAME","CONSTRAINT","CONSTRAINT_CATALOG","CONSTRAINT_NAME","CONSTRAINT_SCHEMA","CONSTRAINTS","CONSTRUCTOR","CONTAINS","CONTINUE","CONVERT","COPY","CORRESPONDING","COUNT","CREATE","CREATEDB","CREATEUSER","CROSS","CUBE","CURRENT","CURRENT_DATE","CURRENT_PATH","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","CURSOR_NAME","CYCLE","DATA","DATABASE","DATE","DATETIME_INTERVAL_CODE","DATETIME_INTERVAL_PRECISION","DAY","DEALLOCATE","DEC","DECIMAL","DECLARE","DEFAULT","DEFERRABLE","DEFERRED","DEFINED","DEFINER","DELETE","DELIMITERS","DEPTH","DEREF","DESC","DESCRIBE","DESCRIPTOR","DESTROY","DESTRUCTOR","DETERMINISTIC","DIAGNOSTICS","DICTIONARY","DISCONNECT","DISPATCH","DISTINCT","DO","DOMAIN","DOUBLE","DROP","DYNAMIC","DYNAMIC_FUNCTION","DYNAMIC_FUNCTION_CODE","EACH","ELSE","ENCODING","ENCRYPTED","END","END-EXEC","EQUALS","ESCAPE","EVERY","EXCEPT","EXCEPTION","EXCLUSIVE","EXEC","EXECUTE","EXISTING","EXISTS","EXPLAIN","EXTERNAL","FETCH","FINAL","FIRST","FOR","FORCE","FOREIGN","FORTRAN","FORWARD","FOUND","FREE","FREEZE","FROM","FULL","FUNCTION","G","GENERAL","GENERATED","GET","GLOBAL","GO","GOTO","GRANT","GRANTED","GROUP","GROUPING","HANDLER","HAVING","HIERARCHY","HOLD","HOST","HOUR","IDENTITY","IGNORE","ILIKE","IMMEDIATE","IMMUTABLE","IMPLEMENTATION","IN","INCREMENT","INDEX","INDICATOR","INFIX","INHERITS","INITIALIZE","INITIALLY","INNER","INOUT","INPUT","INSENSITIVE","INSERT","INSTANCE","INSTANTIABLE","INSTEAD","INTERSECT","INTERVAL","INTO","INVOKER","IS","ISNULL","ISOLATION","ITERATE","JOIN","K","KEY","KEY_MEMBER","KEY_TYPE","LANCOMPILER","LANGUAGE","LARGE","LAST","LATERAL","LEADING","LEFT","LENGTH","LESS","LEVEL","LIKE","LIMIT","LISTEN","LOAD","LOCAL","LOCALTIME","LOCALTIMESTAMP","LOCATION","LOCATOR","LOCK","LOWER","M","MAP","MATCH","MAX","MAXVALUE","MESSAGE_LENGTH","MESSAGE_OCTET_LENGTH","MESSAGE_TEXT","METHOD","MIN","MINUTE","MINVALUE","MOD","MODE","MODIFIES","MODIFY","MODULE","MONTH","MORE","MOVE","MUMPS","NAME","NAMES","NATIONAL","NATURAL","NEW","NEXT","NO","NOCREATEDB","NOCREATEUSER","NONE","NOT","NOTHING","NOTIFY","NOTNULL","NULL","NULLABLE","NULLIF","NUMBER","NUMERIC","OBJECT","OCTET_LENGTH","OF","OFF","OFFSET","OIDS","OLD","ON","ONLY","OPEN","OPERATION","OPERATOR","OPTION","OPTIONS","ORDER","ORDINALITY","OUT","OUTER","OUTPUT","OVERLAPS","OVERLAY","OVERRIDING","OWNER","PAD","PARAMETER","PARAMETER_MODE","PARAMETER_NAME","PARAMETER_ORDINAL_POSITION","PARAMETER_SPECIFIC_CATALOG","PARAMETER_SPECIFIC_NAME","PARAMETER_SPECIFIC_SCHEMA","PARAMETERS","PARTIAL","PASCAL","PASSWORD","PATH","PENDANT","PLI","POSITION","POSTFIX","PRECISION","PREFIX","PREORDER","PREPARE","PRESERVE","PRIMARY","PRIOR","PRIVILEGES","PROCEDURAL","PROCEDURE","PUBLIC","READ","READS","REAL","RECURSIVE","REF","REFERENCES","REFERENCING","REINDEX","RELATIVE","RENAME","REPEATABLE","REPLACE","RESET","RESTRICT","RESULT","RETURN","RETURNED_LENGTH","RETURNED_OCTET_LENGTH","RETURNED_SQLSTATE","RETURNS","REVOKE","RIGHT","ROLE","ROLLBACK","ROLLUP","ROUTINE","ROUTINE_CATALOG","ROUTINE_NAME","ROUTINE_SCHEMA","ROW","ROW_COUNT","ROWS","RULE","SAVEPOINT","SCALE","SCHEMA","SCHEMA_NAME","SCOPE","SCROLL","SEARCH","SECOND","SECTION","SECURITY","SELECT","SELF","SENSITIVE","SEQUENCE","SERIALIZABLE","SERVER_NAME","SESSION","SESSION_USER","SET","SETOF","SETS","SHARE","SHOW","SIMILAR","SIMPLE","SIZE","SOME","SOURCE","SPACE","SPECIFIC","SPECIFIC_NAME","SPECIFICTYPE","SQL","SQLCODE","SQLERROR","SQLEXCEPTION","SQLSTATE","SQLWARNING","STABLE","START","STATE","STATEMENT","STATIC","STATISTICS","STDIN","STDOUT","STRUCTURE","STYLE","SUBCLASS_ORIGIN","SUBLIST","SUBSTRING","SUM","SYMMETRIC","SYSID","SYSTEM","SYSTEM_USER","TABLE","TABLE_NAME","TEMP","TEMPLATE","TEMPORARY","TERMINATE","THAN","THEN","TIMEZONE_HOUR","TIMEZONE_MINUTE","TO","TOAST","TRAILING","TRANSACTION","TRANSACTION_ACTIVE","TRANSACTIONS_COMMITTED","TRANSACTIONS_ROLLED_BACK","TRANSFORM","TRANSFORMS","TRANSLATE","TRANSLATION","TREAT","TRIGGER","TRIGGER_CATALOG","TRIGGER_NAME","TRIGGER_SCHEMA","TRIM","TRUNCATE","TRUSTED","TYPE","UNCOMMITTED","UNDER","UNENCRYPTED","UNION","UNIQUE","UNKNOWN","UNLISTEN","UNNAMED","UNNEST","UNTIL","UPDATE","UPPER","USAGE","USER","USER_DEFINED_TYPE_CATALOG","USER_DEFINED_TYPE_NAME","USER_DEFINED_TYPE_SCHEMA","USING","VACUUM","VALID","VALUE","VALUES","VARIABLE","VARYING","VERBOSE","VERSION","VIEW","VOLATILE","WHEN","WHENEVER","WHERE","WITH","WITHOUT","WORK","WRITE","YEAR","ZONE","FALSE","TRUE"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t(),;[]{}\\" ["+","-","*","/","||","|/","||/","!","!!","@","&","|","#","<<",">>","%","^","=","!=","<>","<","<=",">",">=","~","~*","!~","!~*","^=",":=","=>","**","..","AND","OR","NOT","##","&&","&<","&>","<->","<^",">^","?#","?-","?-|","@-@","?|","?||","@@","~=","<<=",">>="] >>= withAttribute "Operator"))
+                        <|>
+                        ((pKeyword " \n\t(),;[]{}\\" ["ABS","CBRT","CEIL","DEGREES","EXP","FLOOR","LN","LOG","MOD","PI","POW","RADIANS","RANDOM","ROUND","SIGN","SQRT","TRUNC","ACOS","ASIN","ATAN","ATAN2","COS","COT","SIN","TAN","BIT_LENGTH","CHAR_LENGTH","CHARACTER_LENGTH","LOWER","OCTET_LENGTH","POSITION","SUBSTRING","TRIM","UPPER","ASCII","BTRIM","CHR","CONVERT","INITCAP","LENGTH","LPAD","LTRIM","PG_CLIENT_ENCODING","REPEAT","RPAD","RTRIM","STRPOS","SUBSTR","TO_ASCII","TRANSLATE","ENCODE","DECODE","TO_CHAR","TO_DATE","TO_TIMESTAMP","TO_NUMBER","AGE","DATE_PART","DATE_TRUNC","EXTRACT","ISFINITE","NOW","TIMEOFDAY","TIMESTAMP","EXTRACT","AREA","BOX","CENTER","DIAMETER","HEIGHT","ISCLOSED","ISOPEN","PCLOSE","NPOINT","POPEN","RADIUS","WIDTH","BOX","CIRCLE","LSEG","PATH","POINT","POLYGON","BROADCAST","HOST","MASKLEN","SET_MASKLEN","NETMASK","NETWORK","ABBREV","NEXTVAL","CURRVAL","SETVAL","COALESCE","NULLIF","HAS_TABLE_PRIVILEGE","PG_GET_VIEWDEF","PG_GET_RULEDEF","PG_GET_INDEXDEF","PG_GET_USERBYID","OBJ_DESCRIPTION","COL_DESCRIPTION","AVG","COUNT","MAX","MIN","STDDEV","SUM","VARIANCE"] >>= withAttribute "Function"))
+                        <|>
+                        ((pKeyword " \n\t(),;[]{}\\" ["LZTEXT","BIGINT","INT2","INT8","BIGSERIAL","SERIAL8","BIT","BIT VARYING","VARBIT","BOOLEAN","BOOL","BOX","BYTEA","CHARACTER","CHAR","CHARACTER VARYING","VARCHAR","CIDR","CIRCLE","DATE","DOUBLE PRECISION","FLOAT8","INET","INTEGER","INT","INT4","INTERVAL","LINE","LSEG","MACADDR","MONEY","NUMERIC","DECIMAL","OID","PATH","POINT","POLYGON","REAL","SMALLINT","SERIAL","TEXT","TIME","TIMETZ","TIMESTAMP","TIMESTAMPTZ","TIMESTAMP WITH TIMEZONE"] >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%bulk_exceptions\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%bulk_rowcount\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%found\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%isopen\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%notfound\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%rowcount\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%rowtype\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pRegExpr (compileRegex "%type\\b") >>= withAttribute "Data Type"))
+                        <|>
+                        ((pFloat >>= withAttribute "Float"))
+                        <|>
+                        ((pInt >>= withAttribute "Decimal"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((pDetectChar False '#' >>= withAttribute "Comment") >>~ pushContext "SingleLineComment")
+                        <|>
+                        ((pDetect2Chars False '-' '-' >>= withAttribute "Comment") >>~ pushContext "SingleLineComment")
+                        <|>
+                        ((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "MultiLineComment")
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "rem\\b") >>= withAttribute "Comment") >>~ pushContext "SingleLineComment")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Comment") >>~ pushContext "Identifier")
+                        <|>
+                        ((pAnyChar ":&" >>= withAttribute "Symbol"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "/$") >>= withAttribute "Symbol"))
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "@@?[^@ \\t\\r\\n]") >>= withAttribute "Preprocessor") >>~ pushContext "Preprocessor"))
+     return (attr, result)
+
+parseRules "String" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((pHlCStringChar >>= withAttribute "String Char"))
+                        <|>
+                        ((pDetectChar False '&' >>= withAttribute "Symbol"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "SingleLineComment" = 
+  pzero
+
+parseRules "MultiLineComment" = 
+  do (attr, result) <- (((pLineContinue >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Identifier" = 
+  do (attr, result) <- ((pDetectChar False '"' >>= withAttribute "Identifier") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Preprocessor" = 
+  pzero
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Tcl.hs b/Text/Highlighting/Kate/Syntax/Tcl.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Tcl.hs
@@ -0,0 +1,133 @@
+{- This module was generated from data in the Kate syntax highlighting file tcl.xml, version 1.10,
+   by   -}
+
+module Text.Highlighting.Kate.Syntax.Tcl ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Tcl/Tk"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.tcl;*.tk"
+
+-- | 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 = "Tcl/Tk" }
+  context <- currentContext <|> (pushContext "Base" >> 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 [("Tcl/Tk",["Base"])], synStLanguage = "Tcl/Tk", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Base" -> return ()
+    "String" -> return ()
+    "Comment" -> (popContext >> return ())
+    "New command line" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Keyword","Keyword"),("Decimal","DecVal"),("Float","Float"),("String","String"),("Comment","Comment"),("Parameter","Others"),("Variable","DataType"),("Char","Char"),("Region Marker","RegionMarker")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Base","Normal Text"),("String","String"),("Comment","Comment"),("New command line","Normal Text")]
+
+parseRules "Base" = 
+  do (attr, result) <- (((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*BEGIN.*$") >>= withAttribute "Region Marker"))
+                        <|>
+                        ((pFirstNonSpace >> pRegExpr (compileRegex "#\\s*END.*$") >>= withAttribute "Region Marker"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["after","append","AppleScript","argv","argc","array","auto_execk","auto_load","auto_mkindex","auto_path","auto_reset","beep","bell","binary","bind","bindtags","bgerror","break","button","canvas","case","catch","cd","checkbutton","clipboard","clock","close","concat","console","continue","dde","destroy","else","elseif","encoding","entry","env","eof","error","errorCode","errorInfo","eval","event","exec","exit","expr","fblocked","fconfigure","fcopy","file","fileevent","flush","focus","font","for","foreach","format","frame","gets","glob","global","grab","grid","history","if","image","incr","info","interp","join","label","lappend","lindex","linsert","list","listbox","llength","load","lower","lrange","lreplace","lsearch","lsort","menu","menubutton","message","namespace","open","option","OptProc","pack","package","parray","pid","place","pkg_mkindex","proc","puts","pwd","radiobutton","raise","read","regexp","registry","regsub","rename","resource","return","scale","scan","scrollbar","seek","selection","send","set","socket","source","split","string","subst","switch","tclLog","tcl_endOfWord","tcl_findLibrary","tcl_library","tcl_patchLevel","tcl_platform","tcl_precision","tcl_rcFileName","tcl_rcRsrcName","tcl_startOfNextWord","tcl_startOfPreviousWord","tcl_traceCompile","tcl_traceExec","tcl_version","tcl_wordBreakAfter","tcl_wordBreakBefore","tell","text","time","tk","tkTabToWindow","tkwait","tk_chooseColor","tk_chooseDirectory","tk_focusFollowMouse","tk_focusNext","tk_focusPrev","tk_getOpenFile","tk_getSaveFile","tk_library","tk_messageBox","tk_optionMenu","tk_patchLevel","tk_popup","tk_strictMotif","tk_version","toplevel","trace","unknown","unset","update","uplevel","upvar","variable","vwait","while","winfo","wm"] >>= withAttribute "Keyword"))
+                        <|>
+                        ((pKeyword " \n\t.():!+,-<=>%&*/;?[]^{|}~\\" ["add","args","atime","attributes","body","bytelength","cancel","channels","clicks","cmdcount","commands","compare","complete","convertfrom","convertto","copy","default","delete","dirname","equal","executable","exists","extension","first","forget","format","functions","globals","hostname","idle","ifneeded","index","info","is","isdirectory","isfile","join","last","length","level","library","link","loaded","locals","lstat","map","match","mkdir","mtime","nameofexecutable","names","nativename","normalize","number","owned","patchlevel","pathtype","present","procs","provide","range","readable","readlink","remove","rename","repeat","replace","require","rootname","scan","script","seconds","separator","sharedlibextension","size","split","stat","system","tail","tclversion","tolower","totitle","toupper","trim","trimleft","trimright","type","unknown","variable","vars","vcompare","vdelete","versions","vinfo","volumes","vsatisfies","wordend","wordstart","writable","activate","actual","addtag","append","appname","aspect","atom","atomname","bbox","bind","broadcast","canvasx","canvasy","caret","cells","cget","children","class","clear","client","clone","colormapfull","colormapwindows","command","configure","containing","coords","create","current","curselection","dchars","debug","deiconify","delta","depth","deselect","dlineinfo","dtag","dump","edit","entrycget","entryconfigure","families","find","flash","focus","focusmodel","fpixels","fraction","frame","generate","geometry","get","gettags","grid","group","handle","height","hide","iconbitmap","iconify","iconmask","iconname","iconposition","iconwindow","icursor","id","identify","image","insert","interps","inuse","invoke","ismapped","itemcget","itemconfigure","keys","lower","manager","mark","maxsize","measure","metrics","minsize","move","name","nearest","overrideredirect","own","panecget","paneconfigure","panes","parent","pathname","pixels","pointerx","pointerxy","pointery","positionfrom","post","postcascade","postscript","protocol","proxy","raise","release","reqheight","reqwidth","resizable","rgb","rootx","rooty","scale","scaling","screen","screencells","screendepth","screenheight","screenmmheight","screenmmwidth","screenvisual","screenwidth","search","see","select","selection","server","set","show","sizefrom","stackorder","state","status","tag","title","toplevel","transient","types","unpost","useinputmethods","validate","values","viewable","visual","visualid","visualsavailable","vrootheight","vrootwidth","vrootx","vrooty","width","window","windowingsystem","withdraw","x","xview","y"] >>= withAttribute "Parameter"))
+                        <|>
+                        ((pFloat >>= withAttribute "Float"))
+                        <|>
+                        ((pInt >>= withAttribute "Decimal"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\\\.") >>= withAttribute "Char"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s-\\w+") >>= withAttribute "Parameter"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$\\{([^\\}]|\\\\\\})+\\}") >>= withAttribute "Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$(::|\\w)+") >>= withAttribute "Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "\"{2}") >>= withAttribute "String"))
+                        <|>
+                        ((pRegExpr (compileRegex "\"") >>= withAttribute "String") >>~ pushContext "String")
+                        <|>
+                        ((pDetectChar False ';' >>= withAttribute "Normal Text") >>~ pushContext "New command line")
+                        <|>
+                        ((pFirstNonSpace >> pDetectChar False '#' >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Keyword"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Keyword"))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Keyword"))
+                        <|>
+                        ((pDetectChar False ']' >>= withAttribute "Keyword")))
+     return (attr, result)
+
+parseRules "String" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\.") >>= withAttribute "Char"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '$' >>= withAttribute "Variable")))
+     return (attr, result)
+
+parseRules "Comment" = 
+  pzero
+
+parseRules "New command line" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\s*#") >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pRegExpr (compileRegex ".") >>= withAttribute "Normal Text") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Texinfo.hs b/Text/Highlighting/Kate/Syntax/Texinfo.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Texinfo.hs
@@ -0,0 +1,114 @@
+{- This module was generated from data in the Kate syntax highlighting file texinfo.xml, version 0.2,
+   by  Daniel Franke (franke.daniel@gmail.com) -}
+
+module Text.Highlighting.Kate.Syntax.Texinfo ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Alert
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Texinfo"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.texi"
+
+-- | 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 = "Texinfo" }
+  context <- currentContext <|> (pushContext "Normal Text" >> 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 [("Texinfo",["Normal Text"])], synStLanguage = "Texinfo", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Normal Text" -> return ()
+    "singleLineComment" -> (popContext >> return ())
+    "multiLineComment" -> return ()
+    "nodeFolding" -> return ()
+    "folding" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Comment","Comment"),("Command","Function")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Normal Text","Normal Text"),("singleLineComment","Comment"),("multiLineComment","Comment"),("nodeFolding","Normal Text"),("folding","Normal Text")]
+
+parseRules "Normal Text" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "@c(omment)?\\b") >>= withAttribute "Comment") >>~ pushContext "singleLineComment")
+                        <|>
+                        ((pRegExpr (compileRegex "@ignore\\b") >>= withAttribute "Comment") >>~ pushContext "multiLineComment")
+                        <|>
+                        ((pRegExpr (compileRegex "@node\\b") >>= withAttribute "Command") >>~ pushContext "nodeFolding")
+                        <|>
+                        ((pRegExpr (compileRegex "@(menu|smallexample|table|multitable)\\b") >>= withAttribute "Command") >>~ pushContext "folding")
+                        <|>
+                        ((pRegExpr (compileRegex "@[\\w]+(\\{([\\w]+[\\s]*)+\\})?") >>= withAttribute "Command")))
+     return (attr, result)
+
+parseRules "singleLineComment" = 
+  do (attr, result) <- ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+     return (attr, result)
+
+parseRules "multiLineComment" = 
+  do (attr, result) <- (((pString False "@end ignore" >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd))))
+     return (attr, result)
+
+parseRules "nodeFolding" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "@node\\b") >>= withAttribute "Command") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "Normal Text")))
+     return (attr, result)
+
+parseRules "folding" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "@end (menu|smallexample|table|multitable)\\b") >>= withAttribute "Command") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "Normal Text")))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Xml.hs b/Text/Highlighting/Kate/Syntax/Xml.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Xml.hs
@@ -0,0 +1,244 @@
+{- This module was generated from data in the Kate syntax highlighting file xml.xml, version 1.97,
+   by  Wilbert Berendsen (wilbert@kde.nl) -}
+
+module Text.Highlighting.Kate.Syntax.Xml ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Alert
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "XML"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.docbook;*.xml;*.rc;*.daml;*.rdf;*.rss;*.xspf"
+
+-- | 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 = "XML" }
+  context <- currentContext <|> (pushContext "Start" >> 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 [("XML",["Start"])], synStLanguage = "XML", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Start" -> return ()
+    "FindXML" -> return ()
+    "FindEntityRefs" -> return ()
+    "FindPEntityRefs" -> return ()
+    "Comment" -> return ()
+    "CDATA" -> return ()
+    "PI" -> return ()
+    "Doctype" -> return ()
+    "Doctype Internal Subset" -> return ()
+    "Doctype Markupdecl" -> return ()
+    "Doctype Markupdecl DQ" -> return ()
+    "Doctype Markupdecl SQ" -> return ()
+    "Element" -> return ()
+    "El Content" -> return ()
+    "El End" -> return ()
+    "Attribute" -> return ()
+    "Value" -> return ()
+    "Value DQ" -> return ()
+    "Value SQ" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Comment","Comment"),("CDATA","BaseN"),("Processing Instruction","Keyword"),("Doctype","DataType"),("Element","Keyword"),("Attribute","Others"),("Value","String"),("EntityRef","DecVal"),("PEntityRef","DecVal"),("Error","Error")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Start","Normal Text"),("FindXML","Normal Text"),("FindEntityRefs","Normal Text"),("FindPEntityRefs","Normal Text"),("Comment","Comment"),("CDATA","Normal Text"),("PI","Normal Text"),("Doctype","Normal Text"),("Doctype Internal Subset","Normal Text"),("Doctype Markupdecl","Normal Text"),("Doctype Markupdecl DQ","Value"),("Doctype Markupdecl SQ","Value"),("Element","Normal Text"),("El Content","Normal Text"),("El End","Normal Text"),("Attribute","Normal Text"),("Value","Normal Text"),("Value DQ","Value"),("Value SQ","Value")]
+
+parseRules "Start" = 
+  do (attr, result) <- ((parseRules "FindXML"))
+     return (attr, result)
+
+parseRules "FindXML" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pString False "<!--" >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pString False "<![CDATA[" >>= withAttribute "CDATA") >>~ pushContext "CDATA")
+                        <|>
+                        ((pRegExpr (compileRegex "<!DOCTYPE\\s+") >>= withAttribute "Doctype") >>~ pushContext "Doctype")
+                        <|>
+                        ((pRegExpr (compileRegex "<\\?[\\w:_-]*") >>= withAttribute "Processing Instruction") >>~ pushContext "PI")
+                        <|>
+                        ((pRegExpr (compileRegex "<[A-Za-z_:][\\w.:_-]*") >>= withAttribute "Element") >>~ pushContext "Element")
+                        <|>
+                        ((parseRules "FindEntityRefs"))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Normal Text")))
+     return (attr, result)
+
+parseRules "FindEntityRefs" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "&(#[0-9]+|#[xX][0-9A-Fa-f]+|[A-Za-z_:][\\w.:_-]*);") >>= withAttribute "EntityRef"))
+                        <|>
+                        ((pAnyChar "&<" >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "FindPEntityRefs" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "&(#[0-9]+|#[xX][0-9A-Fa-f]+|[A-Za-z_:][\\w.:_-]*);") >>= withAttribute "EntityRef"))
+                        <|>
+                        ((pRegExpr (compileRegex "%[A-Za-z_:][\\w.:_-]*;") >>= withAttribute "PEntityRef"))
+                        <|>
+                        ((pAnyChar "&%" >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "Comment" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Comment"))
+                        <|>
+                        ((pString False "-->" >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "-(-(?!->))+") >>= withAttribute "Error"))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Alert.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Comment")))
+     return (attr, result)
+
+parseRules "CDATA" = 
+  do (attr, result) <- (((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectIdentifier >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pString False "]]>" >>= withAttribute "CDATA") >>~ (popContext >> return ()))
+                        <|>
+                        ((pString False "]]&gt;" >>= withAttribute "EntityRef")))
+     return (attr, result)
+
+parseRules "PI" = 
+  do (attr, result) <- ((pDetect2Chars False '?' '>' >>= withAttribute "Processing Instruction") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Doctype" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Doctype") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '[' >>= withAttribute "Doctype") >>~ pushContext "Doctype Internal Subset"))
+     return (attr, result)
+
+parseRules "Doctype Internal Subset" = 
+  do (attr, result) <- (((pDetectChar False ']' >>= withAttribute "Doctype") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "<!(ELEMENT|ENTITY|ATTLIST|NOTATION)\\b") >>= withAttribute "Doctype") >>~ pushContext "Doctype Markupdecl")
+                        <|>
+                        ((pString False "<!--" >>= withAttribute "Comment") >>~ pushContext "Comment")
+                        <|>
+                        ((pRegExpr (compileRegex "<\\?[\\w:_-]*") >>= withAttribute "Processing Instruction") >>~ pushContext "PI")
+                        <|>
+                        ((parseRules "FindPEntityRefs")))
+     return (attr, result)
+
+parseRules "Doctype Markupdecl" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Doctype") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Value") >>~ pushContext "Doctype Markupdecl DQ")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Value") >>~ pushContext "Doctype Markupdecl SQ"))
+     return (attr, result)
+
+parseRules "Doctype Markupdecl DQ" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "Value") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindPEntityRefs")))
+     return (attr, result)
+
+parseRules "Doctype Markupdecl SQ" = 
+  do (attr, result) <- (((pDetectChar False '\'' >>= withAttribute "Value") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "FindPEntityRefs")))
+     return (attr, result)
+
+parseRules "Element" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '>' >>= withAttribute "Element") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Element") >>~ pushContext "El Content")
+                        <|>
+                        ((pColumn 0 >> pRegExpr (compileRegex "[A-Za-z_:][\\w.:_-]*") >>= withAttribute "Attribute") >>~ pushContext "Attribute")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s+[A-Za-z_:][\\w.:_-]*") >>= withAttribute "Attribute") >>~ pushContext "Attribute")
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "El Content" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "</[A-Za-z_:][\\w.:_-]*") >>= withAttribute "Element") >>~ pushContext "El End")
+                        <|>
+                        ((parseRules "FindXML")))
+     return (attr, result)
+
+parseRules "El End" = 
+  do (attr, result) <- (((pDetectChar False '>' >>= withAttribute "Element") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "Attribute" = 
+  do (attr, result) <- (((pDetectChar False '=' >>= withAttribute "Attribute") >>~ pushContext "Value")
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "Value" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "Value") >>~ pushContext "Value DQ")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Value") >>~ pushContext "Value SQ")
+                        <|>
+                        ((pRegExpr (compileRegex "\\S") >>= withAttribute "Error")))
+     return (attr, result)
+
+parseRules "Value DQ" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "Value") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "FindEntityRefs")))
+     return (attr, result)
+
+parseRules "Value SQ" = 
+  do (attr, result) <- (((pDetectChar False '\'' >>= withAttribute "Value") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "FindEntityRefs")))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Xslt.hs b/Text/Highlighting/Kate/Syntax/Xslt.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Xslt.hs
@@ -0,0 +1,236 @@
+{- This module was generated from data in the Kate syntax highlighting file xslt.xml, version 1.03,
+   by  Peter Lammich (views@gmx.de) -}
+
+module Text.Highlighting.Kate.Syntax.Xslt ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "xslt"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.xsl;*.xslt"
+
+-- | 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 = "xslt" }
+  context <- currentContext <|> (pushContext "normalText" >> 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 [("xslt",["normalText"])], synStLanguage = "xslt", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = False, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "normalText" -> return ()
+    "detectEntRef" -> return ()
+    "tagname" -> return ()
+    "attributes" -> return ()
+    "attrValue" -> return ()
+    "xattributes" -> return ()
+    "xattrValue" -> return ()
+    "string" -> return ()
+    "sqstring" -> return ()
+    "comment" -> return ()
+    "xpath" -> return ()
+    "sqxpath" -> return ()
+    "sqxpathstring" -> return ()
+    "xpathstring" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Tag","Keyword"),("Attribute","Others"),("Invalid","Error"),("Alert","Alert"),("Attribute Value","String"),("XPath","Others"),("XPath String","String"),("XPath Axis","Keyword"),("XPath/ XSLT Function","Keyword"),("XPath 2.0/ XSLT 2.0 Function","Keyword"),("XPath Attribute","Normal"),("Variable","Normal"),("Comment","Comment"),("XSLT Tag","Keyword"),("XSLT 2.0 Tag","Keyword"),("Entity Reference","DecVal")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("normalText","Normal Text"),("detectEntRef","Normal Text"),("tagname","Tag"),("attributes","Attribute"),("attrValue","Invalid"),("xattributes","Attribute"),("xattrValue","Invalid"),("string","Attribute Value"),("sqstring","Attribute Value"),("comment","Comment"),("xpath","XPath"),("sqxpath","XPath"),("sqxpathstring","XPath String"),("xpathstring","XPath String")]
+
+parseRules "normalText" = 
+  do (attr, result) <- (((pString False "<!--" >>= withAttribute "Comment") >>~ pushContext "comment")
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "Tag") >>~ pushContext "tagname")
+                        <|>
+                        ((pRegExpr (compileRegex "&(#[0-9]+|#[xX][0-9A-Fa-f]+|[A-Za-z_:][\\w.:_-]*);") >>= withAttribute "Entity Reference")))
+     return (attr, result)
+
+parseRules "detectEntRef" = 
+  do (attr, result) <- ((pRegExpr (compileRegex "&(#[0-9]+|#[xX][0-9A-Fa-f]+|[A-Za-z_:][\\w.:_-]*);") >>= withAttribute "Entity Reference"))
+     return (attr, result)
+
+parseRules "tagname" = 
+  do (attr, result) <- (((pKeyword " \n\t.()!+,<=>%&*/;?[]^{|}~\\\"{}" ["xsl:value-of","xsl:output","xsl:decimal-format","xsl:apply-templates","xsl:param","xsl:transform","xsl:namespace-alias","xsl:comment","xsl:element","xsl:attribute","xsl:apply-imports","xsl:text","xsl:when","xsl:template","xsl:processing-instruction","xsl:include","xsl:copy-of","xsl:copy","xsl:with-param","xsl:stylesheet","xsl:for-each","xsl:choose","xsl:sort","xsl:otherwise","xsl:key","xsl:variable","xsl:number","xsl:message","xsl:fallback","xsl:strip-space","xsl:import","xsl:preserve-space","xsl:if","xsl:call-template","xsl:attribute-set"] >>= withAttribute "XSLT Tag") >>~ pushContext "xattributes")
+                        <|>
+                        ((pKeyword " \n\t.()!+,<=>%&*/;?[]^{|}~\\\"{}" ["xsl:perform-sort","xsl:import-schema","xsl:for-each-group","xsl:sequence","xsl:non-matching-substring","xsl:namespace","xsl:next-match","xsl:function","xsl:analyze-string","xsl:output-character","xsl:matching-substring","xsl:result-document","xsl:character-map","xsl:document"] >>= withAttribute "XSLT 2.0 Tag") >>~ pushContext "xattributes")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*") >>= withAttribute "Attribute") >>~ pushContext "attributes")
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Tag") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "attributes" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '>' >>= withAttribute "Tag") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Tag") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*=\\s*") >>= withAttribute "Normal Text") >>~ pushContext "attrValue"))
+     return (attr, result)
+
+parseRules "attrValue" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '>' >>= withAttribute "Invalid") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Invalid") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Attribute Value") >>~ pushContext "string")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Attribute Value") >>~ pushContext "sqstring"))
+     return (attr, result)
+
+parseRules "xattributes" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '>' >>= withAttribute "Tag") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Tag") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "select\\s*=\\s*") >>= withAttribute "Attribute") >>~ pushContext "xattrValue")
+                        <|>
+                        ((pRegExpr (compileRegex "test\\s*=\\s*") >>= withAttribute "Attribute") >>~ pushContext "xattrValue")
+                        <|>
+                        ((pRegExpr (compileRegex "match\\s*=\\s*") >>= withAttribute "Attribute") >>~ pushContext "xattrValue")
+                        <|>
+                        ((pRegExpr (compileRegex "\\s*=\\s*") >>= withAttribute "Attribute") >>~ pushContext "attrValue"))
+     return (attr, result)
+
+parseRules "xattrValue" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '>' >>= withAttribute "Invalid") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '>' >>= withAttribute "Invalid") >>~ (popContext >> popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "XPath") >>~ pushContext "xpath")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "XPath") >>~ pushContext "sqxpath"))
+     return (attr, result)
+
+parseRules "string" = 
+  do (attr, result) <- (((pDetectChar False '{' >>= withAttribute "XPath") >>~ pushContext "xpath")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "Attribute Value") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "detectEntRef")))
+     return (attr, result)
+
+parseRules "sqstring" = 
+  do (attr, result) <- (((pDetectChar False '{' >>= withAttribute "XPath") >>~ pushContext "sqxpath")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "Attribute Value") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((parseRules "detectEntRef")))
+     return (attr, result)
+
+parseRules "comment" = 
+  do (attr, result) <- (((pString False "-->" >>= withAttribute "Comment") >>~ (popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "-(-(?!->))+") >>= withAttribute "Invalid"))
+                        <|>
+                        ((pRegExpr (compileRegex "(FIXME|TODO|HACK)") >>= withAttribute "Alert")))
+     return (attr, result)
+
+parseRules "xpath" = 
+  do (attr, result) <- (((pKeyword " \n\t.()!+,<=>%&*/;?[]^{|}~\\\"{}" ["format-number","position","lang","substring-before","substring","normalize-space","round","translate","starts-with","concat","local-name","key","count","document","system-property","current","boolean","number","contains","name","last","unparsed-entity-uri","sum","generate-id","function-available","element-available","false","substring-after","not","string-length","id","floor","ceiling","namespace-uri","true","string","text"] >>= withAttribute "XPath/ XSLT Function"))
+                        <|>
+                        ((pKeyword " \n\t.()!+,<=>%&*/;?[]^{|}~\\\"{}" ["zero-or-one","replace","namespace-uri-for-prefix","current-grouping-key","seconds-from-duration","resolve-uri","node-kind","minutes-from-dateTime","implicit-timezone","exactly-one","current-time","current-dateTime","unordered","subtract-dates-yielding-dayTimeDuration","string-join","static-base-uri","months-from-duration","input","exists","default-collation","dateTime","current-group","current-date","collection","timezone-from-time","matches","local-name-from-QName","day-from-date","timezone-from-date","round-half-to-even","month-from-dateTime","month-from-date","hours-from-duration","escape-uri","distinct-values","avg","years-from-duration","unparsed-text","unparsed-entity-public-id","subtract-dateTimes-yielding-dayTimeDuration","subtract-dates-yielding-yearMonthDuration","string-to-codepoints","sequence-node-identical","hours-from-time","hours-from-dateTime","format-time","codepoints-to-string","trace","tokenize","subtract-dateTimes-yielding-yearMonthDuration","subsequence","seconds-from-dateTime","regex-group","one-or-more","node-name","namespace-uri-from-QName","min","idref","format-dateTime","format-date","days-from-duration","compare","base-uri","seconds-from-time","in-scope-prefixes","expanded-QName","adjust-date-to-timezone","year-from-date","resolve-QName","remove","QName","minutes-from-time","max","lower-case","index-of","doc","deep-equal","data","minutes-from-duration","adjust-dateTime-to-timezone","abs","timezone-from-dateTime","reverse","error","ends-with","day-from-dateTime","year-from-dateTime","upper-case","root","normalize-unicode","empty","insert-before","document-uri","adjust-time-to-timezone"] >>= withAttribute "XPath 2.0/ XSLT 2.0 Function"))
+                        <|>
+                        ((pRegExpr (compileRegex "(ancestor|ancestor-or-self|attribute|child|descendant|descendant-or-self|following|following-sibling|namespace|parent|preceding|preceding-sibling|self)::") >>= withAttribute "XPath Axis"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "XPath") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "XPath String") >>~ pushContext "sqxpathstring")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "XPath") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "@[A-Za-z_:][\\w.:_-]*") >>= withAttribute "XPath Attribute"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$[A-Za-z_:][\\w.:_-]*") >>= withAttribute "Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "[A-Za-z_:][\\w.:_-]*") >>= withAttribute "XPath"))
+                        <|>
+                        ((pDetectChar False '$' >>= withAttribute "Invalid"))
+                        <|>
+                        ((parseRules "detectEntRef")))
+     return (attr, result)
+
+parseRules "sqxpath" = 
+  do (attr, result) <- (((pKeyword " \n\t.()!+,<=>%&*/;?[]^{|}~\\\"{}" ["format-number","position","lang","substring-before","substring","normalize-space","round","translate","starts-with","concat","local-name","key","count","document","system-property","current","boolean","number","contains","name","last","unparsed-entity-uri","sum","generate-id","function-available","element-available","false","substring-after","not","string-length","id","floor","ceiling","namespace-uri","true","string","text"] >>= withAttribute "XPath/ XSLT Function"))
+                        <|>
+                        ((pKeyword " \n\t.()!+,<=>%&*/;?[]^{|}~\\\"{}" ["zero-or-one","replace","namespace-uri-for-prefix","current-grouping-key","seconds-from-duration","resolve-uri","node-kind","minutes-from-dateTime","implicit-timezone","exactly-one","current-time","current-dateTime","unordered","subtract-dates-yielding-dayTimeDuration","string-join","static-base-uri","months-from-duration","input","exists","default-collation","dateTime","current-group","current-date","collection","timezone-from-time","matches","local-name-from-QName","day-from-date","timezone-from-date","round-half-to-even","month-from-dateTime","month-from-date","hours-from-duration","escape-uri","distinct-values","avg","years-from-duration","unparsed-text","unparsed-entity-public-id","subtract-dateTimes-yielding-dayTimeDuration","subtract-dates-yielding-yearMonthDuration","string-to-codepoints","sequence-node-identical","hours-from-time","hours-from-dateTime","format-time","codepoints-to-string","trace","tokenize","subtract-dateTimes-yielding-yearMonthDuration","subsequence","seconds-from-dateTime","regex-group","one-or-more","node-name","namespace-uri-from-QName","min","idref","format-dateTime","format-date","days-from-duration","compare","base-uri","seconds-from-time","in-scope-prefixes","expanded-QName","adjust-date-to-timezone","year-from-date","resolve-QName","remove","QName","minutes-from-time","max","lower-case","index-of","doc","deep-equal","data","minutes-from-duration","adjust-dateTime-to-timezone","abs","timezone-from-dateTime","reverse","error","ends-with","day-from-dateTime","year-from-dateTime","upper-case","root","normalize-unicode","empty","insert-before","document-uri","adjust-time-to-timezone"] >>= withAttribute "XPath 2.0/ XSLT 2.0 Function"))
+                        <|>
+                        ((pRegExpr (compileRegex "(ancestor|ancestor-or-self|attribute|child|descendant|descendant-or-self|following|following-sibling|namespace|parent|preceding|preceding-sibling|self)::") >>= withAttribute "XPath Axis"))
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "XPath") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "XPath String") >>~ pushContext "xpathstring")
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "XPath") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pRegExpr (compileRegex "@[A-Za-z_:][\\w.:_-]*") >>= withAttribute "XPath Attribute"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\$[A-Za-z_:][\\w.:_-]*") >>= withAttribute "Variable"))
+                        <|>
+                        ((pRegExpr (compileRegex "[A-Za-z_:][\\w.:_-]*") >>= withAttribute "XPath"))
+                        <|>
+                        ((pDetectChar False '$' >>= withAttribute "Invalid"))
+                        <|>
+                        ((parseRules "detectEntRef")))
+     return (attr, result)
+
+parseRules "sqxpathstring" = 
+  do (attr, result) <- (((pDetectChar False '\'' >>= withAttribute "XPath String") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "detectEntRef")))
+     return (attr, result)
+
+parseRules "xpathstring" = 
+  do (attr, result) <- (((pDetectChar False '"' >>= withAttribute "XPath String") >>~ (popContext >> return ()))
+                        <|>
+                        ((parseRules "detectEntRef")))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/Text/Highlighting/Kate/Syntax/Yacc.hs b/Text/Highlighting/Kate/Syntax/Yacc.hs
new file mode 100644
--- /dev/null
+++ b/Text/Highlighting/Kate/Syntax/Yacc.hs
@@ -0,0 +1,246 @@
+{- This module was generated from data in the Kate syntax highlighting file yacc.xml, version 1.03,
+   by  Jan Villat (jan.villat@net2000.ch) -}
+
+module Text.Highlighting.Kate.Syntax.Yacc ( highlight, parseExpression, syntaxName, syntaxExtensions ) where
+import Text.Highlighting.Kate.Definitions
+import Text.Highlighting.Kate.Common
+import qualified Text.Highlighting.Kate.Syntax.Cpp
+import Text.ParserCombinators.Parsec
+import Data.List (nub)
+import Data.Map (fromList)
+import Data.Maybe (fromMaybe)
+
+-- | Full name of language.
+syntaxName :: String
+syntaxName = "Yacc/Bison"
+
+-- | Filename extensions for this language.
+syntaxExtensions :: String
+syntaxExtensions = "*.y"
+
+-- | 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 = "Yacc/Bison" }
+  context <- currentContext <|> (pushContext "Pre Start" >> 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 [("Yacc/Bison",["Pre Start"])], synStLanguage = "Yacc/Bison", synStCurrentLine = "", synStCharsParsedInLine = 0, synStCaseSensitive = True, synStKeywordCaseSensitive = True, synStCaptures = []}
+
+parseSourceLine = manyTill parseExpressionInternal pEndLine
+
+pEndLine = do
+  newline <|> (eof >> return '\n')
+  context <- currentContext
+  case context of
+    "Pre Start" -> return ()
+    "C Declarations" -> return ()
+    "Declarations" -> return ()
+    "Union Start" -> return ()
+    "Union In" -> return ()
+    "Union InIn" -> return ()
+    "Rules" -> return ()
+    "Rule In" -> return ()
+    "User Code" -> return ()
+    "Percent Command" -> (popContext >> return ())
+    "Percent Command In" -> (popContext >> popContext >> return ())
+    "PC type" -> (popContext >> popContext >> popContext >> return ())
+    "Comment" -> return ()
+    "CommentStar" -> return ()
+    "CommentSlash" -> return ()
+    "StringOrChar" -> return ()
+    "String" -> (popContext >> return ())
+    "Char" -> (popContext >> return ())
+    "Normal C Bloc" -> return ()
+    "Dol" -> return ()
+    "DolEnd" -> return ()
+    _ -> return ()
+  lineContents <- lookAhead wholeLine
+  updateState $ \st -> st { synStCurrentLine = lineContents, synStCharsParsedInLine = 0 }
+
+withAttribute attr txt = do
+  if null txt
+     then fail "Parser matched no text"
+     else return ()
+  let style = fromMaybe "" $ lookup attr styles
+  st <- getState
+  let oldCharsParsed = synStCharsParsedInLine st
+  updateState $ \st -> st { synStCharsParsedInLine = oldCharsParsed + length txt } 
+  return (nub [style, attr], txt)
+
+styles = [("Normal Text","Normal"),("Definition","Normal"),("Comment","Comment"),("Content-Type Delimiter","BaseN"),("Directive","Keyword"),("Rule","String"),("Backslash Code","String"),("Alert","Alert"),("String","String"),("String Char","Char"),("Data Type","DataType")]
+
+parseExpressionInternal = do
+  context <- currentContext
+  parseRules context <|> (pDefault >>= withAttribute (fromMaybe "" $ lookup context defaultAttributes))
+
+defaultAttributes = [("Pre Start","Normal Text"),("C Declarations","Normal Text"),("Declarations","Normal Text"),("Union Start","Normal Text"),("Union In","Normal Text"),("Union InIn","Normal Text"),("Rules","Rule"),("Rule In","Definition"),("User Code","Normal Text"),("Percent Command","Directive"),("Percent Command In","NormalText"),("PC type","Data Type"),("Comment","Comment"),("CommentStar","Comment"),("CommentSlash","Comment"),("StringOrChar","NormalText"),("String","String"),("Char","String Char"),("Normal C Bloc","Normal Text"),("Dol","Normal Text"),("DolEnd","Normal Text")]
+
+parseRules "Pre Start" = 
+  do (attr, result) <- (((parseRules "Comment"))
+                        <|>
+                        ((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pColumn 0 >> pDetect2Chars False '%' '{' >>= withAttribute "Content-Type Delimiter") >>~ pushContext "C Declarations")
+                        <|>
+                        ((pRegExpr (compileRegex ".") >>= withAttribute "Normal Text") >>~ pushContext "Declarations"))
+     return (attr, result)
+
+parseRules "C Declarations" = 
+  do (attr, result) <- (((parseRules "Comment"))
+                        <|>
+                        ((pColumn 0 >> pDetect2Chars False '%' '}' >>= withAttribute "Content-Type Delimiter") >>~ (popContext >> return ()))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Cpp.parseExpression >>= ((withAttribute "") . snd))))
+     return (attr, result)
+
+parseRules "Declarations" = 
+  do (attr, result) <- (((parseRules "Comment"))
+                        <|>
+                        ((pString False "%union" >>= withAttribute "Directive") >>~ pushContext "Union Start")
+                        <|>
+                        ((pDetect2Chars False '%' '%' >>= withAttribute "Content-Type Delimiter") >>~ pushContext "Rules")
+                        <|>
+                        ((pColumn 0 >> pDetect2Chars False '%' '{' >>= withAttribute "Content-Type Delimiter") >>~ pushContext "C Declarations")
+                        <|>
+                        ((pDetectChar False '%' >>= withAttribute "Directive") >>~ pushContext "Percent Command"))
+     return (attr, result)
+
+parseRules "Union Start" = 
+  do (attr, result) <- (((parseRules "Comment"))
+                        <|>
+                        ((pDetectSpaces >>= withAttribute "Normal Text"))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Normal Text") >>~ pushContext "Union In")
+                        <|>
+                        ((pRegExpr (compileRegex ".") >>= withAttribute "Alert") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Union In" = 
+  do (attr, result) <- (((pDetectChar False '{' >>= withAttribute "Normal Text") >>~ pushContext "Union InIn")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Cpp.parseExpression >>= ((withAttribute "") . snd))))
+     return (attr, result)
+
+parseRules "Union InIn" = 
+  do (attr, result) <- (((pDetectChar False '{' >>= withAttribute "Normal Text") >>~ pushContext "Union InIn")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Cpp.parseExpression >>= ((withAttribute "") . snd))))
+     return (attr, result)
+
+parseRules "Rules" = 
+  do (attr, result) <- (((parseRules "Comment"))
+                        <|>
+                        ((pDetect2Chars False '%' '%' >>= withAttribute "Content-Type Delimiter") >>~ pushContext "User Code")
+                        <|>
+                        ((pDetectChar False ':' >>= withAttribute "Normal Text") >>~ pushContext "Rule In"))
+     return (attr, result)
+
+parseRules "Rule In" = 
+  do (attr, result) <- (((parseRules "Comment"))
+                        <|>
+                        ((pDetectChar False ';' >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '{' >>= withAttribute "Normal Text") >>~ pushContext "Normal C Bloc")
+                        <|>
+                        ((pDetectChar False '|' >>= withAttribute "Normal Text"))
+                        <|>
+                        ((parseRules "StringOrChar")))
+     return (attr, result)
+
+parseRules "User Code" = 
+  do (attr, result) <- ((Text.Highlighting.Kate.Syntax.Cpp.parseExpression >>= ((withAttribute "") . snd)))
+     return (attr, result)
+
+parseRules "Percent Command" = 
+  do (attr, result) <- (((parseRules "Comment"))
+                        <|>
+                        ((pRegExpr (compileRegex "\\W") >>= withAttribute "Normal Text") >>~ pushContext "Percent Command In"))
+     return (attr, result)
+
+parseRules "Percent Command In" = 
+  do (attr, result) <- (((parseRules "StringOrChar"))
+                        <|>
+                        ((pDetectChar False '<' >>= withAttribute "Data Type") >>~ pushContext "PC type"))
+     return (attr, result)
+
+parseRules "PC type" = 
+  do (attr, result) <- ((pDetectChar False '>' >>= withAttribute "Data Type") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "Comment" = 
+  do (attr, result) <- (((pDetect2Chars False '/' '*' >>= withAttribute "Comment") >>~ pushContext "CommentStar")
+                        <|>
+                        ((pDetect2Chars False '/' '/' >>= withAttribute "Comment") >>~ pushContext "CommentSlash"))
+     return (attr, result)
+
+parseRules "CommentStar" = 
+  do (attr, result) <- ((pDetect2Chars False '*' '/' >>= withAttribute "Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "CommentSlash" = 
+  do (attr, result) <- ((pRegExpr (compileRegex "[^\\\\]$") >>= withAttribute "Comment") >>~ (popContext >> return ()))
+     return (attr, result)
+
+parseRules "StringOrChar" = 
+  do (attr, result) <- (((pDetectChar False '\'' >>= withAttribute "String Char") >>~ pushContext "Char")
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ pushContext "String"))
+     return (attr, result)
+
+parseRules "String" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\.") >>= withAttribute "Backslash Code"))
+                        <|>
+                        ((pDetectChar False '"' >>= withAttribute "String") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Char" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\\\.") >>= withAttribute "Backslash Code"))
+                        <|>
+                        ((pDetectChar False '\'' >>= withAttribute "String Char") >>~ (popContext >> return ())))
+     return (attr, result)
+
+parseRules "Normal C Bloc" = 
+  do (attr, result) <- (((pDetectChar False '{' >>= withAttribute "Normal Text") >>~ pushContext "Normal C Bloc")
+                        <|>
+                        ((pDetectChar False '}' >>= withAttribute "Normal Text") >>~ (popContext >> return ()))
+                        <|>
+                        ((Text.Highlighting.Kate.Syntax.Cpp.parseExpression >>= ((withAttribute "") . snd)))
+                        <|>
+                        ((pDetectChar False '$' >>= withAttribute "Directive") >>~ pushContext "Dol"))
+     return (attr, result)
+
+parseRules "Dol" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "<[^>]+>") >>= withAttribute "Data Type") >>~ pushContext "DolEnd")
+                        <|>
+                        (pushContext "DolEnd" >> return ([], "")))
+     return (attr, result)
+
+parseRules "DolEnd" = 
+  do (attr, result) <- (((pRegExpr (compileRegex "\\d+") >>= withAttribute "Directive") >>~ (popContext >> popContext >> return ()))
+                        <|>
+                        ((pDetectChar False '$' >>= withAttribute "Directive") >>~ (popContext >> popContext >> return ())))
+     return (attr, result)
+
+parseRules x = fail $ "Unknown context" ++ x
diff --git a/css/hk-espresso.css b/css/hk-espresso.css
new file mode 100644
--- /dev/null
+++ b/css/hk-espresso.css
@@ -0,0 +1,20 @@
+/* Based on ultraviolet's espresso_libre.css */
+table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode, table.sourceCode pre 
+   { margin: 0; padding: 0; border: 0; vertical-align: baseline; border: none; }
+td.lineNumbers { border-right: 1px solid #AAAAAA; text-align: right; color: #AAAAAA; padding-right: 5px; padding-left: 5px; } 
+pre.sourceCode, table.sourceCode { background-color: #2A211C; color: #BDAE9D; }
+td.sourceCode { padding-left: 5px; }
+pre.sourceCode span.Normal { }
+pre.sourceCode span.Keyword { color: #43A8ED; font-weight: bold; } 
+pre.sourceCode span.DataType { text-decoration: underline; }
+pre.sourceCode span.DecVal { color: #44AA43; }
+pre.sourceCode span.BaseN { color: #44AA43; }
+pre.sourceCode span.Float { color: #44AA43; }
+pre.sourceCode span.Char { color: #049B0A; }
+pre.sourceCode span.String { color: #049B0A; }
+pre.sourceCode span.Comment { color: #0066FF; font-style: italic; }
+pre.sourceCode span.Others { }
+pre.sourceCode span.Alert { color: yellow; font-weight: bold; }
+pre.sourceCode span.Function { color: #FF9358; font-weight: bold; }
+pre.sourceCode span.RegionMarker { }
+pre.sourceCode span.Error { color: yellow; font-weight: bold; }
diff --git a/css/hk-kate.css b/css/hk-kate.css
new file mode 100644
--- /dev/null
+++ b/css/hk-kate.css
@@ -0,0 +1,20 @@
+/* Based on kate's own default colors for Haskell */
+table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode, table.sourceCode pre 
+   { margin: 0; padding: 0; border: 0; vertical-align: baseline; border: none; }
+td.lineNumbers { text-align: right; background-color: #EBEBEB; color: black; padding-right: 5px; padding-left: 5px; } 
+td.sourceCode { padding-left: 5px; }
+pre.sourceCode { }
+pre.sourceCode span.Normal { }
+pre.sourceCode span.Keyword { font-weight: bold; } 
+pre.sourceCode span.DataType { color: #800000; }
+pre.sourceCode span.DecVal { color: #0000FF; }
+pre.sourceCode span.BaseN { color: #0000FF; }
+pre.sourceCode span.Float { color: #800080; }
+pre.sourceCode span.Char { color: #FF00FF; }
+pre.sourceCode span.String { color: #DD0000; }
+pre.sourceCode span.Comment { color: #808080; font-style: italic; }
+pre.sourceCode span.Others { }
+pre.sourceCode span.Alert { color: green; font-weight: bold; }
+pre.sourceCode span.Function { color: #000080; }
+pre.sourceCode span.RegionMarker { }
+pre.sourceCode span.Error { color: red; font-weight: bold; }
diff --git a/css/hk-pyg.css b/css/hk-pyg.css
new file mode 100644
--- /dev/null
+++ b/css/hk-pyg.css
@@ -0,0 +1,20 @@
+/* Loosely based on pygment's default colors */
+table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode, table.sourceCode pre 
+   { margin: 0; padding: 0; border: 0; vertical-align: baseline; border: none; }
+td.lineNumbers { border-right: 1px solid #AAAAAA; text-align: right; color: #AAAAAA; padding-right: 5px; padding-left: 5px; } 
+td.sourceCode { padding-left: 5px; }
+pre.sourceCode { }
+pre.sourceCode span.Normal { }
+pre.sourceCode span.Keyword { color: #007020; font-weight: bold; } 
+pre.sourceCode span.DataType { color: #902000; }
+pre.sourceCode span.DecVal { color: #40a070; }
+pre.sourceCode span.BaseN { color: #40a070; }
+pre.sourceCode span.Float { color: #40a070; }
+pre.sourceCode span.Char { color: #4070a0; }
+pre.sourceCode span.String { color: #4070a0; }
+pre.sourceCode span.Comment { color: #60a0b0; font-style: italic; }
+pre.sourceCode span.Others { color: #007020; }
+pre.sourceCode span.Alert { color: red; font-weight: bold; }
+pre.sourceCode span.Function { color: #06287e; }
+pre.sourceCode span.RegionMarker { }
+pre.sourceCode span.Error { color: red; font-weight: bold; }
diff --git a/highlighting-kate.cabal b/highlighting-kate.cabal
new file mode 100644
--- /dev/null
+++ b/highlighting-kate.cabal
@@ -0,0 +1,183 @@
+Name:                highlighting-kate
+Version:             0.2
+Cabal-Version:       >= 1.2
+Build-Type:          Simple
+Category:            Text
+Synopsis:            Syntax highlighting
+Description:         highlighting-kate is a syntax highlighting library
+                     with support for over 50 languages. The syntax
+                     parsers are automatically generated from Kate
+                     syntax descriptions (<http://kate-editor.org/>),
+                     so any syntax supported by Kate can be added.
+                     An (optional) command-line program is provided, along
+                     with a utility for generating new parsers from Kate
+                     XML syntax descriptions.
+                     .
+                     Currently the following languages are supported:
+                     Ada, Asp, Awk, Bash, Bibtex, C, Cmake, Coldfusion,
+                     Commonlisp, Cpp, Css, D, Djangotemplate, Doxygen,
+                     Dtd, Eiffel, Erlang, Fortran, Haskell, Html,
+                     Java, Javadoc, Javascript, Json, Latex, Lex,
+                     LiterateHaskell, Lua, Makefile, Matlab, Mediawiki,
+                     Modula3, Nasm, Objectivec, Ocaml, Pascal, Perl,
+                     Php, Postscript, Prolog, Python, Rhtml, Ruby,
+                     Scala, Scheme, Sgml, Sql, SqlMysql, SqlPostgresql,
+                     Tcl, Texinfo, Xml, Xslt, Yacc.
+License:             GPL
+License-file:        LICENSE
+Author:              John MacFarlane
+Maintainer:          jgm@berkeley.edu
+Extra-Source-Files:  README
+                     BUGS
+                     Highlight.hs
+                     ParseSyntaxFiles.hs
+                     css/hk-espresso.css
+                     css/hk-kate.css
+                     css/hk-pyg.css
+                     xml/ada.xml
+                     xml/alert.xml
+                     xml/asp.xml
+                     xml/awk.xml
+                     xml/bash.xml
+                     xml/bash.xml.bkp
+                     xml/bibtex.xml
+                     xml/cmake.xml
+                     xml/coldfusion.xml
+                     xml/commonlisp.xml
+                     xml/cpp.xml
+                     xml/css.xml
+                     xml/c.xml
+                     xml/djangotemplate.xml
+                     xml/doxygen.xml
+                     xml/dtd.xml
+                     xml/d.xml
+                     xml/eiffel.xml
+                     xml/erlang.xml
+                     xml/fortran.xml
+                     xml/haskell.xml
+                     xml/haskell.xml.bkp
+                     xml/html.xml
+                     xml/javadoc.xml
+                     xml/javascript.xml
+                     xml/javascript.xml.bkp
+                     xml/java.xml
+                     xml/json.xml
+                     xml/language.dtd
+                     xml/latex.xml
+                     xml/lex.xml
+                     xml/literate-haskell.xml
+                     xml/lua.xml
+                     xml/makefile.xml
+                     xml/matlab.xml
+                     xml/mediawiki.xml
+                     xml/modula-3.xml
+                     xml/nasm.xml
+                     xml/objectivec.xml
+                     xml/ocaml.xml
+                     xml/pascal.xml
+                     xml/perl.xml
+                     xml/perl.xml.bkp
+                     xml/php.xml
+                     xml/postscript.xml
+                     xml/prolog.xml
+                     xml/python.xml
+                     xml/rhtml.xml
+                     xml/ruby.xml
+                     xml/scala.xml
+                     xml/scheme.xml
+                     xml/sgml.xml
+                     xml/sql-mysql.xml
+                     xml/sql-postgresql.xml
+                     xml/sql.xml
+                     xml/tcl.xml
+                     xml/texinfo.xml
+                     xml/xml.xml
+                     xml/xslt.xml
+                     xml/yacc.xml
+Flag splitBase
+  Description:       Choose the new, smaller, split-up base package.
+  Default:           True
+Flag executable
+  Description:       Build the Highlight executable.
+  Default:           False
+
+Library
+  if flag(splitBase)
+    Build-Depends:   base >= 3, containers
+  else
+    Build-Depends:   base < 3
+  Build-Depends:     parsec, pcre-light, xhtml
+  Exposed-Modules:   Text.Highlighting.Kate
+                     Text.Highlighting.Kate.Syntax
+                     Text.Highlighting.Kate.Definitions
+                     Text.Highlighting.Kate.Format
+                     Text.Highlighting.Kate.Syntax.Alert
+                     Text.Highlighting.Kate.Syntax.Ada
+                     Text.Highlighting.Kate.Syntax.Asp
+                     Text.Highlighting.Kate.Syntax.Awk
+                     Text.Highlighting.Kate.Syntax.Bash
+                     Text.Highlighting.Kate.Syntax.Bibtex
+                     Text.Highlighting.Kate.Syntax.C
+                     Text.Highlighting.Kate.Syntax.Cmake
+                     Text.Highlighting.Kate.Syntax.Coldfusion
+                     Text.Highlighting.Kate.Syntax.Commonlisp
+                     Text.Highlighting.Kate.Syntax.Cpp
+                     Text.Highlighting.Kate.Syntax.Css
+                     Text.Highlighting.Kate.Syntax.D
+                     Text.Highlighting.Kate.Syntax.Djangotemplate
+                     Text.Highlighting.Kate.Syntax.Doxygen
+                     Text.Highlighting.Kate.Syntax.Dtd
+                     Text.Highlighting.Kate.Syntax.Eiffel
+                     Text.Highlighting.Kate.Syntax.Erlang
+                     Text.Highlighting.Kate.Syntax.Fortran
+                     Text.Highlighting.Kate.Syntax.Haskell
+                     Text.Highlighting.Kate.Syntax.Html
+                     Text.Highlighting.Kate.Syntax.Java
+                     Text.Highlighting.Kate.Syntax.Javadoc
+                     Text.Highlighting.Kate.Syntax.Javascript
+                     Text.Highlighting.Kate.Syntax.Json
+                     Text.Highlighting.Kate.Syntax.Latex
+                     Text.Highlighting.Kate.Syntax.Lex
+                     Text.Highlighting.Kate.Syntax.LiterateHaskell
+                     Text.Highlighting.Kate.Syntax.Lua
+                     Text.Highlighting.Kate.Syntax.Makefile
+                     Text.Highlighting.Kate.Syntax.Matlab
+                     Text.Highlighting.Kate.Syntax.Mediawiki
+                     Text.Highlighting.Kate.Syntax.Modula3
+                     Text.Highlighting.Kate.Syntax.Nasm
+                     Text.Highlighting.Kate.Syntax.Objectivec
+                     Text.Highlighting.Kate.Syntax.Ocaml
+                     Text.Highlighting.Kate.Syntax.Pascal
+                     Text.Highlighting.Kate.Syntax.Perl
+                     Text.Highlighting.Kate.Syntax.Php
+                     Text.Highlighting.Kate.Syntax.Postscript
+                     Text.Highlighting.Kate.Syntax.Prolog
+                     Text.Highlighting.Kate.Syntax.Python
+                     Text.Highlighting.Kate.Syntax.Rhtml
+                     Text.Highlighting.Kate.Syntax.Ruby
+                     Text.Highlighting.Kate.Syntax.Scala
+                     Text.Highlighting.Kate.Syntax.Scheme
+                     Text.Highlighting.Kate.Syntax.Sgml
+                     Text.Highlighting.Kate.Syntax.SqlMysql
+                     Text.Highlighting.Kate.Syntax.SqlPostgresql
+                     Text.Highlighting.Kate.Syntax.Sql
+                     Text.Highlighting.Kate.Syntax.Tcl
+                     Text.Highlighting.Kate.Syntax.Texinfo
+                     Text.Highlighting.Kate.Syntax.Xml
+                     Text.Highlighting.Kate.Syntax.Xslt
+                     Text.Highlighting.Kate.Syntax.Yacc
+  Other-Modules:     Text.Highlighting.Kate.Common
+  Ghc-Options:       -O2 -W
+  Ghc-Prof-Options:  -auto-all
+
+Executable Highlight
+  Main-Is:          Highlight.hs
+  Build-Depends:    base, containers, xhtml, filepath
+  Ghc-Options:      -O2 -W
+  Ghc-Prof-Options: -auto-all
+
+  if flag(executable)
+    Buildable:      True
+  else
+    Buildable:      False
+
diff --git a/xml/ada.xml b/xml/ada.xml
new file mode 100644
--- /dev/null
+++ b/xml/ada.xml
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="Ada" version="1.07" kateversion="2.4" section="Sources" extensions="*.adb;*.ads;*.ada;*.a" mimetype="text/x-adasrc">
+  <highlighting>
+    <list name="keywords">
+      <item> abort </item>
+      <item> abs </item>
+      <item> abstract </item>
+      <item> accept </item>
+      <item> access </item>
+      <item> aliased </item>
+      <item> all </item>
+      <item> and </item>
+      <item> array </item>
+      <item> at </item>
+      <item> begin </item>
+      <item> body </item>
+      <item> constant </item>
+      <item> declare </item>
+      <item> delay </item>
+      <item> delta </item>
+      <item> digits </item>
+      <item> do </item>
+      <item> else </item>
+      <item> elsif </item>
+      <item> end </item>
+      <item> entry </item>
+      <item> exception </item>
+      <item> exit </item>
+      <item> for </item>
+      <item> function </item>
+      <item> generic </item>
+      <item> goto </item>
+      <item> in </item>
+      <item> interface </item>
+      <item> is </item>
+      <item> limited </item>
+      <item> mod </item>
+      <item> new </item>
+      <item> not </item>
+      <item> null </item>
+      <item> of </item>
+      <item> or </item>
+      <item> others </item>
+      <item> out </item>
+      <item> overriding </item>
+      <item> package </item>
+      <item> pragma </item>
+      <item> private </item>
+      <item> procedure </item>
+      <item> protected </item>
+      <item> raise </item>
+      <item> range </item>
+      <item> rem </item>
+      <item> record </item>
+      <item> renames </item>
+      <item> requeue </item>
+      <item> return </item>
+      <item> reverse </item>
+      <item> separate </item>
+      <item> subtype </item>
+      <item> tagged </item>
+      <item> task </item>
+      <item> terminate </item>
+      <item> then </item>
+      <item> type </item>
+      <item> until </item>
+      <item> use </item>
+      <item> when </item>
+      <item> while </item>
+      <item> with </item>
+      <item> xor </item>
+    </list>
+    <list name="pragmas">
+      <item> all_calls_remote </item>
+      <item> assert </item>
+      <item> assertion_policy </item>
+      <item> asynchronous </item>
+      <item> atomic </item>
+      <item> atomic_components </item>
+      <item> attach_handler </item>
+      <item> controlled </item>
+      <item> convention </item>
+      <item> detect_blocking </item>
+      <item> discard_names </item>
+      <item> elaborate </item>
+      <item> elaborate_all </item>
+      <item> elaborate_body </item>
+      <item> export </item>
+      <item> import </item>
+      <item> inline </item>
+      <item> inspection_point </item>
+      <item> interrupt_handler </item>
+      <item> interrupt_priority </item>
+      <item> linker_options </item>
+      <item> list </item>
+      <item> locking_policy </item>
+      <item> no_return </item>
+      <item> normalize_scalars </item>
+      <item> optimize </item>
+      <item> pack </item>
+      <item> page </item>
+      <item> partition_elaboration_policy </item>
+      <item> preelaborable_initialization </item>
+      <item> preelaborate </item>
+      <item> priority </item>
+      <item> priority_specific_dispatching </item>
+      <item> profile </item>
+      <item> pure </item>
+      <item> queuing_policy </item>
+      <item> relative_deadline </item>
+      <item> remote_call_interface </item>
+      <item> remote_types </item>
+      <item> restrictions </item>
+      <item> reviewable </item>
+      <item> shared_passive </item>
+      <item> storage_size </item>
+      <item> suppress </item>
+      <item> task_dispatching_policy </item>
+      <item> unchecked_union </item>
+      <item> unsuppress </item>
+      <item> volatile </item>
+      <item> volatile_components </item>
+    </list>
+    <list name="types">
+      <item> boolean </item>
+      <item> char </item>
+      <item> float </item>
+      <item> integer </item>
+      <item> long_float </item>
+      <item> long_integer </item>
+      <item> long_long_float </item>
+      <item> long_long_integer </item>
+      <item> short_float </item>
+      <item> short_integer </item>
+      <item> string </item>
+      <item> wide_string </item>
+      <item> wide_char </item>
+      <item> wide_wide_char </item>
+      <item> wide_wide_string </item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Default">
+        <RegExpr attribute="Keyword" context="#stay" String="\brecord\b"       insensitive="true" beginRegion="RecordRegion"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s+record\b" insensitive="true"   endRegion="RecordRegion"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bcase\b"         insensitive="true" beginRegion="CaseRegion"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s+case\b"   insensitive="true"   endRegion="CaseRegion"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bif\b"           insensitive="true" beginRegion="IfRegion"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s+if\b"     insensitive="true"   endRegion="IfRegion"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bloop\b"         insensitive="true" beginRegion="LoopRegion"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s+loop\b"   insensitive="true"   endRegion="LoopRegion"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bselect\b"       insensitive="true" beginRegion="SelectRegion"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s+select\b" insensitive="true"   endRegion="SelectRegion"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bbegin\b"        insensitive="true" beginRegion="BeginRegion"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\b"          insensitive="true"   endRegion="BeginRegion"/>
+        <StringDetect attribute="Region Marker" context="Region Marker" String="--  BEGIN" beginRegion="RegionMarker" firstNonSpace="true" />
+        <StringDetect attribute="Region Marker" context="Region Marker" String="--  END" endRegion="RegionMarker" firstNonSpace="true" />
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+        <keyword attribute="Pragmas" context="#stay" String="pragmas" />
+        <keyword attribute="Data Type" context="#stay" String="types" />
+        <Float attribute="Float" context="#stay"/>
+        <Int attribute="Decimal" context="#stay"/>
+        <RegExpr attribute="Char" context="#stay" String="'.'"/>
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <Detect2Chars attribute="Comment" context="Comment" char="-" char1="-"/>
+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;|"/>
+      </context>
+      <context attribute="Region Marker" lineEndContext="#pop" name="Region Marker"/>
+      <context attribute="String" lineEndContext="#pop" name="String">
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="Comment"/>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal" />
+      <itemData name="Keyword"     defStyleNum="dsKeyword" />
+      <itemData name="Pragmas"     defStyleNum="dsKeyword" color="#0095ff" selColor="#ffffff" bold="1" italic="0"/>
+      <itemData name="Data Type"   defStyleNum="dsDataType"/>
+      <itemData name="Decimal"     defStyleNum="dsDecVal" />
+      <itemData name="Base-N"      defStyleNum="dsBaseN" />
+      <itemData name="Float"       defStyleNum="dsFloat" />
+      <itemData name="Char"        defStyleNum="dsChar" />
+      <itemData name="String"      defStyleNum="dsString" />
+      <itemData name="Comment"     defStyleNum="dsComment" />
+      <itemData name="Symbol"      defStyleNum="dsNormal"/>
+      <itemData name="Region Marker" defStyleNum="dsRegionMarker" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="--" />
+    </comments>
+    <keywords casesensitive="0" />
+  </general>
+</language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
diff --git a/xml/alert.xml b/xml/alert.xml
new file mode 100644
--- /dev/null
+++ b/xml/alert.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!--
+  This file is part of KDE's kate project.
+
+  copyright   : (C) 2004 by Dominik Haumann
+  email       : dhdev at gmx dot de
+
+ **********************************************************************
+ * This library is free software; you can redistribute it and/or      *
+ * modify it under the terms of the GNU Library General Public        *
+ * License as published by the Free Software Foundation; either       *
+ * version 2 of the License, or (at your option) any later version.   *
+ *                                                                    *
+ * This library is distributed in the hope that it will be useful,    *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of     *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  *
+ * Library General Public License for more details.                   *
+ *                                                                    *
+ * You should have received a copy of the GNU Library General Public  *
+ * License along with this library; if not, write to the              *
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,   *
+ * Boston, MA  02110-1301, USA.                                       *
+ **********************************************************************
+
+ This file is included in every file that highlights the "alerts" keywords.
+ That's why extensions and mimetype are empty.
+-->
+<language version="1.07" kateversion="2.3" name="Alerts" section="Other" extensions="" mimetype="" author="Dominik Haumann (dhdev@gmx.de)" license="LGPL" hidden="true">
+  <highlighting>
+    <list name="alerts">
+      <item> FIXME </item>
+      <item> HACK </item>
+      <item> NOTE </item>
+      <item> NOTICE </item>
+      <item> TASK </item>
+      <item> TODO </item>
+      <item> DEPRECATED </item>
+      <item> WARNING </item>
+      <item> ### </item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Normal Text" >
+        <keyword attribute="Alert" context="#stay" String="alerts" />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Alert" defStyleNum="dsAlert"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <keywords casesensitive="1"/>
+  </general>
+</language>
diff --git a/xml/asp.xml b/xml/asp.xml
new file mode 100644
--- /dev/null
+++ b/xml/asp.xml
@@ -0,0 +1,393 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE  language SYSTEM "language.dtd">
+<language name="ASP" version="1.03" kateversion="2.1" section="Markup" extensions="*.asp;" mimetype="text/x-asp-src;text/x-asp-src" author="Antonio Salazar (savedfastcool@gmail.com)" license="LGPL">
+    <highlighting>
+        <list name="control structures">
+            <item>select</item>
+            <item>case</item>
+            <item>end select</item>
+
+            <item>if</item>
+            <item>then</item>
+            <item>else</item>
+            <item>elseif</item>
+            <item>end if</item>
+
+
+            <item>while</item>
+            <item>do</item>
+            <item>until</item>
+            <item>loop</item>
+            <item>wend</item>
+
+            <item>for</item>
+            <item>each</item>
+            <item>to</item>
+            <item>in</item>
+            <item>next</item>
+
+            <item>exit</item>
+            <item>continue</item>
+        </list>
+        <list name="keywords">
+            <item>dim</item>
+            <item>redim</item>
+            <item>preserve</item>
+
+            <item>const</item>
+            <item>erase</item>
+            <item>nothing</item>
+            <item>set</item>
+
+            <item>new</item>
+            <item>me</item>
+
+
+            <item>function</item>
+            <item>sub</item>
+            <item>call</item>
+
+            <item>class</item>
+            <item>private</item>
+            <item>public</item>
+            <item>with</item>
+
+            <item>randomize</item>
+
+            <item>open</item>
+            <item>close</item>
+            <item>movenext</item>
+            <item>execute</item>
+            <item>eof</item>
+
+            <item>not</item>
+            <item>true</item>
+            <item>false</item>
+            <item>or</item>
+            <item>and</item>
+            <item>xor</item>
+        </list>
+        <list name="functions">
+            <item>response</item>
+            <item>write</item>
+            <item>redirect</item>
+            <item>end</item>
+
+            <item>request</item>
+            <item>form</item>
+            <item>querystring</item>
+            <item>servervariables</item>
+            <item>cookies</item>
+
+            <item>session</item>
+
+            <item>server</item>
+            <item>createobject</item>
+
+            <item>abs</item>
+            <item>array</item>
+            <item>asc</item>
+            <item>atn</item>
+            <item>cbool</item>
+            <item>cbyte</item>
+            <item>ccur</item>
+            <item>cdate</item>
+            <item>cdbl</item>
+            <item>chr</item>
+            <item>cint</item>
+            <item>clng</item>
+            <item>cos</item>
+            <item>csng</item>
+            <item>cstr</item>
+            <item>date</item>
+            <item>dateadd</item>
+
+            <item>DateDiff</item>
+            <item>DatePart</item>
+            <item>DateSerial</item>
+            <item>DateValue</item>
+            <item>Date</item>
+            <item>Day</item>
+            <item>Exp</item>
+            <item>Filter</item>
+            <item>Fix</item>
+            <item>FormatCurrency</item>
+            <item>FormatDateTime</item>
+            <item>FormatNumber</item>
+            <item>FormatPercent</item>
+
+            <item>GetObject</item>
+            <item>Hex</item>
+            <item>Hour</item>
+            <item>InputBox</item>
+            <item>InStr</item>
+            <item>InStrRev</item>
+            <item>Int</item>
+            <item>IsArray</item>
+            <item>IsDate</item>
+            <item>IsEmpty</item>
+            <item>IsNull</item>
+            <item>IsNumeric</item>
+            <item>IsObject</item>
+            <item>Join</item>
+            <item>LBound</item>
+            <item>LCase</item>
+
+            <item>Left</item>
+            <item>Len</item>
+            <item>LoadPicture</item>
+            <item>Log</item>
+            <item>LTrim</item>
+            <item>Mid</item>
+            <item>Minute</item>
+            <item>Month</item>
+            <item>MonthName</item>
+            <item>MsgBox</item>
+            <item>Now</item>
+            <item>Oct</item>
+            <item>Replace</item>
+
+            <item>RGB</item>
+            <item>Right</item>
+            <item>Rnd</item>
+            <item>Round</item>
+            <item>RTrim</item>
+
+            <item>ScriptEngine</item>
+            <item>ScriptEngineBuildVersion</item>
+            <item>ScriptEngineMajorVersion</item>
+            <item>ScriptEngineMinorVersion</item>
+            <item>Second</item>
+            <item>Sgn</item>
+            <item>Sin</item>
+            <item>Space</item>
+            <item>Split</item>
+            <item>Sqr</item>
+            <item>StrComp</item>
+            <item>StrReverse</item>
+            <item>String</item>
+            <item>Tan</item>
+            <item>Time</item>
+            <item>Timer</item>
+            <item>TimeSerial</item>
+            <item>TimeValue</item>
+            <item>Trim</item>
+            <item>TypeName</item>
+            <item>UBound</item>
+            <item>UCase</item>
+            <item>VarType</item>
+            <item>Weekday</item>
+            <item>WeekdayName</item>
+            <item>Year</item>
+
+            <item>Add</item>
+            <item>AddFolders</item>
+            <item>BuildPath</item>
+            <item>Clear</item>
+            <item>Close</item>
+            <item>Copy</item>
+            <item>CopyFile</item>
+            <item>CopyFolder</item>
+            <item>CreateFolder</item>
+            <item>CreateTextFile</item>
+            <item>Delete</item>
+            <item>DeleteFile</item>
+            <item>DeleteFolder</item>
+            <item>DriveExists</item>
+            <item>Exists</item>
+            <item>FileExists</item>
+            <item>FolderExists</item>
+            <item>GetAbsolutePathName</item>
+            <item>GetBaseName</item>
+            <item>GetDrive</item>
+            <item>GetDriveName</item>
+            <item>GetExtensionName</item>
+            <item>GetFile</item>
+            <item>GetFileName</item>
+            <item>GetFolder</item>
+            <item>GetParentFolderName</item>
+
+            <item>GetSpecialFolder</item>
+            <item>GetTempName</item>
+            <item>Items</item>
+            <item>item</item>
+            <item>Keys</item>
+            <item>Move</item>
+            <item>MoveFile</item>
+            <item>MoveFolder</item>
+            <item>OpenAsTextStream</item>
+            <item>OpenTextFile</item>
+            <item>Raise</item>
+            <item>Read</item>
+            <item>ReadAll</item>
+            <item>ReadLine</item>
+            <item>Remove</item>
+            <item>RemoveAll</item>
+            <item>Skip</item>
+            <item>SkipLine</item>
+            <item>Write</item>
+            <item>WriteBlankLines</item>
+            <item>WriteLine</item>
+        </list>
+            <contexts>
+            <context name="nosource" attribute="Normal Text" lineEndContext="#stay">
+                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />
+                <RegExpr attribute="HTML Tag" context="aspsource" String="&lt;\s*script\s*language=&quot;VBScript&quot;[^&gt;]*&gt;" insensitive="TRUE" />
+                <RegExpr attribute="HTML Tag" context="scripts" String="&lt;\s*script(\s|&gt;)" insensitive="TRUE" />
+                <RegExpr attribute="HTML Tag" context="htmltag" String="&lt;\s*\/?\s*[a-zA-Z_:][a-zA-Z0-9._:-]*" />
+                <StringDetect attribute="HTML Comment" context="htmlcomment" String="&lt;!--" />
+            </context>
+
+            <context name="aspsource" attribute="ASP Text" lineEndContext="#stay">
+                <StringDetect attribute="Keyword" context="#pop" String="%&gt;" />
+                <RegExpr attribute="HTML Tag" context="#pop" String="&lt;\s*\/\s*script\s*&gt;" insensitive="TRUE" />
+                <DetectChar attribute="Comment" context="asp_onelinecomment" char="'" />
+                <DetectChar attribute="String" context="doublequotestring" char="&quot;" />
+                <DetectChar attribute="String" context="singlequotestring" char="&#39;" />
+                <DetectChar attribute="Keyword" context="#stay" char="&amp;" />
+                <RegExpr attribute="String" context="" String="" />
+                <RegExpr attribute="String" context="#stay" String="[0123456789]*\.\.\.[0123456789]*" />
+                <HlCOct attribute="Octal" context="#stay" />
+                <HlCHex attribute="Hex" context="#stay" />
+                <Float attribute="Float" context="#stay" />
+                <Int attribute="Decimal" context="#stay" />
+                <AnyChar attribute="Other" context="#stay" String=";()}{:,[]" />
+                <keyword attribute="Other" context="#stay" String="Others" />
+
+                <RegExpr attribute="Control Structures" context="#stay" String="\belseif\b" insensitive="TRUE" beginRegion="iffi1" endRegion="iffi1"/>
+                <RegExpr attribute="Control Structures" context="#stay" String="\belse\b" insensitive="TRUE" beginRegion="iffi1" endRegion="iffi1"/>
+                <RegExpr attribute="Control Structures" context="#stay" String="\bif\b" insensitive="TRUE" beginRegion="iffi1"/>
+                <RegExpr attribute="Control Structures" context="#stay" String="\bend if\b" insensitive="TRUE" endRegion="iffi1"/>
+
+                <RegExpr attribute="Keyword" context="#stay" String="\bexit function\b" insensitive="TRUE" />
+                <RegExpr attribute="Keyword" context="#stay" String="\bfunction\b" insensitive="TRUE" beginRegion="funendfun1"/>
+                <RegExpr attribute="Keyword" context="#stay" String="\bend function\b" insensitive="TRUE" endRegion="funendfun1"/>
+
+                <RegExpr attribute="Keyword" context="#stay" String="\bexit sub\b" insensitive="TRUE" />
+                <RegExpr attribute="Keyword" context="#stay" String="\bsub\b" insensitive="TRUE" beginRegion="subendsub1"/>
+                <RegExpr attribute="Keyword" context="#stay" String="\bend sub\b" insensitive="TRUE" endRegion="subendsub1"/>
+
+                <RegExpr attribute="Keyword" context="#stay" String="\bclass\b" insensitive="TRUE" beginRegion="classendclass1"/>
+                <RegExpr attribute="Keyword" context="#stay" String="\bend class\b" insensitive="TRUE" endRegion="classendclass1"/>
+
+                <RegExpr attribute="Control Structures" context="#stay" String="\bexit do\b" insensitive="TRUE" />
+                <RegExpr attribute="Control Structures" context="#stay" String="\bdo\b" insensitive="TRUE" beginRegion="doloop1"/>
+                <RegExpr attribute="Control Structures" context="#stay" String="\bloop\b" insensitive="TRUE" endRegion="doloop1"/>
+
+                <RegExpr attribute="Control Structures" context="#stay" String="\bexit while\b" insensitive="TRUE" />
+                <RegExpr attribute="Control Structures" context="#stay" String="\bwhile\b" insensitive="TRUE" beginRegion="whilewend1"/>
+                <RegExpr attribute="Control Structures" context="#stay" String="\bwend\b" insensitive="TRUE" endRegion="whilewend1"/>
+
+                <RegExpr attribute="Control Structures" context="#stay" String="\bexit for\b" insensitive="TRUE" />
+                <RegExpr attribute="Control Structures" context="#stay" String="\bfor\b" insensitive="TRUE" beginRegion="fornext1"/>
+                <RegExpr attribute="Control Structures" context="#stay" String="\bnext\b" insensitive="TRUE" endRegion="fornext1"/>
+
+                <RegExpr attribute="Control Structures" context="#stay" String="\bselect case\b" insensitive="TRUE" beginRegion="selcase1"/>
+                <RegExpr attribute="Control Structures" context="#stay" String="\bend select\b" insensitive="TRUE" endRegion="selcase1"/>
+
+                <keyword attribute="Keyword" context="#stay" String="keywords" />
+                <keyword attribute="Control Structures" context="#stay" String="control structures" />
+                <keyword attribute="Function" context="#stay" String="functions" />
+            </context>
+            <context name="asp_onelinecomment" attribute="Comment" lineEndContext="#pop">
+                <StringDetect attribute="Keyword" context="#pop#pop" String="%&gt;" />
+            </context>
+            <context name="doublequotestring" attribute="String" lineEndContext="#stay">
+                <Detect2Chars attribute="Escape Code" context="#stay" char="&quot;" char1="&quot;" />
+                <RegExpr attribute="Escape Code" context="#stay" String="\\[0-7]{1,3}" />
+                <RegExpr attribute="Escape Code" context="#stay" String="\\x[0-9A-Fa-f]{1,2}" />
+                <DetectChar attribute="String" context="#pop" char="&quot;" />
+            </context>
+            <context name="singlequotestring" attribute="String" lineEndContext="#stay">
+                <Detect2Chars attribute="Escape Code" context="#stay" char="'" char1="'"/>
+                <DetectChar attribute="String" context="#pop" char="'" />
+            </context>
+            <context name="htmltag" attribute="Identifier" lineEndContext="#stay">
+                <Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1="&gt;" />
+                <DetectChar attribute="HTML Tag" context="#pop" char="&gt;"/>
+                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />
+                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />
+                <RegExpr attribute="Identifier" context="identifiers" String="\s*=\s*"/>
+            </context>
+            <context name="htmlcomment" attribute="HTML Comment" lineEndContext="#stay">
+                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />
+                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />
+                <StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />
+                <RegExpr attribute="Normal Text" context="identifiers" String="\s*=\s*"/>
+            </context>
+            <context name="identifiers" attribute="Identifier" lineEndContext="#stay">
+                <RegExpr attribute="String" context="#pop" String="\s*#?[a-zA-Z0-9]*" />
+                <DetectChar attribute="Types" context="types1" char="'" />
+                <DetectChar attribute="Types" context="types2" char="&quot;" />
+            </context>
+
+            <context name="types1" attribute="Types" lineEndContext="#stay">
+                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />
+                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />
+                <DetectChar attribute="Types" context="#pop#pop" char="'" />
+            </context>
+
+            <context name="types2" attribute="Types" lineEndContext="#stay">
+                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />
+                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />
+                <DetectChar attribute="Types" context="#pop#pop" char="&quot;" />
+            </context>
+
+            <context name="scripts" attribute="Normal Text" lineEndContext="#stay">
+                <Detect2Chars attribute="Comment" context="scripts_onelinecomment" char="/" char1="/" />
+                <Detect2Chars attribute="Comment" context="twolinecomment" char="/" char1="*" />
+                <keyword attribute="Control Structures" context="#stay" String="control structures" />
+                <keyword attribute="Keyword" context="#stay" String="keywords" />
+                <keyword attribute="Function" context="#stay" String="functions" />
+                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%"/>
+                <RegExpr attribute="HTML Tag" context="#pop" String="&lt;\s*\/\s*script\s*&gt;" insensitive="TRUE" />
+
+                <DetectChar attribute="String" context="doublequotestring" char="&quot;" />
+                <DetectChar attribute="String" context="singlequotestring" char="&#39;" />
+                <HlCOct attribute="Octal" context="#stay" />
+                <HlCHex attribute="Hex" context="#stay" />
+                <Float attribute="Float" context="#stay" />
+                <Int attribute="Decimal" context="#stay" />
+                <DetectChar attribute="Normal Text" context="#stay" char="{" beginRegion="Brace1" />
+                <DetectChar attribute="Normal Text" context="#stay" char="}" endRegion="Brace1" />
+                <AnyChar attribute="Other" context="#stay" String=";()}{:,[]" />
+                <keyword attribute="Other" context="#stay" String="Others" />
+            </context>
+            <context name="scripts_onelinecomment" attribute="Comment" lineEndContext="#pop">
+                <RegExpr attribute="HTML Tag" context="#pop#pop" String="&lt;\s*\/\s*script\s*&gt;" insensitive="TRUE" />
+            </context>
+            <context name="twolinecomment" attribute="Comment" lineEndContext="#stay">
+                <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment" />
+            </context>
+
+        </contexts>
+        <itemDatas>
+            <itemData name="Normal Text" defStyleNum="dsNormal" />
+            <itemData name="ASP Text" defStyleNum="dsNormal" />
+            <itemData name="Keyword" defStyleNum="dsKeyword" />
+            <itemData name="Function" defStyleNum="dsKeyword" color="#0000FF" selColor="#00ffff" bold="0" italic="0"/>
+            <itemData name="Decimal" defStyleNum="dsDecVal" />
+            <itemData name="Octal" defStyleNum="dsBaseN" />
+            <itemData name="Hex" defStyleNum="dsBaseN" />
+            <itemData name="Float" defStyleNum="dsFloat" />
+            <itemData name="String" defStyleNum="dsString" />
+            <itemData name="Comment" defStyleNum="dsComment" />
+            <itemData name="Variable" defStyleNum="dsKeyword" color="#5555FF" selColor="#ffffff" bold="0" italic="0" />
+            <itemData name="Control Structures" defStyleNum="dsKeyword" color="#A1A100" selColor="#ffffff" bold="0" italic="0" />
+            <itemData name="Escape Code" defStyleNum="dsKeyword" color="#0F0F8F" selColor="#ffffff" bold="1" italic="0" />
+            <itemData name="Other" defStyleNum="dsOthers" />
+
+            <itemData name="HTML Tag" defStyleNum="dsKeyword" color="#0F0000" selColor="#ffffff" bold="1" italic="0" />
+            <itemData name="HTML Comment" defStyleNum="dsComment" />
+            <itemData name="Identifier" defStyleNum="dsOthers" />
+            <itemData name="Types" defStyleNum="dsDataType" />
+        </itemDatas>
+    </highlighting>
+    <general>
+        <comments>
+            <comment name="singleLine" start="'" />
+            <comment name="multiLine" start="/*" end="*/" />
+        </comments>
+        <keywords casesensitive="0" weakDeliminator=""/>
+    </general>
+</language>
diff --git a/xml/awk.xml b/xml/awk.xml
new file mode 100644
--- /dev/null
+++ b/xml/awk.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="AWK" version="0.90" kateversion="2.3" section="Scripts" extensions="*.awk" mimetype="text/x-awk">
+  <highlighting>
+    <list name="keywords">
+      <item>if</item>
+      <item>else</item>
+      <item>while</item>
+      <item>do</item>
+      <item>for</item>
+      <item>in</item>
+      <item>continue</item>
+      <item>break</item>
+      <item>print</item>
+      <item>printf</item>
+      <item>getline</item>
+      <item>function</item>
+      <item>return</item>
+      <item>next</item>
+      <item>exit</item>
+    </list>
+    <list name="builtins">
+      <item>ARGC</item>
+      <item>ARGV</item>
+      <item>CONVFMT</item>
+      <item>ENVIRON</item>
+      <item>FILENAME</item>
+      <item>FNR</item>
+      <item>FS</item>
+      <item>NF</item>
+      <item>NR</item>
+      <item>OFMT</item>
+      <item>OFS</item>
+      <item>ORS</item>
+      <item>RS</item>
+      <item>RSTART</item>
+      <item>RLENGTH</item>
+      <item>SUBSEP</item>
+    </list>
+    <list name="functions">
+      <item>gsub</item>
+      <item>gensub</item>
+      <item>index</item>
+      <item>length</item>
+      <item>match</item>
+      <item>split</item>
+      <item>sprintf</item>
+      <item>sub</item>
+      <item>substr</item>
+      <item>tolower</item>
+      <item>toupper</item>
+      <item>atan2</item>
+      <item>cos</item>
+      <item>exp</item>
+      <item>int</item>
+      <item>log</item>
+      <item>rand</item>
+      <item>sin</item>
+      <item>sqrt</item>
+      <item>srand</item>
+      <item>close</item>
+      <item>fflush</item>
+      <item>system</item>
+    </list>
+
+    <contexts>
+
+      <context name="Base" attribute="Normal" lineEndContext="#stay">
+	<RegExpr String="\b(BEGIN|END)\b" attribute="Pattern" context="#stay" />
+	<RegExpr String="/([^\/[]|\\.|\[\]?(\[[^]]+\]|.)+\])+/" attribute="Pattern" context="#stay" />
+	<DetectChar char="{" attribute="Keyword" context="#stay" beginRegion="block" />
+	<DetectChar char="}" attribute="Keyword" context="#stay" endRegion="block" />
+	<DetectChar char="#" attribute="Comment" context="Comment" />
+        <DetectChar char="&quot;" attribute="String"  context="String"/>
+        <keyword String="keywords" attribute="Keyword" context="#stay"/>
+        <keyword String="builtins" attribute="Builtin" context="#stay"/>
+        <keyword String="functions" attribute="Function" context="#stay"/>
+        <Float attribute="Float"   context="#stay"/>
+        <Int   attribute="Decimal" context="#stay"/>
+        <RegExpr String="\$[A-Za-z0-9_]+" attribute="Field" context="#stay"/>
+      </context>
+
+      <context name="String" attribute="String" lineEndContext="#stay">
+        <DetectChar char="&quot;" attribute="String" context="#pop"/>
+        <HlCStringChar attribute="String" context="#stay"/>
+      </context>
+
+      <context name="Comment" attribute="Comment" lineEndContext="#pop">
+	<IncludeRules context="##Alerts" />
+      </context>
+
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal"   defStyleNum="dsNormal"/>
+      <itemData name="Keyword"  defStyleNum="dsKeyword"/>
+      <itemData name="Builtin"  defStyleNum="dsDataType"/>
+      <itemData name="Function" defStyleNum="dsFunction"/>
+      <itemData name="Decimal"  defStyleNum="dsDecVal"/>
+      <itemData name="Float"    defStyleNum="dsFloat"/>
+      <itemData name="String"   defStyleNum="dsString"/>
+      <itemData name="Comment"  defStyleNum="dsComment"/>
+      <itemData name="Pattern"  defStyleNum="dsString"/>
+      <itemData name="Field"    defStyleNum="dsOthers"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="#"/>
+    </comments>
+    <keywords casesensitive="1" />
+  </general>
+</language>
diff --git a/xml/bash.xml b/xml/bash.xml
new file mode 100644
--- /dev/null
+++ b/xml/bash.xml
@@ -0,0 +1,885 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+        <!ENTITY funcname "[A-Za-z_:][A-Za-z0-9_:#&#37;@-]*">
+        <!ENTITY varname  "[A-Za-z_][A-Za-z0-9_]*">
+        <!ENTITY word     "[^|&amp;;()&lt;&gt;\s]+">    <!-- see man bash -->
+        <!ENTITY eos      "(?=($|\s))">                 <!-- eol or space following -->
+        <!ENTITY noword   "(?![\w$+-])">                <!-- no word, $, + or - following -->
+        <!ENTITY pathpart "([\w_@.&#37;*?+-]|\\ )">     <!-- valid character in a file name -->
+]>
+<language name="Bash" version="2.11" kateversion="2.4" section="Scripts" extensions="*.sh;*.bash;*.ebuild;*.eclass;.bashrc;.bash_profile;.bash_login;.profile" mimetype="application/x-shellscript" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
+
+<!-- (c) 2004 by Wilbert Berendsen (wilbert@kde.nl)
+    Changes by Matthew Woehlke (mw_triad@users.sourceforge.net)
+    Changes by Sebastian Pipping (webmaster@hartwork.org)
+    Released under the LGPL, part of kdelibs/kate -->
+
+  <highlighting>
+    <list name="keywords">
+      <item> else </item>
+      <item> for </item>
+      <item> function </item>
+      <item> in </item>
+      <item> select </item>
+      <item> until </item>
+      <item> while </item>
+      <item> elif </item>
+      <item> then </item>
+      <item> set </item>
+    </list>
+
+    <list name="builtins">
+      <item> : </item>
+      <item> source </item>
+      <item> alias </item>
+      <item> bg </item>
+      <item> bind </item>
+      <item> break </item>
+      <item> builtin </item>
+      <item> cd </item>
+      <item> caller </item>
+      <item> command </item>
+      <item> compgen </item>
+      <item> complete </item>
+      <item> continue </item>
+      <item> dirs </item>
+      <item> disown </item>
+      <item> echo </item>
+      <item> enable </item>
+      <item> eval </item>
+      <item> exec </item>
+      <item> exit </item>
+      <item> fc </item>
+      <item> fg </item>
+      <item> getopts </item>
+      <item> hash </item>
+      <item> help </item>
+      <item> history </item>
+      <item> jobs </item>
+      <item> kill </item>
+      <item> let </item>
+      <item> logout </item>
+      <item> popd </item>
+      <item> printf </item>
+      <item> pushd </item>
+      <item> pwd </item>
+      <item> return </item>
+      <item> set </item>
+      <item> shift </item>
+      <item> shopt </item>
+      <item> suspend </item>
+      <item> test </item>
+      <item> time </item>
+      <item> times </item>
+      <item> trap </item>
+      <item> type </item>
+      <item> ulimit </item>
+      <item> umask </item>
+      <item> unalias </item>
+      <item> wait </item>
+    </list>
+
+    <list name="builtins_var">
+      <item> export </item>
+      <item> unset </item>
+      <item> declare </item>
+      <item> typeset </item>
+      <item> local </item>
+      <item> read </item>
+      <item> readonly </item>
+    </list>
+
+    <list name="unixcommands">
+      <!-- /bin -->
+      <item> arch </item>
+      <item> awk </item>
+      <item> bash </item>
+      <item> bunzip2 </item>
+      <item> bzcat </item>
+      <item> bzcmp </item>
+      <item> bzdiff </item>
+      <item> bzegrep </item>
+      <item> bzfgrep </item>
+      <item> bzgrep </item>
+      <item> bzip2 </item>
+      <item> bzip2recover </item>
+      <item> bzless </item>
+      <item> bzmore </item>
+      <item> cat </item>
+      <item> chattr </item>
+      <item> chgrp </item>
+      <item> chmod </item>
+      <item> chown </item>
+      <item> chvt </item>
+      <item> cp </item>
+      <item> date </item>
+      <item> dd </item>
+      <item> deallocvt </item>
+      <item> df </item>
+      <item> dir </item>
+      <item> dircolors </item>
+      <item> dmesg </item>
+      <item> dnsdomainname </item>
+      <item> domainname </item>
+      <item> du </item>
+      <item> dumpkeys </item>
+      <item> echo </item>
+      <item> ed </item>
+      <item> egrep </item>
+      <item> false </item>
+      <item> fgconsole </item>
+      <item> fgrep </item>
+      <item> fuser </item>
+      <item> gawk </item>
+      <item> getkeycodes </item>
+      <item> gocr </item>
+      <item> grep </item>
+      <item> groff </item>
+      <item> groups </item>
+      <item> gunzip </item>
+      <item> gzexe </item>
+      <item> gzip </item>
+      <item> hostname </item>
+      <item> igawk </item>
+      <item> install </item>
+      <item> kbd_mode </item>
+      <item> kbdrate </item>
+      <item> killall </item>
+      <item> last </item>
+      <item> lastb </item>
+      <item> link </item>
+      <item> ln </item>
+      <item> loadkeys </item>
+      <item> loadunimap </item>
+      <item> login </item>
+      <item> ls </item>
+      <item> lsattr </item>
+      <item> lsmod </item>
+      <item> lsmod.old </item>
+      <item> mapscrn </item>
+      <item> mesg </item>
+      <item> mkdir </item>
+      <item> mkfifo </item>
+      <item> mknod </item>
+      <item> mktemp </item>
+      <item> more </item>
+      <item> mount </item>
+      <item> mv </item>
+      <item> nano </item>
+      <item> netstat </item>
+      <item> nisdomainname </item>
+      <item> nroff </item>
+      <item> openvt </item>
+      <item> pgawk </item>
+      <item> pidof </item>
+      <item> ping </item>
+      <item> ps </item>
+      <item> pstree </item>
+      <item> pwd </item>
+      <item> rbash </item>
+      <item> readlink </item>
+      <item> red </item>
+      <item> resizecons </item>
+      <item> rm </item>
+      <item> rmdir </item>
+      <item> run-parts </item>
+      <item> sash </item>
+      <item> sed </item>
+      <item> setfont </item>
+      <item> setkeycodes </item>
+      <item> setleds </item>
+      <item> setmetamode </item>
+      <item> setserial </item>
+      <item> sh </item>
+      <item> showkey </item>
+      <item> shred </item>
+      <item> sleep </item>
+      <item> ssed </item>
+      <item> stat </item>
+      <item> stty </item>
+      <item> su </item>
+      <item> sync </item>
+      <item> tar </item>
+      <item> tempfile </item>
+      <item> touch </item>
+      <item> troff </item>
+      <item> true </item>
+      <item> umount </item>
+      <item> uname </item>
+      <item> unicode_start </item>
+      <item> unicode_stop </item>
+      <item> unlink </item>
+      <item> utmpdump </item>
+      <item> uuidgen </item>
+      <item> vdir </item>
+      <item> wall </item>
+      <item> wc </item>
+      <item> ypdomainname </item>
+      <item> zcat </item>
+      <item> zcmp </item>
+      <item> zdiff </item>
+      <item> zegrep </item>
+      <item> zfgrep </item>
+      <item> zforce </item>
+      <item> zgrep </item>
+      <item> zless </item>
+      <item> zmore </item>
+      <item> znew </item>
+      <item> zsh </item>
+
+      <!-- some from /usr/bin -->
+      <item> aclocal </item>
+      <item> aconnect </item>
+      <item> aplay </item>
+      <item> apm </item>
+      <item> apmsleep </item>
+      <item> apropos </item>
+      <item> ar </item>
+      <item> arecord </item>
+      <item> as </item>
+      <item> as86 </item>
+      <item> autoconf </item>
+      <item> autoheader </item>
+      <item> automake </item>
+      <item> awk </item>
+      <item> basename </item>
+      <item> bc </item>
+      <item> bison </item>
+      <item> c++ </item>
+      <item> cal </item>
+      <item> cat </item>
+      <item> cc </item>
+      <item> cdda2wav </item>
+      <item> cdparanoia </item>
+      <item> cdrdao </item>
+      <item> cd-read </item>
+      <item> cdrecord </item>
+      <item> chfn </item>
+      <item> chgrp </item>
+      <item> chmod </item>
+      <item> chown </item>
+      <item> chroot </item>
+      <item> chsh </item>
+      <item> clear </item>
+      <item> cmp </item>
+      <item> co </item>
+      <item> col </item>
+      <item> comm </item>
+      <item> cp </item>
+      <item> cpio </item>
+      <item> cpp </item>
+      <item> cut </item>
+      <item> dc </item>
+      <item> dd </item>
+      <item> df </item>
+      <item> diff </item>
+      <item> diff3 </item>
+      <item> dir </item>
+      <item> dircolors </item>
+      <item> directomatic </item>
+      <item> dirname </item>
+      <item> du </item>
+      <item> env </item>
+      <item> expr </item>
+      <item> fbset </item>
+      <item> file </item>
+      <item> find </item>
+      <item> flex </item>
+      <item> flex++ </item>
+      <item> fmt </item>
+      <item> free </item>
+      <item> ftp </item>
+      <item> funzip </item>
+      <item> fuser </item>
+      <item> g++ </item>
+      <item> gawk </item>
+      <item> gc </item>
+      <item> gcc </item>
+      <item> gdb </item>
+      <item> getent </item>
+      <item> getopt </item>
+      <item> gettext </item>
+      <item> gettextize </item>
+      <item> gimp </item>
+      <item> gimp-remote </item>
+      <item> gimptool </item>
+      <item> gmake </item>
+      <item> gs </item>
+      <item> head </item>
+      <item> hexdump </item>
+      <item> id </item>
+      <item> install </item>
+      <item> join </item>
+      <item> kill </item>
+      <item> killall </item>
+      <item> ld </item>
+      <item> ld86 </item>
+      <item> ldd </item>
+      <item> less </item>
+      <item> lex </item>
+      <item> ln </item>
+      <item> locate </item>
+      <item> lockfile </item>
+      <item> logname </item>
+      <item> lp </item>
+      <item> lpr </item>
+      <item> ls </item>
+      <item> lynx </item>
+      <item> m4 </item>
+      <item> make </item>
+      <item> man </item>
+      <item> mkdir </item>
+      <item> mknod </item>
+      <item> msgfmt </item>
+      <item> mv </item>
+      <item> namei </item>
+      <item> nasm </item>
+      <item> nawk </item>
+      <item> nice </item>
+      <item> nl </item>
+      <item> nm </item>
+      <item> nm86 </item>
+      <item> nmap </item>
+      <item> nohup </item>
+      <item> nop </item>
+      <item> od </item>
+      <item> passwd </item>
+      <item> patch </item>
+      <item> pcregrep </item>
+      <item> pcretest </item>
+      <item> perl </item>
+      <item> perror </item>
+      <item> pidof </item>
+      <item> pr </item>
+      <item> printf </item>
+      <item> procmail </item>
+      <item> prune </item>
+      <item> ps2ascii </item>
+      <item> ps2epsi </item>
+      <item> ps2frag </item>
+      <item> ps2pdf </item>
+      <item> ps2ps </item>
+      <item> psbook </item>
+      <item> psmerge </item>
+      <item> psnup </item>
+      <item> psresize </item>
+      <item> psselect </item>
+      <item> pstops </item>
+      <item> rcs </item>
+      <item> rev </item>
+      <item> rm </item>
+      <item> scp </item>
+      <item> sed </item>
+      <item> seq </item>
+      <item> setterm </item>
+      <item> shred </item>
+      <item> size </item>
+      <item> size86 </item>
+      <item> skill </item>
+      <item> slogin </item>
+      <item> snice </item>
+      <item> sort </item>
+      <item> sox </item>
+      <item> split </item>
+      <item> ssh </item>
+      <item> ssh-add </item>
+      <item> ssh-agent </item>
+      <item> ssh-keygen </item>
+      <item> ssh-keyscan </item>
+      <item> stat </item>
+      <item> strings </item>
+      <item> strip </item>
+      <item> sudo </item>
+      <item> suidperl </item>
+      <item> sum </item>
+      <item> tac </item>
+      <item> tail </item>
+      <item> tee </item>
+      <item> test </item>
+      <item> tr </item>
+      <item> uniq </item>
+      <item> unlink </item>
+      <item> unzip </item>
+      <item> updatedb </item>
+      <item> updmap </item>
+      <item> uptime </item>
+      <item> users </item>
+      <item> vmstat </item>
+      <item> w </item>
+      <item> wc </item>
+      <item> wget </item>
+      <item> whatis </item>
+      <item> whereis </item>
+      <item> which </item>
+      <item> who </item>
+      <item> whoami </item>
+      <item> write </item>
+      <item> xargs </item>
+      <item> yacc </item>
+      <item> yes </item>
+      <item> zip </item>
+      <item> zsoelim </item>
+
+      <!-- others -->
+      <item> dcop </item>
+      <item> kdialog </item>
+      <item> kfile </item>
+      <item> xhost </item>
+      <item> xmodmap </item>
+      <item> xset </item>
+    </list>
+
+
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Start">
+        <IncludeRules context="FindAll" />
+      </context>
+
+<!-- ====== The following rulessets are meant to be included ======== -->
+      <!-- FindAll tries to interpret everything -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindAll">
+        <IncludeRules context="FindComments" />
+        <IncludeRules context="FindCommands" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+        <IncludeRules context="FindOthers" />
+      </context>
+
+      <!-- FindMost tries to interpret anything except commands -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindMost">
+        <IncludeRules context="FindComments" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+        <IncludeRules context="FindOthers" />
+      </context>
+
+
+      <!-- FindComments consumes shell comments till EOL -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindComments">
+        <DetectChar attribute="Comment" context="Comment" char="#" firstNonSpace="true"/>
+        <RegExpr attribute="Normal Text" context="Comment" String="[\s;](?=#)" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="Comment">
+        <IncludeRules context="##Alerts" />
+      </context>
+
+      <!-- FindCommentsParen consumes shell comments till EOL or a closing parenthese -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindCommentsParen">
+        <DetectChar attribute="Comment" context="CommentParen" char="#" firstNonSpace="true"/>
+        <RegExpr attribute="Normal Text" context="CommentParen" String="[\s;](?=#)" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="CommentParen">
+        <RegExpr attribute="Comment" context="#pop" String="[^)](?=\))" />
+        <IncludeRules context="##Alerts" />
+      </context>
+
+      <!-- FindCommentsBackq consumes shell comments till EOL or a backquote -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindCommentsBackq">
+        <DetectChar attribute="Comment" context="CommentBackq" char="#" firstNonSpace="true"/>
+        <RegExpr attribute="Normal Text" context="CommentBackq" String="[\s;](?=#)" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="CommentBackq">
+        <RegExpr attribute="Comment" context="#pop" String="[^`](?=`)" />
+        <IncludeRules context="##Alerts" />
+      </context>
+
+
+      <!-- FindCommands matches many items that can be expected outside strings, substitutions etc. -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindCommands">
+        <!-- start expression in double parentheses -->
+        <Detect2Chars attribute="Keyword" context="ExprDblParen" char="(" char1="(" beginRegion="expression" />
+        <!-- start expression in double brackets -->
+        <RegExpr attribute="Keyword" context="ExprDblBracket" String="\[\[&eos;" beginRegion="expression" column="0"/>
+        <RegExpr attribute="Keyword" context="ExprDblBracket" String="\s\[\[&eos;" beginRegion="expression" />
+        <!-- start expression in single brackets -->
+        <RegExpr attribute="Builtin" context="ExprBracket" String="\[&eos;" beginRegion="expression" column="0"/>
+        <RegExpr attribute="Builtin" context="ExprBracket" String="\s\[&eos;" beginRegion="expression" />
+        <!-- start a group command with { -->
+        <RegExpr attribute="Keyword" context="Group" String="\{&eos;" beginRegion="group" />
+        <!-- start a subshell -->
+        <DetectChar attribute="Keyword" context="SubShell" char="(" beginRegion="subshell" />
+        <!-- match do and if blocks -->
+        <RegExpr attribute="Keyword" context="#stay" String="\bdo&noword;" beginRegion="do" />
+        <RegExpr attribute="Keyword" context="#stay" String="\bdone&noword;" endRegion="do" />
+        <RegExpr attribute="Keyword" context="#stay" String="\bif&noword;" beginRegion="if" />
+        <RegExpr attribute="Keyword" context="#stay" String="\bfi&noword;" endRegion="if" />
+        <!-- handle case as a special case -->
+        <RegExpr attribute="Keyword" context="Case" String="\bcase&noword;" beginRegion="case" />
+        <!-- handle command line options -->
+        <RegExpr attribute="Option" context="#stay" String="-[A-Za-z0-9][A-Za-z0-9_]*" />
+        <RegExpr attribute="Option" context="#stay" String="--[a-z][A-Za-z0-9_-]*" />
+        <!-- handle variable assignments -->
+        <RegExpr attribute="Variable" context="Assign" String="\b&varname;\+?=" />
+        <RegExpr attribute="Variable" context="AssignSubscr" String="\b&varname;(?=\[.+\]\+?=)" />
+        <!-- handle functions with function keyword before keywords -->
+        <StringDetect attribute="Function" context="#stay" String=":()" />
+        <RegExpr attribute="Keyword" context="FunctionDef" String="\bfunction\b" />
+        <!-- handle keywords -->
+        <keyword attribute="Keyword" context="#stay" String="keywords" />
+        <RegExpr attribute="Builtin" context="#stay" String="\.(?=\s)" />
+        <keyword attribute="Builtin" context="#stay" String="builtins" />
+        <keyword attribute="Command" context="#stay" String="unixcommands" />
+        <!-- handle commands that have variable names as argument -->
+        <keyword attribute="Builtin" context="VarName" String="builtins_var" />
+        <!-- handle here-string -->
+        <RegExpr attribute="Redirection" context="#stay" String="\d*&lt;&lt;&lt;" />
+        <!-- handle here document -->
+        <StringDetect attribute="Redirection" context="HereDoc" String="&lt;&lt;" lookAhead="true" />
+        <!-- handle process subst -->
+        <RegExpr attribute="Redirection" context="ProcessSubst" String="[&lt;&gt;]\(" />
+        <!-- handle redirection -->
+        <RegExpr attribute="Redirection" context="#stay" String="([0-9]*(&gt;{1,2}|&lt;)(&amp;[0-9]+-?)?|&amp;&gt;|&gt;&amp;|[0-9]*&lt;&gt;)" />
+        <!-- handle &, &&, | and || -->
+        <RegExpr attribute="Control" context="#stay" String="([|&amp;])\1?" />
+        <!-- mark function definitions without function keyword -->
+        <RegExpr attribute="Function" context="#stay" String="&funcname;\s*\(\)" />
+      </context>
+
+      <!-- FindOthers contains various rules to mark different shell input -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindOthers">
+        <RegExpr attribute="Escape" context="#stay" String="\\[][;\\$`{}()|&amp;&lt;&gt;* ]" />
+        <RegExpr attribute="Keyword" context="#stay" String="\\$" />
+        <RegExpr attribute="Escape" context="#stay" String="\{(?!(\s|$))\S*\}" />
+        <RegExpr attribute="Path" context="#stay" String="&pathpart;*(?=/)" />
+        <RegExpr attribute="Path" context="#stay" String="~\w*" />
+        <RegExpr attribute="Path" context="#stay" String="/&pathpart;*(?=([\s/):;$`'&quot;]|$))" />
+        <!-- TODO: shell globs beside * and ? (in Path's) -->
+      </context>
+
+      <!-- FindStrings looks for single and double quoted strings, also with $-prefix -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindStrings">
+        <Detect2Chars attribute="Escape" context="#stay" char="\" char1="'" />
+        <Detect2Chars attribute="Escape" context="#stay" char="\" char1="&quot;" />
+        <DetectChar attribute="String SingleQ" context="StringSQ" char="'" />
+        <DetectChar attribute="String DoubleQ" context="StringDQ" char="&quot;" />
+        <Detect2Chars attribute="String SingleQ" context="StringEsc" char="$" char1="'" />
+        <Detect2Chars attribute="String Transl." context="StringDQ" char="$" char1="&quot;" />
+      </context>
+
+      <!-- FindSubstitutions goes after anything starting with $ and ` and their escapes -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindSubstitutions">
+        <RegExpr attribute="Variable" context="Subscript" String="\$&varname;\[" />
+        <RegExpr attribute="Variable" context="#stay" String="\$&varname;" />
+        <RegExpr attribute="Variable" context="#stay" String="\$[*@#?$!_0-9-]" />
+        <RegExpr attribute="Variable" context="#stay" String="\$\{[*@#?$!_0-9-]\}" />
+        <RegExpr attribute="Variable" context="#stay" String="\$\{#&varname;(\[[*@]\])?\}" />
+        <RegExpr attribute="Variable" context="#stay" String="\$\{!&varname;(\[[*@]\]|[*@])?\}" />
+        <RegExpr attribute="Variable" context="VarBrace" String="\$\{&varname;" />
+        <RegExpr attribute="Variable" context="VarBrace" String="\$\{[*@#?$!_0-9-](?=[:#%/=?+-])" />
+        <StringDetect attribute="Variable" context="ExprDblParenSubst" String="$((" beginRegion="expression" />
+        <StringDetect attribute="Redirection" context="SubstFile" String="$(&lt;" />
+        <StringDetect attribute="Variable" context="SubstCommand" String="$(" />
+        <DetectChar attribute="Backquote" context="SubstBackq" char="`" />
+        <RegExpr attribute="Escape" context="#stay" String="\\[`$\\]" />
+      </context>
+
+      <!-- FindTests finds operators valid in tests -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindTests">
+        <RegExpr attribute="Expression" context="#stay" String="-[abcdefghkprstuwxOGLSNozn](?=\s)"/>
+        <RegExpr attribute="Expression" context="#stay" String="-([no]t|ef)(?=\s)"/>
+        <RegExpr attribute="Expression" context="#stay" String="([!=]=?|[&gt;&lt;])(?=\s)"/>
+        <RegExpr attribute="Expression" context="#stay" String="-(eq|ne|[gl][te])(?=\s)"/>
+      </context>
+
+
+<!-- ====== These are the contexts that can be branched to ======= -->
+
+      <!-- ExprDblParen consumes an expression started in command mode till )) -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParen">
+        <Detect2Chars attribute="Keyword" context="#pop" char=")" char1=")" endRegion="expression" />
+        <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
+        <IncludeRules context="FindMost" />
+      </context>
+
+      <!-- ExprDblParenSubst like ExprDblParen but matches )) as Variable -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenSubst">
+        <Detect2Chars attribute="Variable" context="#pop" char=")" char1=")" endRegion="expression" />
+        <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
+        <IncludeRules context="FindMost" />
+      </context>
+
+      <!-- ExprSubParen consumes an expression till ) -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprSubParen">
+        <DetectChar attribute="Normal Text" context="#pop" char=")" />
+        <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
+        <IncludeRules context="FindMost" />
+      </context>
+
+      <!-- ExprBracket consumes an expression till ] -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracket">
+        <RegExpr attribute="Builtin" context="#pop" String="\s\](?=($|[\s;|&amp;]))" endRegion="expression" />
+        <RegExpr attribute="Builtin" context="#pop" String="\](?=($|[\s;|&amp;]))" endRegion="expression" column="0"/>
+        <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
+        <IncludeRules context="FindTests" />
+        <IncludeRules context="FindMost" />
+      </context>
+
+      <!-- ExprDblBracket consumes an expression till ]] -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracket">
+        <RegExpr attribute="Keyword" context="#pop" String="\s\]\](?=($|[\s;|&amp;]))" endRegion="expression" />
+        <RegExpr attribute="Keyword" context="#pop" String="\]\](?=($|[\s;|&amp;]))" endRegion="expression" column="0"/>
+        <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
+        <IncludeRules context="FindTests" />
+        <IncludeRules context="FindMost" />
+      </context>
+
+      <!-- Group consumes shell input till } -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="Group">
+        <DetectChar attribute="Keyword" context="#pop" char="}" endRegion="group" />
+        <IncludeRules context="FindAll" />
+      </context>
+
+      <!-- SubShell consumes shell input till ) -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubShell">
+        <DetectChar attribute="Keyword" context="#pop" char=")" endRegion="subshell" />
+        <IncludeRules context="FindAll" />
+      </context>
+
+      <!-- Assign consumes an expression till EOL or whitespace -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="Assign" fallthrough="true" fallthroughContext="#pop">
+        <DetectChar attribute="Variable" context="AssignArray" char="(" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+        <IncludeRules context="FindOthers" />
+        <RegExpr attribute="Normal Text" context="#stay" String="[\w:,+_./-]" />
+      </context>
+
+      <!-- AssignArray consumes everything till ), marking assignments -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="AssignArray">
+        <DetectChar attribute="Variable" context="#pop" char=")" />
+        <DetectChar attribute="Variable" context="Subscript" char="[" />
+        <DetectChar attribute="Variable" context="Assign" char="=" />
+        <IncludeRules context="FindMost" />
+      </context>
+
+      <!-- AssignSubscr first expects a [ then parses subscript and continues with '=value' -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="AssignSubscr" fallthrough="true" fallthroughContext="#pop">
+        <DetectChar attribute="Variable" context="Subscript" char="[" />
+        <Detect2Chars attribute="Variable" context="Assign" char="+" char1="=" />
+        <DetectChar attribute="Variable" context="Assign" char="=" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+        <IncludeRules context="FindOthers" />
+      </context>
+
+      <!-- Subscript consumes anything till ], marks as Variable -->
+      <context attribute="Variable" lineEndContext="#stay" name="Subscript">
+        <DetectChar attribute="Variable" context="#pop" char="]" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+        <IncludeRules context="FindOthers" />
+      </context>
+
+      <!-- FunctionDef consumes a name, possibly with (), marks as Function -->
+      <context attribute="Function" lineEndContext="#pop" name="FunctionDef" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="Function" context="#pop" String="\s+&funcname;(\s*\(\))?" />
+      </context>
+
+      <!-- VarName consumes spare variable names and assignments -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="VarName" fallthrough="true" fallthroughContext="#pop">
+        <!-- handle command line options -->
+        <RegExpr attribute="Option" context="#stay" String="-[A-Za-z0-9]+" />
+        <RegExpr attribute="Option" context="#stay" String="--[a-z][A-Za-z0-9_-]*" />
+        <RegExpr attribute="Variable" context="#stay" String="\b&varname;" />
+        <DetectChar attribute="Variable" context="Subscript" char="[" />
+        <DetectChar attribute="Variable" context="Assign" char="=" />
+        <IncludeRules context="FindMost" />
+        <!-- stay here in spaces and other safe characters -->
+        <RegExpr attribute="Normal Text" context="#stay" String="[^]})|;`&amp;&gt;&lt;]" />
+      </context>
+
+      <!-- ProcessSubst handles <(command) and >(command) -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ProcessSubst">
+        <DetectChar attribute="Redirection" context="#pop" char=")" />
+        <IncludeRules context="FindCommentsParen" />
+        <IncludeRules context="FindCommands" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+        <IncludeRules context="FindOthers" />
+      </context>
+
+      <!-- StringSQ consumes anything till ' -->
+      <context attribute="String SingleQ" lineEndContext="#stay" name="StringSQ">
+        <DetectChar attribute="String SingleQ" context="#pop" char="'" />
+      </context>
+
+      <!-- StringDQ consumes anything till ", substitutes vars and expressions -->
+      <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQ">
+        <DetectChar attribute="String DoubleQ" context="#pop" char="&quot;" />
+        <RegExpr attribute="String Escape" context="#stay" String="\\[`&quot;\\$\n]" />
+        <IncludeRules context="FindSubstitutions" />
+      </context>
+
+      <!-- StringEsc eats till ', but escaping many characters -->
+      <context attribute="String SingleQ" lineEndContext="#stay" name="StringEsc">
+        <DetectChar attribute="String SingleQ" context="#pop" char="'" />
+        <RegExpr attribute="String Escape" context="#stay" String="\\[abefnrtv\\']" />
+        <RegExpr attribute="String Escape" context="#stay" String="\\([0-7]{1,3}|x[A-Fa-f0-9]{1,2}|c.)" />
+      </context>
+
+      <!-- VarBrace is called as soon as ${xxx is encoutered -->
+      <context attribute="Error" lineEndContext="#stay" name="VarBrace">
+        <DetectChar attribute="Variable" context="#pop" char="}" />
+        <DetectChar attribute="Variable" context="Subscript" char="[" />
+        <RegExpr attribute="Variable" context="VarAlt" String="(:?[-=?+]|##?|%%?)" />
+        <RegExpr attribute="Variable" context="VarSubst" String="//?" />
+        <DetectChar attribute="Variable" context="VarSub" char=":" />
+      </context>
+
+      <!-- VarAlt is to handle default/alternate/etc values of variables -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarAlt">
+        <DetectChar attribute="Variable" context="#pop#pop" char="}" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+      </context>
+
+      <!-- VarSubst is to handle substitutions on variables -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarSubst">
+        <DetectChar attribute="Variable" context="#pop#pop" char="}" />
+        <DetectChar attribute="Variable" context="VarSubst2" char="/" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarSubst2">
+        <DetectChar attribute="Variable" context="#pop#pop#pop" char="}" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+      </context>
+
+      <!-- VarSub is to substrings of variables -->
+      <context attribute="Error" lineEndContext="#stay" name="VarSub">
+        <DetectChar attribute="Variable" context="VarSub2" char=":" />
+        <DetectChar attribute="Variable" context="#pop#pop" char="}" />
+        <RegExpr attribute="Variable" context="#stay" String="&varname;" />
+        <RegExpr attribute="Variable" context="#stay" String="[0-9]+(?=[:}])" />
+        <IncludeRules context="FindSubstitutions" />
+      </context>
+      <context attribute="Error" lineEndContext="#stay" name="VarSub2">
+        <DetectChar attribute="Variable" context="#pop#pop#pop" char="}" />
+        <RegExpr attribute="Variable" context="#stay" String="&varname;" />
+        <RegExpr attribute="Variable" context="#stay" String="[0-9](?=[:}])" />
+        <IncludeRules context="FindSubstitutions" />
+      </context>
+
+
+      <!-- SubstFile is called after a <( or >( is encoutered -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubstFile">
+        <DetectChar attribute="Redirection" context="#pop" char=")" />
+        <IncludeRules context="FindCommentsParen" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+        <IncludeRules context="FindOthers" />
+      </context>
+
+      <!-- SubstCommand is called after a $( is encountered -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubstCommand">
+        <DetectChar attribute="Variable" context="#pop" char=")" />
+        <IncludeRules context="FindCommentsParen" />
+        <IncludeRules context="FindCommands" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+        <IncludeRules context="FindOthers" />
+      </context>
+
+      <!-- SubstBackq is called when a backquote is encountered -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubstBackq">
+        <DetectChar attribute="Backquote" context="#pop" char="`" />
+        <IncludeRules context="FindCommentsBackq" />
+        <IncludeRules context="FindCommands" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+        <IncludeRules context="FindOthers" />
+      </context>
+
+      <!-- Case is called after the case keyword is encoutered. We handle this because of
+           the lonely closing parentheses that would otherwise disturb the expr matching -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="Case">
+        <RegExpr attribute="Keyword" context="CaseIn" String="\sin\b" />
+        <IncludeRules context="FindMost" />
+      </context>
+
+      <!-- CaseIn is called when the construct 'case ... in' has been found. -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="CaseIn">
+        <RegExpr attribute="Keyword" context="#pop#pop" String="\besac(?=$|[\s;)])" endRegion="case" />
+        <DetectChar attribute="Keyword" context="CaseExpr" char=")" beginRegion="caseexpr" />
+        <AnyChar attribute="Keyword" context="#stay" String="(|" />
+        <IncludeRules context="FindMost" />
+      </context>
+
+      <!-- CaseExpr eats shell input till ;; -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="CaseExpr">
+        <Detect2Chars attribute="Keyword" context="#pop" char=";" char1=";" endRegion="caseexpr" />
+        <IncludeRules context="FindAll" />
+      </context>
+
+      <!-- HereDoc consumes Here-documents. It is called at the beginning of the "<<" construct. -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="HereDoc">
+        <RegExpr attribute="Redirection" context="HereDocIQ"  String="(&lt;&lt;-\s*&quot;(&word;)&quot;)" lookAhead="true" />
+        <RegExpr attribute="Redirection" context="HereDocIQ"  String="(&lt;&lt;-\s*'(&word;)')" lookAhead="true" />
+        <RegExpr attribute="Redirection" context="HereDocIQ"  String="(&lt;&lt;-\s*\\(&word;))" lookAhead="true" />
+        <RegExpr attribute="Redirection" context="HereDocINQ" String="(&lt;&lt;-\s*(&word;))" lookAhead="true" />
+        <RegExpr attribute="Redirection" context="HereDocQ"   String="(&lt;&lt;\s*&quot;(&word;)&quot;)" lookAhead="true" />
+        <RegExpr attribute="Redirection" context="HereDocQ"   String="(&lt;&lt;\s*'(&word;)')" lookAhead="true" />
+        <RegExpr attribute="Redirection" context="HereDocQ"   String="(&lt;&lt;\s*\\(&word;))" lookAhead="true" />
+        <RegExpr attribute="Redirection" context="HereDocNQ"  String="(&lt;&lt;\s*(&word;))" lookAhead="true" />
+        <StringDetect attribute="Redirection" context="#pop"  String="&lt;&lt;" /><!-- always met -->
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="HereDocRemainder">
+        <IncludeRules context="FindAll" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="HereDocQ" dynamic="true">
+        <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" />
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^%2\b" dynamic="true" column="0"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="HereDocNQ" dynamic="true">
+        <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" />
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^%2\b" dynamic="true" column="0"/>
+        <IncludeRules context="FindSubstitutions" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="HereDocIQ" dynamic="true">
+        <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" />
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2\b" dynamic="true" column="0"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="HereDocINQ" dynamic="true">
+        <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" />
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2\b" dynamic="true" column="0"/>
+        <IncludeRules context="FindSubstitutions" />
+      </context>
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text"	defStyleNum="dsNormal" />
+      <itemData name="Comment"		defStyleNum="dsComment" />
+      <itemData name="Keyword" 		defStyleNum="dsKeyword" />
+      <itemData name="Control" 		defStyleNum="dsKeyword" />
+      <itemData name="Builtin" 		defStyleNum="dsKeyword" color="#808" />
+      <itemData name="Command" 		defStyleNum="dsKeyword" color="#c0c" />
+      <itemData name="Redirection" 	defStyleNum="dsKeyword" color="#238" />
+      <itemData name="Escape" 		defStyleNum="dsDataType" />
+      <itemData name="String SingleQ" 	defStyleNum="dsString" />
+      <itemData name="String DoubleQ" 	defStyleNum="dsString" />
+      <itemData name="Backquote" 	defStyleNum="dsKeyword" />
+      <itemData name="String Transl." 	defStyleNum="dsString" />
+      <itemData name="String Escape" 	defStyleNum="dsDataType" />
+      <itemData name="Variable" 	defStyleNum="dsOthers" />
+      <itemData name="Expression" 	defStyleNum="dsOthers" />
+      <itemData name="Function" 	defStyleNum="dsFunction" />
+      <itemData name="Path" 		defStyleNum="dsNormal" />
+      <itemData name="Option" 		defStyleNum="dsNormal" />
+      <itemData name="Error"            defStyleNum="dsError" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="#"/>
+    </comments>
+    <keywords casesensitive="1" weakDeliminator="^%#[]$._{}:-/" additionalDeliminator="`"/>
+  </general>
+</language>
diff --git a/xml/bash.xml.bkp b/xml/bash.xml.bkp
new file mode 100644
--- /dev/null
+++ b/xml/bash.xml.bkp
@@ -0,0 +1,885 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+        <!ENTITY funcname "[A-Za-z_:][A-Za-z0-9_:#&#37;@-]*">
+        <!ENTITY varname  "[A-Za-z_][A-Za-z0-9_]*">
+        <!ENTITY word     "[^|&amp;;()&lt;&gt;\s]+">    <!-- see man bash -->
+        <!ENTITY eos      "(?=($|\s))">                 <!-- eol or space following -->
+        <!ENTITY noword   "(?![\w$+-])">                <!-- no word, $, + or - following -->
+        <!ENTITY pathpart "([\w_@.&#37;*?+-]|\\ )">     <!-- valid character in a file name -->
+]>
+<language name="Bash" version="2.11" kateversion="2.4" section="Scripts" extensions="*.sh;*.bash;*.ebuild;*.eclass;.bashrc;.bash_profile;.bash_login;.profile" mimetype="application/x-shellscript" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
+
+<!-- (c) 2004 by Wilbert Berendsen (wilbert@kde.nl)
+    Changes by Matthew Woehlke (mw_triad@users.sourceforge.net)
+    Changes by Sebastian Pipping (webmaster@hartwork.org)
+    Released under the LGPL, part of kdelibs/kate -->
+
+  <highlighting>
+    <list name="keywords">
+      <item> else </item>
+      <item> for </item>
+      <item> function </item>
+      <item> in </item>
+      <item> select </item>
+      <item> until </item>
+      <item> while </item>
+      <item> elif </item>
+      <item> then </item>
+      <item> set </item>
+    </list>
+
+    <list name="builtins">
+      <item> : </item>
+      <item> source </item>
+      <item> alias </item>
+      <item> bg </item>
+      <item> bind </item>
+      <item> break </item>
+      <item> builtin </item>
+      <item> cd </item>
+      <item> caller </item>
+      <item> command </item>
+      <item> compgen </item>
+      <item> complete </item>
+      <item> continue </item>
+      <item> dirs </item>
+      <item> disown </item>
+      <item> echo </item>
+      <item> enable </item>
+      <item> eval </item>
+      <item> exec </item>
+      <item> exit </item>
+      <item> fc </item>
+      <item> fg </item>
+      <item> getopts </item>
+      <item> hash </item>
+      <item> help </item>
+      <item> history </item>
+      <item> jobs </item>
+      <item> kill </item>
+      <item> let </item>
+      <item> logout </item>
+      <item> popd </item>
+      <item> printf </item>
+      <item> pushd </item>
+      <item> pwd </item>
+      <item> return </item>
+      <item> set </item>
+      <item> shift </item>
+      <item> shopt </item>
+      <item> suspend </item>
+      <item> test </item>
+      <item> time </item>
+      <item> times </item>
+      <item> trap </item>
+      <item> type </item>
+      <item> ulimit </item>
+      <item> umask </item>
+      <item> unalias </item>
+      <item> wait </item>
+    </list>
+
+    <list name="builtins_var">
+      <item> export </item>
+      <item> unset </item>
+      <item> declare </item>
+      <item> typeset </item>
+      <item> local </item>
+      <item> read </item>
+      <item> readonly </item>
+    </list>
+
+    <list name="unixcommands">
+      <!-- /bin -->
+      <item> arch </item>
+      <item> awk </item>
+      <item> bash </item>
+      <item> bunzip2 </item>
+      <item> bzcat </item>
+      <item> bzcmp </item>
+      <item> bzdiff </item>
+      <item> bzegrep </item>
+      <item> bzfgrep </item>
+      <item> bzgrep </item>
+      <item> bzip2 </item>
+      <item> bzip2recover </item>
+      <item> bzless </item>
+      <item> bzmore </item>
+      <item> cat </item>
+      <item> chattr </item>
+      <item> chgrp </item>
+      <item> chmod </item>
+      <item> chown </item>
+      <item> chvt </item>
+      <item> cp </item>
+      <item> date </item>
+      <item> dd </item>
+      <item> deallocvt </item>
+      <item> df </item>
+      <item> dir </item>
+      <item> dircolors </item>
+      <item> dmesg </item>
+      <item> dnsdomainname </item>
+      <item> domainname </item>
+      <item> du </item>
+      <item> dumpkeys </item>
+      <item> echo </item>
+      <item> ed </item>
+      <item> egrep </item>
+      <item> false </item>
+      <item> fgconsole </item>
+      <item> fgrep </item>
+      <item> fuser </item>
+      <item> gawk </item>
+      <item> getkeycodes </item>
+      <item> gocr </item>
+      <item> grep </item>
+      <item> groff </item>
+      <item> groups </item>
+      <item> gunzip </item>
+      <item> gzexe </item>
+      <item> gzip </item>
+      <item> hostname </item>
+      <item> igawk </item>
+      <item> install </item>
+      <item> kbd_mode </item>
+      <item> kbdrate </item>
+      <item> killall </item>
+      <item> last </item>
+      <item> lastb </item>
+      <item> link </item>
+      <item> ln </item>
+      <item> loadkeys </item>
+      <item> loadunimap </item>
+      <item> login </item>
+      <item> ls </item>
+      <item> lsattr </item>
+      <item> lsmod </item>
+      <item> lsmod.old </item>
+      <item> mapscrn </item>
+      <item> mesg </item>
+      <item> mkdir </item>
+      <item> mkfifo </item>
+      <item> mknod </item>
+      <item> mktemp </item>
+      <item> more </item>
+      <item> mount </item>
+      <item> mv </item>
+      <item> nano </item>
+      <item> netstat </item>
+      <item> nisdomainname </item>
+      <item> nroff </item>
+      <item> openvt </item>
+      <item> pgawk </item>
+      <item> pidof </item>
+      <item> ping </item>
+      <item> ps </item>
+      <item> pstree </item>
+      <item> pwd </item>
+      <item> rbash </item>
+      <item> readlink </item>
+      <item> red </item>
+      <item> resizecons </item>
+      <item> rm </item>
+      <item> rmdir </item>
+      <item> run-parts </item>
+      <item> sash </item>
+      <item> sed </item>
+      <item> setfont </item>
+      <item> setkeycodes </item>
+      <item> setleds </item>
+      <item> setmetamode </item>
+      <item> setserial </item>
+      <item> sh </item>
+      <item> showkey </item>
+      <item> shred </item>
+      <item> sleep </item>
+      <item> ssed </item>
+      <item> stat </item>
+      <item> stty </item>
+      <item> su </item>
+      <item> sync </item>
+      <item> tar </item>
+      <item> tempfile </item>
+      <item> touch </item>
+      <item> troff </item>
+      <item> true </item>
+      <item> umount </item>
+      <item> uname </item>
+      <item> unicode_start </item>
+      <item> unicode_stop </item>
+      <item> unlink </item>
+      <item> utmpdump </item>
+      <item> uuidgen </item>
+      <item> vdir </item>
+      <item> wall </item>
+      <item> wc </item>
+      <item> ypdomainname </item>
+      <item> zcat </item>
+      <item> zcmp </item>
+      <item> zdiff </item>
+      <item> zegrep </item>
+      <item> zfgrep </item>
+      <item> zforce </item>
+      <item> zgrep </item>
+      <item> zless </item>
+      <item> zmore </item>
+      <item> znew </item>
+      <item> zsh </item>
+
+      <!-- some from /usr/bin -->
+      <item> aclocal </item>
+      <item> aconnect </item>
+      <item> aplay </item>
+      <item> apm </item>
+      <item> apmsleep </item>
+      <item> apropos </item>
+      <item> ar </item>
+      <item> arecord </item>
+      <item> as </item>
+      <item> as86 </item>
+      <item> autoconf </item>
+      <item> autoheader </item>
+      <item> automake </item>
+      <item> awk </item>
+      <item> basename </item>
+      <item> bc </item>
+      <item> bison </item>
+      <item> c++ </item>
+      <item> cal </item>
+      <item> cat </item>
+      <item> cc </item>
+      <item> cdda2wav </item>
+      <item> cdparanoia </item>
+      <item> cdrdao </item>
+      <item> cd-read </item>
+      <item> cdrecord </item>
+      <item> chfn </item>
+      <item> chgrp </item>
+      <item> chmod </item>
+      <item> chown </item>
+      <item> chroot </item>
+      <item> chsh </item>
+      <item> clear </item>
+      <item> cmp </item>
+      <item> co </item>
+      <item> col </item>
+      <item> comm </item>
+      <item> cp </item>
+      <item> cpio </item>
+      <item> cpp </item>
+      <item> cut </item>
+      <item> dc </item>
+      <item> dd </item>
+      <item> df </item>
+      <item> diff </item>
+      <item> diff3 </item>
+      <item> dir </item>
+      <item> dircolors </item>
+      <item> directomatic </item>
+      <item> dirname </item>
+      <item> du </item>
+      <item> env </item>
+      <item> expr </item>
+      <item> fbset </item>
+      <item> file </item>
+      <item> find </item>
+      <item> flex </item>
+      <item> flex++ </item>
+      <item> fmt </item>
+      <item> free </item>
+      <item> ftp </item>
+      <item> funzip </item>
+      <item> fuser </item>
+      <item> g++ </item>
+      <item> gawk </item>
+      <item> gc </item>
+      <item> gcc </item>
+      <item> gdb </item>
+      <item> getent </item>
+      <item> getopt </item>
+      <item> gettext </item>
+      <item> gettextize </item>
+      <item> gimp </item>
+      <item> gimp-remote </item>
+      <item> gimptool </item>
+      <item> gmake </item>
+      <item> gs </item>
+      <item> head </item>
+      <item> hexdump </item>
+      <item> id </item>
+      <item> install </item>
+      <item> join </item>
+      <item> kill </item>
+      <item> killall </item>
+      <item> ld </item>
+      <item> ld86 </item>
+      <item> ldd </item>
+      <item> less </item>
+      <item> lex </item>
+      <item> ln </item>
+      <item> locate </item>
+      <item> lockfile </item>
+      <item> logname </item>
+      <item> lp </item>
+      <item> lpr </item>
+      <item> ls </item>
+      <item> lynx </item>
+      <item> m4 </item>
+      <item> make </item>
+      <item> man </item>
+      <item> mkdir </item>
+      <item> mknod </item>
+      <item> msgfmt </item>
+      <item> mv </item>
+      <item> namei </item>
+      <item> nasm </item>
+      <item> nawk </item>
+      <item> nice </item>
+      <item> nl </item>
+      <item> nm </item>
+      <item> nm86 </item>
+      <item> nmap </item>
+      <item> nohup </item>
+      <item> nop </item>
+      <item> od </item>
+      <item> passwd </item>
+      <item> patch </item>
+      <item> pcregrep </item>
+      <item> pcretest </item>
+      <item> perl </item>
+      <item> perror </item>
+      <item> pidof </item>
+      <item> pr </item>
+      <item> printf </item>
+      <item> procmail </item>
+      <item> prune </item>
+      <item> ps2ascii </item>
+      <item> ps2epsi </item>
+      <item> ps2frag </item>
+      <item> ps2pdf </item>
+      <item> ps2ps </item>
+      <item> psbook </item>
+      <item> psmerge </item>
+      <item> psnup </item>
+      <item> psresize </item>
+      <item> psselect </item>
+      <item> pstops </item>
+      <item> rcs </item>
+      <item> rev </item>
+      <item> rm </item>
+      <item> scp </item>
+      <item> sed </item>
+      <item> seq </item>
+      <item> setterm </item>
+      <item> shred </item>
+      <item> size </item>
+      <item> size86 </item>
+      <item> skill </item>
+      <item> slogin </item>
+      <item> snice </item>
+      <item> sort </item>
+      <item> sox </item>
+      <item> split </item>
+      <item> ssh </item>
+      <item> ssh-add </item>
+      <item> ssh-agent </item>
+      <item> ssh-keygen </item>
+      <item> ssh-keyscan </item>
+      <item> stat </item>
+      <item> strings </item>
+      <item> strip </item>
+      <item> sudo </item>
+      <item> suidperl </item>
+      <item> sum </item>
+      <item> tac </item>
+      <item> tail </item>
+      <item> tee </item>
+      <item> test </item>
+      <item> tr </item>
+      <item> uniq </item>
+      <item> unlink </item>
+      <item> unzip </item>
+      <item> updatedb </item>
+      <item> updmap </item>
+      <item> uptime </item>
+      <item> users </item>
+      <item> vmstat </item>
+      <item> w </item>
+      <item> wc </item>
+      <item> wget </item>
+      <item> whatis </item>
+      <item> whereis </item>
+      <item> which </item>
+      <item> who </item>
+      <item> whoami </item>
+      <item> write </item>
+      <item> xargs </item>
+      <item> yacc </item>
+      <item> yes </item>
+      <item> zip </item>
+      <item> zsoelim </item>
+
+      <!-- others -->
+      <item> dcop </item>
+      <item> kdialog </item>
+      <item> kfile </item>
+      <item> xhost </item>
+      <item> xmodmap </item>
+      <item> xset </item>
+    </list>
+
+
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Start">
+        <IncludeRules context="FindAll" />
+      </context>
+
+<!-- ====== The following rulessets are meant to be included ======== -->
+      <!-- FindAll tries to interpret everything -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindAll">
+        <IncludeRules context="FindComments" />
+        <IncludeRules context="FindCommands" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+        <IncludeRules context="FindOthers" />
+      </context>
+
+      <!-- FindMost tries to interpret anything except commands -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindMost">
+        <IncludeRules context="FindComments" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+        <IncludeRules context="FindOthers" />
+      </context>
+
+
+      <!-- FindComments consumes shell comments till EOL -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindComments">
+        <DetectChar attribute="Comment" context="Comment" char="#" firstNonSpace="true"/>
+        <RegExpr attribute="Normal Text" context="Comment" String="[\s;](?=#)" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="Comment">
+        <IncludeRules context="##Alerts" />
+      </context>
+
+      <!-- FindCommentsParen consumes shell comments till EOL or a closing parenthese -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindCommentsParen">
+        <DetectChar attribute="Comment" context="CommentParen" char="#" firstNonSpace="true"/>
+        <RegExpr attribute="Normal Text" context="CommentParen" String="[\s;](?=#)" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="CommentParen">
+        <RegExpr attribute="Comment" context="#pop" String="[^)](?=\))" />
+        <IncludeRules context="##Alerts" />
+      </context>
+
+      <!-- FindCommentsBackq consumes shell comments till EOL or a backquote -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindCommentsBackq">
+        <DetectChar attribute="Comment" context="CommentBackq" char="#" firstNonSpace="true"/>
+        <RegExpr attribute="Normal Text" context="CommentBackq" String="[\s;](?=#)" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="CommentBackq">
+        <RegExpr attribute="Comment" context="#pop" String="[^`](?=`)" />
+        <IncludeRules context="##Alerts" />
+      </context>
+
+
+      <!-- FindCommands matches many items that can be expected outside strings, substitutions etc. -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindCommands">
+        <!-- start expression in double parentheses -->
+        <Detect2Chars attribute="Keyword" context="ExprDblParen" char="(" char1="(" beginRegion="expression" />
+        <!-- start expression in double brackets -->
+        <RegExpr attribute="Keyword" context="ExprDblBracket" String="\[\[&eos;" beginRegion="expression" column="0"/>
+        <RegExpr attribute="Keyword" context="ExprDblBracket" String="\s\[\[&eos;" beginRegion="expression" />
+        <!-- start expression in single brackets -->
+        <RegExpr attribute="Builtin" context="ExprBracket" String="\[&eos;" beginRegion="expression" column="0"/>
+        <RegExpr attribute="Builtin" context="ExprBracket" String="\s\[&eos;" beginRegion="expression" />
+        <!-- start a group command with { -->
+        <RegExpr attribute="Keyword" context="Group" String="\{&eos;" beginRegion="group" />
+        <!-- start a subshell -->
+        <DetectChar attribute="Keyword" context="SubShell" char="(" beginRegion="subshell" />
+        <!-- match do and if blocks -->
+        <RegExpr attribute="Keyword" context="#stay" String="\bdo&noword;" beginRegion="do" />
+        <RegExpr attribute="Keyword" context="#stay" String="\bdone&noword;" endRegion="do" />
+        <RegExpr attribute="Keyword" context="#stay" String="\bif&noword;" beginRegion="if" />
+        <RegExpr attribute="Keyword" context="#stay" String="\bfi&noword;" endRegion="if" />
+        <!-- handle case as a special case -->
+        <RegExpr attribute="Keyword" context="Case" String="\bcase&noword;" beginRegion="case" />
+        <!-- handle command line options -->
+        <RegExpr attribute="Option" context="#stay" String="-[A-Za-z0-9][A-Za-z0-9_]*" />
+        <RegExpr attribute="Option" context="#stay" String="--[a-z][A-Za-z0-9_-]*" />
+        <!-- handle variable assignments -->
+        <RegExpr attribute="Variable" context="Assign" String="\b&varname;\+?=" />
+        <RegExpr attribute="Variable" context="AssignSubscr" String="\b&varname;(?=\[.+\]\+?=)" />
+        <!-- handle functions with function keyword before keywords -->
+        <StringDetect attribute="Function" context="#stay" String=":()" />
+        <RegExpr attribute="Keyword" context="FunctionDef" String="\bfunction\b" />
+        <!-- handle keywords -->
+        <keyword attribute="Keyword" context="#stay" String="keywords" />
+        <RegExpr attribute="Builtin" context="#stay" String="\.(?=\s)" />
+        <keyword attribute="Builtin" context="#stay" String="builtins" />
+        <keyword attribute="Command" context="#stay" String="unixcommands" />
+        <!-- handle commands that have variable names as argument -->
+        <keyword attribute="Builtin" context="VarName" String="builtins_var" />
+        <!-- handle here-string -->
+        <RegExpr attribute="Redirection" context="#stay" String="\d*&lt;&lt;&lt;" />
+        <!-- handle here document -->
+        <StringDetect attribute="Redirection" context="HereDoc" String="&lt;&lt;" lookAhead="true" />
+        <!-- handle process subst -->
+        <RegExpr attribute="Redirection" context="ProcessSubst" String="[&lt;&gt;]\(" />
+        <!-- handle redirection -->
+        <RegExpr attribute="Redirection" context="#stay" String="([0-9]*(&gt;{1,2}|&lt;)(&amp;[0-9]+-?)?|&amp;&gt;|&gt;&amp;|[0-9]*&lt;&gt;)" />
+        <!-- handle &, &&, | and || -->
+        <RegExpr attribute="Control" context="#stay" String="([|&amp;])\1?" />
+        <!-- mark function definitions without function keyword -->
+        <RegExpr attribute="Function" context="#stay" String="&funcname;\s*\(\)" />
+      </context>
+
+      <!-- FindOthers contains various rules to mark different shell input -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindOthers">
+        <RegExpr attribute="Escape" context="#stay" String="\\[][;\\$`{}()|&amp;&lt;&gt;* ]" />
+        <RegExpr attribute="Keyword" context="#stay" String="\\$" />
+        <RegExpr attribute="Escape" context="#stay" String="\{(?!(\s|$))\S*\}" />
+        <RegExpr attribute="Path" context="#stay" String="&pathpart;*(?=/)" />
+        <RegExpr attribute="Path" context="#stay" String="~\w*" />
+        <RegExpr attribute="Path" context="#stay" String="/&pathpart;*(?=([\s/):;$`'&quot;]|$))" />
+        <!-- TODO: shell globs beside * and ? (in Path's) -->
+      </context>
+
+      <!-- FindStrings looks for single and double quoted strings, also with $-prefix -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindStrings">
+        <Detect2Chars attribute="Escape" context="#stay" char="\\" char1="'" />
+        <Detect2Chars attribute="Escape" context="#stay" char="\\" char1="&quot;" />
+        <DetectChar attribute="String SingleQ" context="StringSQ" char="'" />
+        <DetectChar attribute="String DoubleQ" context="StringDQ" char="&quot;" />
+        <Detect2Chars attribute="String SingleQ" context="StringEsc" char="$" char1="'" />
+        <Detect2Chars attribute="String Transl." context="StringDQ" char="$" char1="&quot;" />
+      </context>
+
+      <!-- FindSubstitutions goes after anything starting with $ and ` and their escapes -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindSubstitutions">
+        <RegExpr attribute="Variable" context="Subscript" String="\$&varname;\[" />
+        <RegExpr attribute="Variable" context="#stay" String="\$&varname;" />
+        <RegExpr attribute="Variable" context="#stay" String="\$[*@#?$!_0-9-]" />
+        <RegExpr attribute="Variable" context="#stay" String="\$\{[*@#?$!_0-9-]\}" />
+        <RegExpr attribute="Variable" context="#stay" String="\$\{#&varname;(\[[*@]\])?\}" />
+        <RegExpr attribute="Variable" context="#stay" String="\$\{!&varname;(\[[*@]\]|[*@])?\}" />
+        <RegExpr attribute="Variable" context="VarBrace" String="\$\{&varname;" />
+        <RegExpr attribute="Variable" context="VarBrace" String="\$\{[*@#?$!_0-9-](?=[:#%/=?+-])" />
+        <StringDetect attribute="Variable" context="ExprDblParenSubst" String="$((" beginRegion="expression" />
+        <StringDetect attribute="Redirection" context="SubstFile" String="$(&lt;" />
+        <StringDetect attribute="Variable" context="SubstCommand" String="$(" />
+        <DetectChar attribute="Backquote" context="SubstBackq" char="`" />
+        <RegExpr attribute="Escape" context="#stay" String="\\[`$\\]" />
+      </context>
+
+      <!-- FindTests finds operators valid in tests -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindTests">
+        <RegExpr attribute="Expression" context="#stay" String="-[abcdefghkprstuwxOGLSNozn](?=\s)"/>
+        <RegExpr attribute="Expression" context="#stay" String="-([no]t|ef)(?=\s)"/>
+        <RegExpr attribute="Expression" context="#stay" String="([!=]=?|[&gt;&lt;])(?=\s)"/>
+        <RegExpr attribute="Expression" context="#stay" String="-(eq|ne|[gl][te])(?=\s)"/>
+      </context>
+
+
+<!-- ====== These are the contexts that can be branched to ======= -->
+
+      <!-- ExprDblParen consumes an expression started in command mode till )) -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParen">
+        <Detect2Chars attribute="Keyword" context="#pop" char=")" char1=")" endRegion="expression" />
+        <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
+        <IncludeRules context="FindMost" />
+      </context>
+
+      <!-- ExprDblParenSubst like ExprDblParen but matches )) as Variable -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenSubst">
+        <Detect2Chars attribute="Variable" context="#pop" char=")" char1=")" endRegion="expression" />
+        <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
+        <IncludeRules context="FindMost" />
+      </context>
+
+      <!-- ExprSubParen consumes an expression till ) -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprSubParen">
+        <DetectChar attribute="Normal Text" context="#pop" char=")" />
+        <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
+        <IncludeRules context="FindMost" />
+      </context>
+
+      <!-- ExprBracket consumes an expression till ] -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracket">
+        <RegExpr attribute="Builtin" context="#pop" String="\s\](?=($|[\s;|&amp;]))" endRegion="expression" />
+        <RegExpr attribute="Builtin" context="#pop" String="\](?=($|[\s;|&amp;]))" endRegion="expression" column="0"/>
+        <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
+        <IncludeRules context="FindTests" />
+        <IncludeRules context="FindMost" />
+      </context>
+
+      <!-- ExprDblBracket consumes an expression till ]] -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracket">
+        <RegExpr attribute="Keyword" context="#pop" String="\s\]\](?=($|[\s;|&amp;]))" endRegion="expression" />
+        <RegExpr attribute="Keyword" context="#pop" String="\]\](?=($|[\s;|&amp;]))" endRegion="expression" column="0"/>
+        <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
+        <IncludeRules context="FindTests" />
+        <IncludeRules context="FindMost" />
+      </context>
+
+      <!-- Group consumes shell input till } -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="Group">
+        <DetectChar attribute="Keyword" context="#pop" char="}" endRegion="group" />
+        <IncludeRules context="FindAll" />
+      </context>
+
+      <!-- SubShell consumes shell input till ) -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubShell">
+        <DetectChar attribute="Keyword" context="#pop" char=")" endRegion="subshell" />
+        <IncludeRules context="FindAll" />
+      </context>
+
+      <!-- Assign consumes an expression till EOL or whitespace -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="Assign" fallthrough="true" fallthroughContext="#pop">
+        <DetectChar attribute="Variable" context="AssignArray" char="(" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+        <IncludeRules context="FindOthers" />
+        <RegExpr attribute="Normal Text" context="#stay" String="[\w:,+_./-]" />
+      </context>
+
+      <!-- AssignArray consumes everything till ), marking assignments -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="AssignArray">
+        <DetectChar attribute="Variable" context="#pop" char=")" />
+        <DetectChar attribute="Variable" context="Subscript" char="[" />
+        <DetectChar attribute="Variable" context="Assign" char="=" />
+        <IncludeRules context="FindMost" />
+      </context>
+
+      <!-- AssignSubscr first expects a [ then parses subscript and continues with '=value' -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="AssignSubscr" fallthrough="true" fallthroughContext="#pop">
+        <DetectChar attribute="Variable" context="Subscript" char="[" />
+        <Detect2Chars attribute="Variable" context="Assign" char="+" char1="=" />
+        <DetectChar attribute="Variable" context="Assign" char="=" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+        <IncludeRules context="FindOthers" />
+      </context>
+
+      <!-- Subscript consumes anything till ], marks as Variable -->
+      <context attribute="Variable" lineEndContext="#stay" name="Subscript">
+        <DetectChar attribute="Variable" context="#pop" char="]" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+        <IncludeRules context="FindOthers" />
+      </context>
+
+      <!-- FunctionDef consumes a name, possibly with (), marks as Function -->
+      <context attribute="Function" lineEndContext="#pop" name="FunctionDef" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="Function" context="#pop" String="\s+&funcname;(\s*\(\))?" />
+      </context>
+
+      <!-- VarName consumes spare variable names and assignments -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="VarName" fallthrough="true" fallthroughContext="#pop">
+        <!-- handle command line options -->
+        <RegExpr attribute="Option" context="#stay" String="-[A-Za-z0-9]+" />
+        <RegExpr attribute="Option" context="#stay" String="--[a-z][A-Za-z0-9_-]*" />
+        <RegExpr attribute="Variable" context="#stay" String="\b&varname;" />
+        <DetectChar attribute="Variable" context="Subscript" char="[" />
+        <DetectChar attribute="Variable" context="Assign" char="=" />
+        <IncludeRules context="FindMost" />
+        <!-- stay here in spaces and other safe characters -->
+        <RegExpr attribute="Normal Text" context="#stay" String="[^]})|;`&amp;&gt;&lt;]" />
+      </context>
+
+      <!-- ProcessSubst handles <(command) and >(command) -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ProcessSubst">
+        <DetectChar attribute="Redirection" context="#pop" char=")" />
+        <IncludeRules context="FindCommentsParen" />
+        <IncludeRules context="FindCommands" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+        <IncludeRules context="FindOthers" />
+      </context>
+
+      <!-- StringSQ consumes anything till ' -->
+      <context attribute="String SingleQ" lineEndContext="#stay" name="StringSQ">
+        <DetectChar attribute="String SingleQ" context="#pop" char="'" />
+      </context>
+
+      <!-- StringDQ consumes anything till ", substitutes vars and expressions -->
+      <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQ">
+        <DetectChar attribute="String DoubleQ" context="#pop" char="&quot;" />
+        <RegExpr attribute="String Escape" context="#stay" String="\\[`&quot;\\$\n]" />
+        <IncludeRules context="FindSubstitutions" />
+      </context>
+
+      <!-- StringEsc eats till ', but escaping many characters -->
+      <context attribute="String SingleQ" lineEndContext="#stay" name="StringEsc">
+        <DetectChar attribute="String SingleQ" context="#pop" char="'" />
+        <RegExpr attribute="String Escape" context="#stay" String="\\[abefnrtv\\']" />
+        <RegExpr attribute="String Escape" context="#stay" String="\\([0-7]{1,3}|x[A-Fa-f0-9]{1,2}|c.)" />
+      </context>
+
+      <!-- VarBrace is called as soon as ${xxx is encoutered -->
+      <context attribute="Error" lineEndContext="#stay" name="VarBrace">
+        <DetectChar attribute="Variable" context="#pop" char="}" />
+        <DetectChar attribute="Variable" context="Subscript" char="[" />
+        <RegExpr attribute="Variable" context="VarAlt" String="(:?[-=?+]|##?|%%?)" />
+        <RegExpr attribute="Variable" context="VarSubst" String="//?" />
+        <DetectChar attribute="Variable" context="VarSub" char=":" />
+      </context>
+
+      <!-- VarAlt is to handle default/alternate/etc values of variables -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarAlt">
+        <DetectChar attribute="Variable" context="#pop#pop" char="}" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+      </context>
+
+      <!-- VarSubst is to handle substitutions on variables -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarSubst">
+        <DetectChar attribute="Variable" context="#pop#pop" char="}" />
+        <DetectChar attribute="Variable" context="VarSubst2" char="/" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarSubst2">
+        <DetectChar attribute="Variable" context="#pop#pop#pop" char="}" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+      </context>
+
+      <!-- VarSub is to substrings of variables -->
+      <context attribute="Error" lineEndContext="#stay" name="VarSub">
+        <DetectChar attribute="Variable" context="VarSub2" char=":" />
+        <DetectChar attribute="Variable" context="#pop#pop" char="}" />
+        <RegExpr attribute="Variable" context="#stay" String="&varname;" />
+        <RegExpr attribute="Variable" context="#stay" String="[0-9]+(?=[:}])" />
+        <IncludeRules context="FindSubstitutions" />
+      </context>
+      <context attribute="Error" lineEndContext="#stay" name="VarSub2">
+        <DetectChar attribute="Variable" context="#pop#pop#pop" char="}" />
+        <RegExpr attribute="Variable" context="#stay" String="&varname;" />
+        <RegExpr attribute="Variable" context="#stay" String="[0-9](?=[:}])" />
+        <IncludeRules context="FindSubstitutions" />
+      </context>
+
+
+      <!-- SubstFile is called after a <( or >( is encoutered -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubstFile">
+        <DetectChar attribute="Redirection" context="#pop" char=")" />
+        <IncludeRules context="FindCommentsParen" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+        <IncludeRules context="FindOthers" />
+      </context>
+
+      <!-- SubstCommand is called after a $( is encountered -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubstCommand">
+        <DetectChar attribute="Variable" context="#pop" char=")" />
+        <IncludeRules context="FindCommentsParen" />
+        <IncludeRules context="FindCommands" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+        <IncludeRules context="FindOthers" />
+      </context>
+
+      <!-- SubstBackq is called when a backquote is encountered -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubstBackq">
+        <DetectChar attribute="Backquote" context="#pop" char="`" />
+        <IncludeRules context="FindCommentsBackq" />
+        <IncludeRules context="FindCommands" />
+        <IncludeRules context="FindStrings" />
+        <IncludeRules context="FindSubstitutions" />
+        <IncludeRules context="FindOthers" />
+      </context>
+
+      <!-- Case is called after the case keyword is encoutered. We handle this because of
+           the lonely closing parentheses that would otherwise disturb the expr matching -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="Case">
+        <RegExpr attribute="Keyword" context="CaseIn" String="\sin\b" />
+        <IncludeRules context="FindMost" />
+      </context>
+
+      <!-- CaseIn is called when the construct 'case ... in' has been found. -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="CaseIn">
+        <RegExpr attribute="Keyword" context="#pop#pop" String="\besac(?=$|[\s;)])" endRegion="case" />
+        <DetectChar attribute="Keyword" context="CaseExpr" char=")" beginRegion="caseexpr" />
+        <AnyChar attribute="Keyword" context="#stay" String="(|" />
+        <IncludeRules context="FindMost" />
+      </context>
+
+      <!-- CaseExpr eats shell input till ;; -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="CaseExpr">
+        <Detect2Chars attribute="Keyword" context="#pop" char=";" char1=";" endRegion="caseexpr" />
+        <IncludeRules context="FindAll" />
+      </context>
+
+      <!-- HereDoc consumes Here-documents. It is called at the beginning of the "<<" construct. -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="HereDoc">
+        <RegExpr attribute="Redirection" context="HereDocIQ"  String="(&lt;&lt;-\s*&quot;(&word;)&quot;)" lookAhead="true" />
+        <RegExpr attribute="Redirection" context="HereDocIQ"  String="(&lt;&lt;-\s*'(&word;)')" lookAhead="true" />
+        <RegExpr attribute="Redirection" context="HereDocIQ"  String="(&lt;&lt;-\s*\\(&word;))" lookAhead="true" />
+        <RegExpr attribute="Redirection" context="HereDocINQ" String="(&lt;&lt;-\s*(&word;))" lookAhead="true" />
+        <RegExpr attribute="Redirection" context="HereDocQ"   String="(&lt;&lt;\s*&quot;(&word;)&quot;)" lookAhead="true" />
+        <RegExpr attribute="Redirection" context="HereDocQ"   String="(&lt;&lt;\s*'(&word;)')" lookAhead="true" />
+        <RegExpr attribute="Redirection" context="HereDocQ"   String="(&lt;&lt;\s*\\(&word;))" lookAhead="true" />
+        <RegExpr attribute="Redirection" context="HereDocNQ"  String="(&lt;&lt;\s*(&word;))" lookAhead="true" />
+        <StringDetect attribute="Redirection" context="#pop"  String="&lt;&lt;" /><!-- always met -->
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="HereDocRemainder">
+        <IncludeRules context="FindAll" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="HereDocQ" dynamic="true">
+        <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" />
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^%2\b" dynamic="true" column="0"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="HereDocNQ" dynamic="true">
+        <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" />
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^%2\b" dynamic="true" column="0"/>
+        <IncludeRules context="FindSubstitutions" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="HereDocIQ" dynamic="true">
+        <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" />
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2\b" dynamic="true" column="0"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="HereDocINQ" dynamic="true">
+        <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" />
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2\b" dynamic="true" column="0"/>
+        <IncludeRules context="FindSubstitutions" />
+      </context>
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text"	defStyleNum="dsNormal" />
+      <itemData name="Comment"		defStyleNum="dsComment" />
+      <itemData name="Keyword" 		defStyleNum="dsKeyword" />
+      <itemData name="Control" 		defStyleNum="dsKeyword" />
+      <itemData name="Builtin" 		defStyleNum="dsKeyword" color="#808" />
+      <itemData name="Command" 		defStyleNum="dsKeyword" color="#c0c" />
+      <itemData name="Redirection" 	defStyleNum="dsKeyword" color="#238" />
+      <itemData name="Escape" 		defStyleNum="dsDataType" />
+      <itemData name="String SingleQ" 	defStyleNum="dsString" />
+      <itemData name="String DoubleQ" 	defStyleNum="dsString" />
+      <itemData name="Backquote" 	defStyleNum="dsKeyword" />
+      <itemData name="String Transl." 	defStyleNum="dsString" />
+      <itemData name="String Escape" 	defStyleNum="dsDataType" />
+      <itemData name="Variable" 	defStyleNum="dsOthers" />
+      <itemData name="Expression" 	defStyleNum="dsOthers" />
+      <itemData name="Function" 	defStyleNum="dsFunction" />
+      <itemData name="Path" 		defStyleNum="dsNormal" />
+      <itemData name="Option" 		defStyleNum="dsNormal" />
+      <itemData name="Error"            defStyleNum="dsError" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="#"/>
+    </comments>
+    <keywords casesensitive="1" weakDeliminator="^%#[]$._{}:-/" additionalDeliminator="`"/>
+  </general>
+</language>
diff --git a/xml/bibtex.xml b/xml/bibtex.xml
new file mode 100644
--- /dev/null
+++ b/xml/bibtex.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="BibTeX" version="1.13" kateversion="2.4" extensions="*.bib" section="Markup" mimetype="text/x-bib" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)" license="LGPL">
+  <highlighting>
+    <list name="kw_entry">
+      <item>@article</item>
+      <item>@book</item>
+      <item>@booklet</item>
+      <item>@conference</item>
+      <item>@inbook</item>
+      <item>@incollection</item>
+      <item>@inproceedings</item>
+      <item>@manual</item>
+      <item>@mastersthesis</item>
+      <item>@misc</item>
+      <item>@phdthesis</item>
+      <item>@proceedings</item>
+      <item>@techreport</item>
+      <item>@unpublished</item>
+      <item>@collection</item>
+      <item>@patent</item>
+    </list>
+    <list name="kw_command">
+      <item>@string</item>
+      <item>@preamble</item>
+      <item>@comment</item>
+    </list>
+    <contexts>
+      <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr String="([a-zA-Z]+)\s*=" attribute="Field" context="#stay" firstNonSpace="true" />
+        <keyword String="kw_entry" attribute="Entry" context="Entry"/>
+        <keyword String="kw_command" attribute="Command" context="#stay"/>
+        <DetectChar char="{" attribute="Normal Text" context="#stay" beginRegion="block" />
+        <DetectChar char="}" attribute="Normal Text" context="#stay" endRegion="block" />
+        <RegExpr String="\\([a-zA-Z]+|.)" attribute="Char" context="#stay"/>
+        <DetectChar char="&quot;" attribute="String" context="String"/>
+      </context>
+
+      <context name="Entry" attribute="Ref Key" lineEndContext="#stay">
+        <DetectChar char="," attribute="Normal Text" context="#pop"/>
+        <DetectChar char="{" attribute="Normal Text" context="#stay" beginRegion="block" />
+        <DetectChar char="}" attribute="Normal Text" context="#stay" endRegion="block" />
+        <RegExpr String="\\([a-zA-Z]+|.)" attribute="Char" context="#stay"/>
+        <DetectChar char="&quot;" attribute="String" context="#pop"/>
+      </context>
+
+      <context name="String" attribute="String" lineEndContext="#stay">
+        <RegExpr String="\\([a-zA-Z]+|.)" attribute="Char" context="#stay"/>
+        <DetectChar char="&quot;" attribute="String" context="#pop"/>
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Entry" defStyleNum="dsKeyword" color="#0000ff"/>
+      <itemData name="Command" defStyleNum="dsFunction"/>
+      <itemData name="Field" defStyleNum="dsDataType"/>
+      <itemData name="Ref Key" defStyleNum="dsOthers"/>
+      <itemData name="String" defStyleNum="dsString"/>
+      <itemData name="Char" defStyleNum="dsChar"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+   <keywords casesensitive="0" weakDeliminator="\" wordWrapDeliminator=",{}[]"/>
+  </general>
+</language>
diff --git a/xml/c.xml b/xml/c.xml
new file mode 100644
--- /dev/null
+++ b/xml/c.xml
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="C" version="1.41" kateversion="2.4" section="Sources" extensions="*.c;*.C;*.h" mimetype="text/x-csrc;text/x-c++src;text/x-chdr" priority="5">
+<!--
+##########################################################################
+## Fixes by Sebastian Pipping (webmaster@hartwork.org)
+##
+## NOTE: Keep in sync with C++ highlighter! (cpp.xml)
+##########################################################################
+-->
+  <highlighting>
+    <list name="keywords">
+      <item> break </item>
+      <item> case </item>
+      <item> continue </item>
+      <item> default </item>
+      <item> do </item>
+      <item> else </item>
+      <item> enum </item>
+      <item> extern </item>
+      <item> for </item>
+      <item> goto </item>
+      <item> if </item>
+      <item> inline </item>
+      <item> return </item>
+      <item> sizeof </item>
+      <item> struct </item>
+      <item> switch </item>
+      <item> typedef </item>
+      <item> union </item>
+      <item> while </item>
+    </list>
+    <list name="types">
+      <item> auto </item>
+      <item> char </item>
+      <item> const </item>
+      <item> double </item>
+      <item> float </item>
+      <item> int </item>
+      <item> long </item>
+      <item> register </item>
+      <item> restrict </item>
+      <item> short </item>
+      <item> signed </item>
+      <item> static </item>
+      <item> unsigned </item>
+      <item> void </item>
+      <item> volatile </item>
+      <item> _Imaginary </item>
+      <item> _Complex </item>
+      <item> _Bool </item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+        <DetectSpaces />
+	<RegExpr attribute="Preprocessor" context="Outscoped" String="#\s*if\s+0" beginRegion="PP" firstNonSpace="true" />
+        <DetectChar context="AfterHash" char="#" firstNonSpace="true" lookAhead="true" />
+        <StringDetect attribute="Region Marker" context="Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />
+        <StringDetect attribute="Region Marker" context="Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+        <keyword attribute="Data Type" context="#stay" String="types"/>
+        <DetectIdentifier />
+        <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
+        <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
+        <Float attribute="Float" context="#stay">
+          <AnyChar String="fF" attribute="Float" context="#stay"/>
+        </Float>
+        <HlCOct attribute="Octal" context="#stay"/>
+        <HlCHex attribute="Hex" context="#stay"/>
+        <Int attribute="Decimal" context="#stay" >
+          <StringDetect attribute="Decimal" context="#stay" String="ULL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LUL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LLU" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="UL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LU" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="U" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="L" insensitive="TRUE"/>
+        </Int>
+        <HlCChar attribute="Char" context="#stay"/>
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#pop" name="String">
+        <LineContinue attribute="String" context="#stay"/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+
+      <context attribute="Region Marker" lineEndContext="#pop" name="Region Marker">
+      </context>
+
+      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
+        <LineContinue attribute="Comment" context="#stay"/>
+        <IncludeRules context="##Alerts" />
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+        <IncludeRules context="##Alerts" />
+      </context>
+
+      <context attribute="Error" lineEndContext="#pop" name="AfterHash">
+        <!-- define, elif, else, endif, error, if, ifdef, ifndef, include, include_next, line, pragma, undef, warning -->
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*if(?:def|ndef)?(?=\s+\S)" insensitive="true" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*endif" insensitive="true" endRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Define" String="#\s*define.*((?=\\))" insensitive="true" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*(?:el(?:se|if)|include(?:_next)?|define|undef|line|error|warning|pragma)" insensitive="true" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s+[0-9]+" insensitive="true" firstNonSpace="true" />
+      </context>
+
+      <context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">
+        <LineContinue attribute="Preprocessor" context="#stay"/>
+        <RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>
+        <RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="Commentar/Preprocessor" char="/" char1="*" beginRegion="Comment2" />
+      </context>
+
+      <context attribute="Preprocessor" lineEndContext="#pop" name="Define">
+        <LineContinue attribute="Preprocessor" context="#stay"/>
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Commentar/Preprocessor">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment2" />
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Outscoped" >
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+        <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="#pop" String="#\s*el(?:se|if)" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="#pop" String="#\s*endif" endRegion="PP" firstNonSpace="true" />
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Outscoped intern">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+        <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Comment" context="#pop" String="#\s*endif" endRegion="PP" firstNonSpace="true" />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text"  defStyleNum="dsNormal"/>
+      <itemData name="Keyword"      defStyleNum="dsKeyword"/>
+      <itemData name="Data Type"    defStyleNum="dsDataType"/>
+      <itemData name="Decimal"      defStyleNum="dsDecVal"/>
+      <itemData name="Octal"        defStyleNum="dsBaseN"/>
+      <itemData name="Hex"          defStyleNum="dsBaseN"/>
+      <itemData name="Float"        defStyleNum="dsFloat"/>
+      <itemData name="Char"         defStyleNum="dsChar"/>
+      <itemData name="String"       defStyleNum="dsString"/>
+      <itemData name="String Char"  defStyleNum="dsChar"/>
+      <itemData name="Comment"      defStyleNum="dsComment"/>
+      <itemData name="Symbol"       defStyleNum="dsNormal"/>
+      <itemData name="Preprocessor" defStyleNum="dsOthers"/>
+      <itemData name="Prep. Lib"    defStyleNum="dsOthers"/> <!--,Qt::darkYellow,Qt::yellow,false,false)); -->
+      <itemData name="Alert"        defStyleNum="dsAlert" />
+      <itemData name="Region Marker" defStyleNum="dsRegionMarker" />
+      <itemData name="Error"        defStyleNum="dsError" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="//" />
+      <comment name="multiLine" start="/*" end="*/" />
+    </comments>
+    <keywords casesensitive="1" />
+  </general>
+</language>
diff --git a/xml/cmake.xml b/xml/cmake.xml
new file mode 100644
--- /dev/null
+++ b/xml/cmake.xml
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!-- Author: Alexander Neundorf <neundorf@kde.org> //-->
+<!-- cmake 2.0.3 syntax highlighting -->
+<!-- dsKeyword, dsDataType, dsDecVal, dsBaseN, dsFloat, dsChar, dsString, dsComment, dsOthers, new in KDE 3.3: dsAlert, dsFunction, dsRegionMarker, dsError -->
+<language name="CMake" version="1.04" kateversion="2.4" section="Other" extensions="CMakeLists.txt;*.cmake;" mimetype="">
+  <highlighting>
+
+    <list name = "commands">
+      <item> ABSTRACT_FILES </item>
+      <item> ADD_CUSTOM_COMMAND </item>
+      <item> ADD_CUSTOM_TARGET </item>
+      <item> ADD_DEFINITIONS </item>
+      <item> ADD_DEPENDENCIES </item>
+      <item> ADD_EXECUTABLE </item>
+      <item> ADD_LIBRARY </item>
+      <item> ADD_SUBDIRECTORY </item>
+      <item> ADD_TEST </item>
+      <item> AUX_SOURCE_DIRECTORY </item>
+      <item> BUILD_COMMAND </item>
+      <item> BUILD_NAME </item>
+      <item> CMAKE_MINIMUM_REQUIRED </item>
+      <item> CONFIGURE_FILE </item>
+      <item> CREATE_TEST_SOURCELIST </item>
+      <item> ELSE </item>
+      <item> ELSEIF </item>
+      <item> ENABLE_TESTING </item>
+      <item> ENDFOREACH </item>
+      <item> ENDIF </item>
+      <item> ENDMACRO </item>
+      <item> EXEC_PROGRAM </item>
+      <item> EXPORT_LIBRARY_DEPENDENCIES </item>
+      <item> FILE </item>
+      <item> FIND_FILE </item>
+      <item> FIND_LIBRARY </item>
+      <item> FIND_PACKAGE </item>
+      <item> FIND_PATH </item>
+      <item> FIND_PROGRAM </item>
+      <item> FLTK_WRAP_UI  </item>
+      <item> FOREACH </item>
+      <item> GET_CMAKE_PROPERTY </item>
+      <item> GET_DIRECTORY_PROPERTY </item>
+      <item> GET_FILENAME_COMPONENT </item>
+      <item> GET_SOURCE_FILE_PROPERTY </item>
+      <item> GET_TARGET_PROPERTY </item>
+      <item> IF </item>
+      <item> INCLUDE </item>
+      <item> INCLUDE_DIRECTORIES </item>
+      <item> INCLUDE_EXTERNAL_MSPROJECT </item>
+      <item> INCLUDE_REGULAR_EXPRESSION </item>
+      <item> INSTALL </item>
+      <item> INSTALL_FILES </item>
+      <item> INSTALL_PROGRAMS </item>
+      <item> INSTALL_TARGETS </item>
+      <item> ITK_WRAP_TCL </item>
+      <item> LINK_DIRECTORIES </item>
+      <item> LINK_LIBRARIES </item>
+      <item> LIST </item>
+      <item> LOAD_CACHE </item>
+      <item> LOAD_COMMAND </item>
+      <item> MACRO </item>
+      <item> MAKE_DIRECTORY </item>
+      <item> MARK_AS_ADVANCED </item>
+      <item> MESSAGE </item>
+      <item> OPTION </item>
+      <item> OUTPUT_REQUIRED_FILES </item>
+      <item> PROJECT </item>
+      <item> QT_WRAP_CPP </item>
+      <item> QT_WRAP_UI </item>
+      <item> REMOVE </item>
+      <item> REMOVE_DEFINITIONS </item>
+      <item> SEPARATE_ARGUMENTS </item>
+      <item> SET </item>
+      <item> SET_DIRECTORY_PROPERTIES </item>
+      <item> SET_SOURCE_FILES_PROPERTIES </item>
+      <item> SET_TARGET_PROPERTIES </item>
+      <item> SITE_NAME </item>
+      <item> SOURCE_FILES </item>
+      <item> SOURCE_FILES_REMOVE </item>
+      <item> SOURCE_GROUP </item>
+      <item> STRING </item>
+      <item> SUBDIRS </item>
+      <item> SUBDIR_DEPENDS </item>
+      <item> TARGET_LINK_LIBRARIES </item>
+      <item> TRY_COMPILE </item>
+      <item> TRY_RUN </item>
+      <item> USE_MANGLED_MESA </item>
+      <item> UTILITY_SOURCE </item>
+      <item> VARIABLE_REQUIRES </item>
+      <item> VTK_MAKE_INSTANTIATOR </item>
+      <item> VTK_WRAP_JAVA </item>
+      <item> VTK_WRAP_PYTHON </item>
+      <item> VTK_WRAP_TCL </item>
+      <item> WRAP_EXCLUDE_FILES </item>
+      <item> WRITE_FILE </item>
+    </list>
+
+    <list name="special_args">
+      <item> ABSOLUTE </item>
+      <item> ABSTRACT </item>
+      <item> ADDITIONAL_MAKE_CLEAN_FILES </item>
+      <item> ALL </item>
+      <item> AND </item>
+      <item> APPEND </item>
+      <item> ARCHIVE </item>
+      <item> ARGS </item>
+      <item> ASCII </item>
+      <item> BEFORE </item>
+      <item> CACHE </item>
+      <item> CACHE_VARIABLES </item>
+      <item> CLEAR </item>
+      <item> CMAKE_FLAGS </item>
+      <item> CODE </item>
+      <item> COMMAND </item>
+      <item> COMMANDS </item>
+      <item> COMMAND_NAME </item>
+      <item> COMMENT </item>
+      <item> COMPARE </item>
+      <item> COMPILE_FLAGS </item>
+      <item> COMPONENT </item>
+      <item> CONFIGURATIONS </item>
+      <item> COPYONLY </item>
+      <item> DEFINED </item>
+      <item> DEFINE_SYMBOL </item>
+      <item> DEPENDS </item>
+      <item> DESTINATION </item>
+      <item> DIRECTORY_PERMISSIONS </item>
+      <item> DOC </item>
+      <item> EQUAL </item>
+      <item> ESCAPE_QUOTES </item>
+      <item> EXCLUDE </item>
+      <item> EXCLUDE_FROM_ALL </item>
+      <item> EXISTS </item>
+      <item> EXPORT_MACRO </item>
+      <item> EXT </item>
+      <item> EXTRA_INCLUDE </item>
+      <item> FATAL_ERROR </item>
+      <item> FILE </item>
+      <item> FILES </item>
+      <item> FILE_PERMISSIONS </item>
+      <item> FORCE </item>
+      <item> FUNCTION </item>
+      <item> GENERATED </item>
+      <item> GLOB </item>
+      <item> GLOB_RECURSE </item>
+      <item> GREATER </item>
+      <item> GROUP_SIZE </item>
+      <item> HEADER_FILE_ONLY </item>
+      <item> HEADER_LOCATION </item>
+      <item> IMMEDIATE </item>
+      <item> INCLUDES </item>
+      <item> INCLUDE_DIRECTORIES </item>
+      <item> INCLUDE_INTERNALS </item>
+      <item> INCLUDE_REGULAR_EXPRESSION </item>
+      <item> INTERNAL </item>
+      <item> LESS </item>
+      <item> LIBRARY </item>
+      <item> LINK_DIRECTORIES </item>
+      <item> LINK_FLAGS </item>
+      <item> LOCATION </item>
+      <item> MACOSX_BUNDLE </item>
+      <item> MACROS </item>
+      <item> MAIN_DEPENDENCY </item>
+      <item> MAKE_DIRECTORY </item>
+      <item> MATCH </item>
+      <item> MATCHALL </item>
+      <item> MATCHES </item>
+      <item> MODULE </item>
+      <item> NAME </item>
+      <item> NAMES </item>
+      <item> NAME_WE </item>
+      <item> NOT </item>
+      <item> NOTEQUAL </item>
+      <item> NO_SYSTEM_PATH </item>
+      <item> OBJECT_DEPENDS </item>
+      <item> OPTIONAL </item>
+      <item> OR </item>
+      <item> OUTPUT </item>
+      <item> OUTPUT_VARIABLE </item>
+      <item> PATH </item>
+      <item> PATHS </item>
+      <item> PATTERN </item>
+      <item> PERMISSIONS </item>
+      <item> POST_BUILD </item>
+      <item> POST_INSTALL_SCRIPT </item>
+      <item> PREFIX </item>
+      <item> PREORDER </item>
+      <item> PRE_BUILD </item>
+      <item> PRE_INSTALL_SCRIPT </item>
+      <item> PRE_LINK </item>
+      <item> PROGRAM </item>
+      <item> PROGRAMS </item>
+      <item> PROGRAM_ARGS </item>
+      <item> PROPERTIES </item>
+      <item> QUIET </item>
+      <item> RANGE </item>
+      <item> READ </item>
+      <item> REGEX </item>
+      <item> REGULAR_EXPRESSION </item>
+      <item> RENAME </item>
+      <item> REPLACE </item>
+      <item> REQUIRED </item>
+      <item> RETURN_VALUE </item>
+      <item> RUNTIME </item>
+      <item> RUNTIME_DIRECTORY </item>
+      <item> SCRIPT </item>
+      <item> SEND_ERROR </item>
+      <item> SHARED </item>
+      <item> SOURCES </item>
+      <item> STATIC </item>
+      <item> STATUS </item>
+      <item> STREQUAL </item>
+      <item> STRGREATER </item>
+      <item> STRLESS </item>
+      <item> SUFFIX </item>
+      <item> TARGET </item>
+      <item> TARGETS </item>
+      <item> TOLOWER </item>
+      <item> TOUPPER </item>
+      <item> USE_SOURCE_PERMISSIONS </item>
+      <item> VAR </item>
+      <item> VARIABLES </item>
+      <item> VERSION </item>
+      <item> WIN32 </item>
+      <item> WRAP_EXCLUDE </item>
+      <item> WRITE </item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text">
+        <DetectSpaces/>
+        <keyword attribute="Commands" context="Function Args" String="commands" insensitive="true"/>
+        <RegExpr attribute="Region Marker" context="#stay" String="#\s*BEGIN.*$" beginRegion="block" firstNonSpace="true"/>
+        <RegExpr attribute="Region Marker" context="#stay" String="#\s*END.*$" endRegion="block" firstNonSpace="true"/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
+        <RegExpr attribute="Variable" context="#stay" String="\$\{\s*\w+\s*\}"/>
+        <RegExpr attribute="Macros" context="#stay" String="\w+\s*(?=\()"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Function Args">
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+        <keyword attribute="Special Args" context="#stay" String="special_args"/>
+        <RegExpr attribute="Comment" context="#stay" String="#.*$"/>
+        <RegExpr attribute="Variable" context="#stay" String="\$\{\s*\w+\s*\}"/>
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="Comment">
+        <IncludeRules context="##Alerts" />
+      </context>
+
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Special Args" defStyleNum="dsOthers" color="#000000" bold="0" italic="1"/>
+      <itemData name="Commands" defStyleNum="dsKeyword"/>
+      <itemData name="Macros"  defStyleNum="dsKeyword"/>
+      <itemData name="Variable" defStyleNum="dsDecVal"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="Region Marker" defStyleNum="dsRegionMarker"/>
+    </itemDatas>
+  </highlighting>
+
+  <general>
+    <comments>
+      <comment name="singleLine" start="#"/>
+    </comments>
+    <keywords casesensitive="1"/>
+  </general>
+</language>
diff --git a/xml/coldfusion.xml b/xml/coldfusion.xml
new file mode 100644
--- /dev/null
+++ b/xml/coldfusion.xml
@@ -0,0 +1,732 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="ColdFusion" version="1.04" kateversion="2.3" section="Markup" extensions="*.cfm;*.cfc;*.cfml;*.dbm" mimetype="text/x-coldfusion">
+
+	<highlighting>
+
+		<list name="Script Keywords">
+
+			<item> if </item>
+			<item> else </item>
+			<item> for </item>
+			<item> in </item>
+			<item> while </item>
+			<item> do </item>
+			<item> continue </item>
+			<item> break </item>
+			<item> with </item>
+			<item> try </item>
+			<item> catch </item>
+			<item> switch </item>
+			<item> case </item>
+			<item> new </item>
+			<item> var </item>
+			<item> function </item>
+			<item> return </item>
+			<item> this </item>
+			<item> delete </item>
+			<item> true </item>
+			<item> false </item>
+			<item> void </item>
+			<item> throw </item>
+			<item> typeof </item>
+			<item> const </item>
+			<item> default </item>
+
+		</list>
+
+		<list name="Script Objects">
+
+			<item> Anchor </item>
+			<item> Applet </item>
+			<item> Area </item>
+			<item> Array </item>
+			<item> Boolean </item>
+			<item> Button </item>
+			<item> Checkbox </item>
+			<item> Date </item>
+			<item> Document </item>
+			<item> Event </item>
+			<item> FileUpload </item>
+			<item> Form </item>
+			<item> Frame </item>
+			<item> Function </item>
+			<item> Hidden </item>
+			<item> History </item>
+			<item> Image </item>
+			<item> Layer </item>
+			<item> Linke </item>
+			<item> Location </item>
+			<item> Math </item>
+			<item> Navigator </item>
+			<item> Number </item>
+			<item> Object </item>
+			<item> Option </item>
+			<item> Password </item>
+			<item> Radio </item>
+			<item> RegExp </item>
+			<item> Reset </item>
+			<item> Screen </item>
+			<item> Select </item>
+			<item> String </item>
+			<item> Submit </item>
+			<item> Text </item>
+			<item> Textarea </item>
+			<item> Window </item>
+
+		</list>
+
+		<list name="Script Methods">
+
+			<item> abs </item>
+			<item> acos </item>
+			<item> alert </item>
+			<item> anchor </item>
+			<item> apply </item>
+			<item> asin </item>
+			<item> atan </item>
+			<item> atan2 </item>
+			<item> back </item>
+			<item> blur </item>
+			<item> call </item>
+			<item> captureEvents </item>
+			<item> ceil </item>
+			<item> charAt </item>
+			<item> charCodeAt </item>
+			<item> clearInterval </item>
+			<item> clearTimeout </item>
+			<item> click </item>
+			<item> close </item>
+			<item> compile </item>
+			<item> concat </item>
+			<item> confirm </item>
+			<item> cos </item>
+			<item> disableExternalCapture </item>
+			<item> enableExternalCapture </item>
+			<item> eval </item>
+			<item> exec </item>
+			<item> exp </item>
+			<item> find </item>
+			<item> floor </item>
+			<item> focus </item>
+			<item> forward </item>
+			<item> fromCharCode </item>
+			<item> getDate </item>
+			<item> getDay </item>
+			<item> getFullYear </item>
+			<item> getHours </item>
+			<item> getMilliseconds </item>
+			<item> getMinutes </item>
+			<item> getMonth </item>
+			<item> getSeconds </item>
+			<item> getSelection </item>
+			<item> getTime </item>
+			<item> getTimezoneOffset </item>
+			<item> getUTCDate </item>
+			<item> getUTCDay </item>
+			<item> getUTCFullYear </item>
+			<item> getUTCHours </item>
+			<item> getUTCMilliseconds </item>
+			<item> getUTCMinutes </item>
+			<item> getUTCMonth </item>
+			<item> getUTCSeconds </item>
+			<item> go </item>
+			<item> handleEvent </item>
+			<item> home </item>
+			<item> indexOf </item>
+			<item> javaEnabled </item>
+			<item> join </item>
+			<item> lastIndexOf </item>
+			<item> link </item>
+			<item> load </item>
+			<item> log </item>
+			<item> match </item>
+			<item> max </item>
+			<item> min </item>
+			<item> moveAbove </item>
+			<item> moveBelow </item>
+			<item> moveBy </item>
+			<item> moveTo </item>
+			<item> moveToAbsolute </item>
+			<item> open </item>
+			<item> parse </item>
+			<item> plugins.refresh </item>
+			<item> pop </item>
+			<item> pow </item>
+			<item> preference </item>
+			<item> print </item>
+			<item> prompt </item>
+			<item> push </item>
+			<item> random </item>
+			<item> releaseEvents </item>
+			<item> reload </item>
+			<item> replace </item>
+			<item> reset </item>
+			<item> resizeBy </item>
+			<item> resizeTo </item>
+			<item> reverse </item>
+			<item> round </item>
+			<item> routeEvent </item>
+			<item> scrollBy </item>
+			<item> scrollTo </item>
+			<item> search </item>
+			<item> select </item>
+			<item> setDate </item>
+			<item> setFullYear </item>
+			<item> setHours </item>
+			<item> setInterval </item>
+			<item> setMilliseconds </item>
+			<item> setMinutes </item>
+			<item> setMonth </item>
+			<item> setSeconds </item>
+			<item> setTime </item>
+			<item> setTimeout </item>
+			<item> setUTCDate </item>
+			<item> setUTCFullYear </item>
+			<item> setUTCHours </item>
+			<item> setUTCMilliseconds </item>
+			<item> setUTCMinutes </item>
+			<item> setUTCMonth </item>
+			<item> setUTCSeconds </item>
+			<item> shift </item>
+			<item> sin </item>
+			<item> slice </item>
+			<item> sort </item>
+			<item> splice </item>
+			<item> split </item>
+			<item> sqrt </item>
+			<item> stop </item>
+			<item> String formatting </item>
+			<item> submit </item>
+			<item> substr </item>
+			<item> substring </item>
+			<item> taintEnabled </item>
+			<item> tan </item>
+			<item> test </item>
+			<item> toLocaleString </item>
+			<item> toLowerCase </item>
+			<item> toSource </item>
+			<item> toString </item>
+			<item> toUpperCase </item>
+			<item> toUTCString </item>
+			<item> unshift </item>
+			<item> unwatch </item>
+			<item> UTC </item>
+			<item> valueOf </item>
+			<item> watch </item>
+			<item> write </item>
+			<item> writeln  </item>
+
+		</list>
+
+		<list name="CFSCRIPT Keywords">
+
+			<item> break </item>
+			<item> case </item>
+			<item> catch </item>
+			<item> continue </item>
+			<item> default </item>
+			<item> do </item>
+			<item> else </item>
+			<item> for </item>
+			<item> function </item>
+			<item> if </item>
+			<item> in </item>
+			<item> return </item>
+			<item> switch </item>
+			<item> try </item>
+			<item> var </item>
+			<item> while </item>
+
+		</list>
+
+		<list name="CFSCRIPT Functions">
+
+			<item> Abs </item>
+			<item> ACos </item>
+			<item> ArrayAppend </item>
+			<item> ArrayAvg </item>
+			<item> ArrayClear </item>
+			<item> ArrayDeleteAt </item>
+			<item> ArrayInsertAt </item>
+			<item> ArrayIsEmpty </item>
+			<item> ArrayLen </item>
+			<item> ArrayMax </item>
+			<item> ArrayMin </item>
+			<item> ArrayNew </item>
+			<item> ArrayPrepend </item>
+			<item> ArrayResize </item>
+			<item> ArraySet </item>
+			<item> ArraySort </item>
+			<item> ArraySum </item>
+			<item> ArraySwap </item>
+			<item> ArrayToList </item>
+			<item> Asc </item>
+			<item> ASin </item>
+			<item> Atn </item>
+			<item> BitAnd </item>
+			<item> BitMaskClear </item>
+			<item> BitMaskRead </item>
+			<item> BitMaskSet </item>
+			<item> BitNot </item>
+			<item> BitOr </item>
+			<item> BitSHLN </item>
+			<item> BitSHRN </item>
+			<item> BitXor </item>
+			<item> Ceiling </item>
+			<item> Chr </item>
+			<item> CJustify </item>
+			<item> Compare </item>
+			<item> CompareNoCase </item>
+			<item> Cos </item>
+			<item> CreateDate </item>
+			<item> CreateDateTime </item>
+			<item> CreateObject </item>
+			<item> CreateODBCDate </item>
+			<item> CreateODBCDateTime </item>
+			<item> CreateODBCTime </item>
+			<item> CreateTime </item>
+			<item> CreateTimeSpan </item>
+			<item> CreateUUID </item>
+			<item> DateAdd </item>
+			<item> DateCompare </item>
+			<item> DateConvert </item>
+			<item> DateDiff </item>
+			<item> DateFormat </item>
+			<item> DatePart </item>
+			<item> Day </item>
+			<item> DayOfWeek </item>
+			<item> DayOfWeekAsString </item>
+			<item> DayOfYear </item>
+			<item> DaysInMonth </item>
+			<item> DaysInYear </item>
+			<item> DE </item>
+			<item> DecimalFormat </item>
+			<item> DecrementValue </item>
+			<item> Decrypt </item>
+			<item> DeleteClientVariable </item>
+			<item> DirectoryExists </item>
+			<item> DollarFormat </item>
+			<item> Duplicate </item>
+			<item> Encrypt </item>
+			<item> Evaluate </item>
+			<item> Exp </item>
+			<item> ExpandPath </item>
+			<item> FileExists </item>
+			<item> Find </item>
+			<item> FindNoCase </item>
+			<item> FindOneOf </item>
+			<item> FirstDayOfMonth </item>
+			<item> Fix </item>
+			<item> FormatBaseN </item>
+			<item> GetAuthUser </item>
+			<item> GetBaseTagData </item>
+			<item> GetBaseTagList </item>
+			<item> GetBaseTemplatePath </item>
+			<item> GetClientVariablesList </item>
+			<item> GetCurrentTemplatePath </item>
+			<item> GetDirectoryFromPath </item>
+			<item> GetException </item>
+			<item> GetFileFromPath </item>
+			<item> GetFunctionList </item>
+			<item> GetHttpRequestData </item>
+			<item> GetHttpTimeString </item>
+			<item> GetK2ServerDocCount </item>
+			<item> GetK2ServerDocCountLimit </item>
+			<item> GetLocale </item>
+			<item> GetMetaData </item>
+			<item> GetMetricData </item>
+			<item> GetPageContext </item>
+			<item> GetProfileSections </item>
+			<item> GetProfileString </item>
+			<item> GetServiceSettings </item>
+			<item> GetTempDirectory </item>
+			<item> GetTempFile </item>
+			<item> GetTemplatePath </item>
+			<item> GetTickCount </item>
+			<item> GetTimeZoneInfo </item>
+			<item> GetToken </item>
+			<item> Hash </item>
+			<item> Hour </item>
+			<item> HTMLCodeFormat </item>
+			<item> HTMLEditFormat </item>
+			<item> IIf </item>
+			<item> IncrementValue </item>
+			<item> InputBaseN </item>
+			<item> Insert </item>
+			<item> Int </item>
+			<item> IsArray </item>
+			<item> IsBinary </item>
+			<item> IsBoolean </item>
+			<item> IsCustomFunction </item>
+			<item> IsDate </item>
+			<item> IsDebugMode </item>
+			<item> IsDefined </item>
+			<item> IsK2ServerABroker </item>
+			<item> IsK2ServerDocCountExceeded </item>
+			<item> IsK2ServerOnline </item>
+			<item> IsLeapYear </item>
+			<item> IsNumeric </item>
+			<item> IsNumericDate </item>
+			<item> IsObject </item>
+			<item> IsQuery </item>
+			<item> IsSimpleValue </item>
+			<item> IsStruct </item>
+			<item> IsUserInRole </item>
+			<item> IsWDDX </item>
+			<item> IsXmlDoc </item>
+			<item> IsXmlElement </item>
+			<item> IsXmlRoot </item>
+			<item> JavaCast </item>
+			<item> JSStringFormat </item>
+			<item> LCase </item>
+			<item> Left </item>
+			<item> Len </item>
+			<item> ListAppend </item>
+			<item> ListChangeDelims </item>
+			<item> ListContains </item>
+			<item> ListContainsNoCase </item>
+			<item> ListDeleteAt </item>
+			<item> ListFind </item>
+			<item> ListFindNoCase </item>
+			<item> ListFirst </item>
+			<item> ListGetAt </item>
+			<item> ListInsertAt </item>
+			<item> ListLast </item>
+			<item> ListLen </item>
+			<item> ListPrepend </item>
+			<item> ListQualify </item>
+			<item> ListRest </item>
+			<item> ListSetAt </item>
+			<item> ListSort </item>
+			<item> ListToArray </item>
+			<item> ListValueCount </item>
+			<item> ListValueCountNoCase </item>
+			<item> LJustify </item>
+			<item> Log </item>
+			<item> Log10 </item>
+			<item> LSCurrencyFormat </item>
+			<item> LSDateFormat </item>
+			<item> LSEuroCurrencyFormat </item>
+			<item> LSIsCurrency </item>
+			<item> LSIsDate </item>
+			<item> LSIsNumeric </item>
+			<item> LSNumberFormat </item>
+			<item> LSParseCurrency </item>
+			<item> LSParseDateTime </item>
+			<item> LSParseEuroCurrency </item>
+			<item> LSParseNumber </item>
+			<item> LSTimeFormat </item>
+			<item> LTrim </item>
+			<item> Max </item>
+			<item> Mid </item>
+			<item> Min </item>
+			<item> Minute </item>
+			<item> Month </item>
+			<item> MonthAsString </item>
+			<item> Now </item>
+			<item> NumberFormat </item>
+			<item> ParagraphFormat </item>
+			<item> ParameterExists </item>
+			<item> ParseDateTime </item>
+			<item> Pi </item>
+			<item> PreserveSingleQuotes </item>
+			<item> Quarter </item>
+			<item> QueryAddColumn </item>
+			<item> QueryAddRow </item>
+			<item> QueryNew </item>
+			<item> QuerySetCell </item>
+			<item> QuotedValueList </item>
+			<item> Rand </item>
+			<item> Randomize </item>
+			<item> RandRange </item>
+			<item> REFind </item>
+			<item> REFindNoCase </item>
+			<item> RemoveChars </item>
+			<item> RepeatString </item>
+			<item> Replace </item>
+			<item> ReplaceList </item>
+			<item> ReplaceNoCase </item>
+			<item> REReplace </item>
+			<item> REReplaceNoCase </item>
+			<item> Reverse </item>
+			<item> Right </item>
+			<item> RJustify </item>
+			<item> Round </item>
+			<item> RTrim </item>
+			<item> Second </item>
+			<item> SetEncoding </item>
+			<item> SetLocale </item>
+			<item> SetProfileString </item>
+			<item> SetVariable </item>
+			<item> Sgn </item>
+			<item> Sin </item>
+			<item> SpanExcluding </item>
+			<item> SpanIncluding </item>
+			<item> Sqr </item>
+			<item> StripCR </item>
+			<item> StructAppend </item>
+			<item> StructClear </item>
+			<item> StructCopy </item>
+			<item> StructCount </item>
+			<item> StructDelete </item>
+			<item> StructFind </item>
+			<item> StructFindKey </item>
+			<item> StructFindValue </item>
+			<item> StructGet </item>
+			<item> StructInsert </item>
+			<item> StructIsEmpty </item>
+			<item> StructKeyArray </item>
+			<item> StructKeyExists </item>
+			<item> StructKeyList </item>
+			<item> StructNew </item>
+			<item> StructSort </item>
+			<item> StructUpdate </item>
+			<item> Tan </item>
+			<item> TimeFormat </item>
+			<item> ToBase64 </item>
+			<item> ToBinary </item>
+			<item> ToString </item>
+			<item> Trim </item>
+			<item> UCase </item>
+			<item> URLDecode </item>
+			<item> URLEncodedFormat </item>
+			<item> URLSessionFormat </item>
+			<item> Val </item>
+			<item> ValueList </item>
+			<item> Week </item>
+			<item> WriteOutput </item>
+			<item> XmlChildPos </item>
+			<item> XmlElemNew </item>
+			<item> XmlFormat </item>
+			<item> XmlNew </item>
+			<item> XmlParse </item>
+			<item> XmlSearch </item>
+			<item> XmlTransform </item>
+			<item> Year </item>
+			<item> YesNoFormat </item>
+
+		</list>
+
+		<contexts>
+
+			<context attribute="Normal Text" lineEndContext="#stay" name="Normal Text">
+				<StringDetect attribute="CF Comment" context="ctxCF Comment" String="&lt;!---" />
+				<StringDetect attribute="HTML Comment" context="ctxHTML Comment" String="&lt;!--" />
+				<RegExpr attribute="Script Tags" context="ctxCFSCRIPT Tag" String="&lt;[cC][fF][sS][cC][rR][iI][pP][tT]" />
+				<RegExpr attribute="Script Tags" context="ctxSCRIPT Tag" String="&lt;[sS][cC][rR][iI][pP][tT]" />
+				<RegExpr attribute="Style Tags" context="ctxSTYLE Tag" String="&lt;[sS][tT][yY][lL][eE]" />
+				<DetectChar attribute="HTML Entities" context="ctxHTML Entities" char="&amp;" />
+				<RegExpr attribute="Custom Tags" context="ctxCustom Tag" String="&lt;\/?[cC][fF]_" />
+				<RegExpr attribute="CFX Tags" context="ctxCFX Tag" String="&lt;\/?[cC][fF][xX]_" />
+				<RegExpr attribute="CF Tags" context="ctxCF Tag" String="&lt;\/?[cC][fF]" />
+				<RegExpr attribute="Table Tags" context="ctxTable Tag" String="&lt;\/?([tT][aAhHbBfFrRdD])|([cC][aA][pP][tT])" />
+				<RegExpr attribute="Anchor Tags" context="ctxAnchor Tag" String="&lt;\/?[aA] " />
+				<RegExpr attribute="Image Tags" context="ctxImage Tag" String="&lt;\/?[iI][mM][gG] " />
+				<RegExpr attribute="Tags" context="ctxTag" String="&lt;!?\/?[a-zA-Z0-9_]+" />
+			</context>
+
+
+
+			<context name="ctxCFSCRIPT Tag" attribute="Script Tags" lineEndContext="#stay">
+				<DetectChar attribute="Script Tags" context="ctxCFSCRIPT Block" char="&gt;" />
+				<DetectChar attribute="Normal Text" context="#stay" char="=" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+			</context>
+
+			<context name="ctxSCRIPT Tag" attribute="Script Tags" lineEndContext="#stay">
+				<DetectChar attribute="Script Tags" context="ctxSCRIPT Block" char="&gt;" />
+				<DetectChar attribute="Normal Text" context="#stay" char="=" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+			</context>
+
+			<context name="ctxSTYLE Tag" attribute="Style Tags" lineEndContext="#stay">
+				<DetectChar attribute="Style Tags" context="ctxSTYLE Block" char="&gt;" />
+				<DetectChar attribute="Normal Text" context="#stay" char="=" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+			</context>
+
+
+
+			<context name="ctxTag" attribute="Tags" lineEndContext="#stay">
+				<DetectChar attribute="Tags" context="#pop" char="&gt;" />
+				<DetectChar attribute="Normal Text" context="#stay" char="=" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+			</context>
+
+			<context name="ctxTable Tag" attribute="Table Tags" lineEndContext="#stay">
+				<DetectChar attribute="Table Tags" context="#pop" char="&gt;" />
+				<DetectChar attribute="Normal Text" context="#stay" char="=" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+			</context>
+
+			<context name="ctxAnchor Tag" attribute="Anchor Tags" lineEndContext="#stay">
+				<DetectChar attribute="Anchor Tags" context="#pop" char="&gt;" />
+				<DetectChar attribute="Normal Text" context="#stay" char="=" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+			</context>
+
+			<context name="ctxImage Tag" attribute="Image Tags" lineEndContext="#stay">
+				<DetectChar attribute="Image Tags" context="#pop" char="&gt;" />
+				<DetectChar attribute="Normal Text" context="#stay" char="=" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+			</context>
+
+			<context name="ctxCF Tag" attribute="CF Tags" lineEndContext="#stay">
+				<DetectChar attribute="CF Tags" context="#pop" char="&gt;" />
+				<DetectChar attribute="Normal Text" context="#stay" char="=" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+			</context>
+
+			<context name="ctxCustom Tag" attribute="Custom Tags" lineEndContext="#stay">
+				<DetectChar attribute="Custom Tags" context="#pop" char="&gt;" />
+				<DetectChar attribute="Normal Text" context="#stay" char="=" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+			</context>
+
+			<context name="ctxCFX Tag" attribute="CFX Tags" lineEndContext="#stay">
+				<DetectChar attribute="CFX Tags" context="#pop" char="&gt;" />
+				<DetectChar attribute="Normal Text" context="#stay" char="=" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+			</context>
+
+
+
+			<context name="ctxHTML Comment" attribute="HTML Comment" lineEndContext="#stay">
+				<StringDetect attribute="CF Comment" context="ctxCF Comment" String="&lt;!---" />
+				<StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />
+			</context>
+
+			<context name="ctxCF Comment" attribute="CF Comment" lineEndContext="#stay">
+				<StringDetect attribute="CF Comment" context="#pop" String="---&gt;" />
+			</context>
+
+			<context name="ctxC Style Comment" attribute="Script Comment" lineEndContext="#stay">
+        		<Detect2Chars attribute="Script Comment" context="#pop" char="*" char1="/" />
+			</context>
+
+			<context name="ctxOne Line Comment" attribute="Script Comment" lineEndContext="#pop" />
+
+			<context name="ctxHTML Entities" attribute="HTML Entities" lineEndContext="#pop">
+				<DetectChar attribute="HTML Entities" context="#pop" char=";" />
+			</context>
+
+
+
+			<context name="ctxCFSCRIPT Block" attribute="Normal Text" lineEndContext="#stay">
+				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" />
+				<Detect2Chars attribute="Script Comment" context="ctxOne Line Comment" char="/" char1="/" />
+				<RegExpr attribute="Script Strings" context="#stay" String="&quot;[^&quot;]*&quot;" />
+				<RegExpr attribute="Script Strings" context="#stay" String="'[^']*'" />
+				<Int attribute="Script Numbers" context="#stay" />
+				<Float attribute="Script Numbers" context="#stay" />
+				<AnyChar attribute="Script Operators" context="#stay" String="[()[\]=+-*/]+" />
+				<AnyChar attribute="Brackets" context="#stay" String="{}" />
+
+				<keyword attribute="Script Keywords" context="#stay" String="CFSCRIPT Keywords" />
+				<keyword attribute="Script Functions" context="#stay" String="CFSCRIPT Functions" />
+				<RegExpr attribute="Script Tags" context="#pop#pop" String="&lt;/[cC][fF][sS][cC][rR][iI][pP][tT]&gt;" />
+			</context>
+
+
+
+			<context name="ctxSCRIPT Block" attribute="Normal Text" lineEndContext="#stay">
+				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" />
+				<Detect2Chars attribute="Script Comment" context="ctxOne Line Comment" char="/" char1="/" />
+				<RegExpr attribute="Script Strings" context="#stay" String="&quot;[^&quot;]*&quot;" />
+				<RegExpr attribute="Script Strings" context="#stay" String="'[^']*'" />
+				<Int attribute="Script Numbers" context="#stay" />
+				<Float attribute="Script Numbers" context="#stay" />
+				<AnyChar attribute="Script Operators" context="#stay" String="[()[\]=+-*/]+" />
+				<AnyChar attribute="Brackets" context="#stay" String="{}" />
+
+				<keyword attribute="Script Keywords" context="#stay" String="Script Keywords" />
+				<keyword attribute="Script Objects" context="#stay" String="Script Objects" />
+				<keyword attribute="Script Functions" context="#stay" String="Script Methods" />
+				<RegExpr attribute="Script Tags" context="#pop#pop" String="&lt;/[sS][cC][rR][iI][pP][tT]&gt;" />
+			</context>
+
+
+
+			<context name="ctxSTYLE Block" attribute="Style Selectors" lineEndContext="#stay">
+				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" />
+				<DetectChar attribute="Brackets" context="ctxStyle Properties" char="{" />
+				<RegExpr attribute="Style Tags" context="#pop#pop" String="&lt;/[sS][tT][yY][lL][eE]&gt;" />
+			</context>
+
+			<context name="ctxStyle Properties" attribute="Style Properties" lineEndContext="#stay">
+				<DetectChar attribute="Brackets" context="#pop" char="}" />
+				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" />
+				<DetectChar attribute="Normal Text" context="ctxStyle Values" char=":" />
+			</context>
+
+			<context name="ctxStyle Values" attribute="Style Values" lineEndContext="#pop">
+				<DetectChar attribute="Normal Text" context="#pop" char=";" />
+				<DetectChar attribute="Normal Text" context="#stay" char="," />
+				<Int attribute="Numbers" context="#stay" />
+				<Float attribute="Numbers" context="#stay" />
+				<RegExpr attribute="Numbers" context="#stay" String="#([0-9a-fA-F]{3})|([0-9a-fA-F]{6})" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
+				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+			</context>
+
+		</contexts>
+
+		<itemDatas>
+
+			<itemData name="Normal Text" defStyleNum="dsNormal"			color="#000000" selColor="#ffffff" bold="0" italic="0" />
+			<itemData name="Tags" defStyleNum="dsNormal"				color="#000080" selColor="#ffffff" bold="0" italic="0" />
+			<itemData name="Table Tags" defStyleNum="dsNormal"			color="#008080" selColor="#ffffff" bold="0" italic="0" />
+			<itemData name="Script Tags" defStyleNum="dsNormal"			color="#800000" selColor="#ffffff" bold="0" italic="0" />
+			<itemData name="Image Tags" defStyleNum="dsNormal"			color="#800080" selColor="#ffffff" bold="0" italic="0" />
+			<itemData name="Style Tags" defStyleNum="dsNormal"			color="#800080" selColor="#ffffff" bold="0" italic="0" />
+			<itemData name="Anchor Tags" defStyleNum="dsNormal"			color="#008000" selColor="#ffffff" bold="0" italic="0" />
+			<itemData name="Attribute Values" defStyleNum="dsNormal"	color="#0000ff" selColor="#ffffff" bold="0" italic="0" />
+			<itemData name="HTML Comment" defStyleNum="dsComment"		color="#008000" selColor="#999999" bold="0" italic="0" />
+			<itemData name="CF Comment" defStyleNum="dsComment"			color="#ff9900" selColor="#999999" bold="0" italic="0" />
+			<itemData name="Script Comment" defStyleNum="dsComment"		color="#ff9900" selColor="#999999" bold="0" italic="0" />
+			<itemData name="CF Tags" defStyleNum="dsNormal"				color="#800000" selColor="#ffffff" bold="0" italic="0" />
+			<itemData name="Custom Tags" defStyleNum="dsNormal"			color="#cc6666" selColor="#ffffff" bold="0" italic="0" />
+			<itemData name="CFX Tags" defStyleNum="dsNormal"			color="#008000" selColor="#ffffff" bold="0" italic="0" />
+			<itemData name="Numbers" defStyleNum="dsNormal"				color="#0000ff" selColor="#ffffff" bold="0" italic="0" />
+			<itemData name="HTML Entities" defStyleNum="dsNormal"		color="#000000" selColor="#ffffff" bold="1" italic="0" />
+			<itemData name="Style Selectors" defStyleNum="dsNormal"		color="#ff00ff" selColor="#ffffff" bold="0" italic="0" />
+			<itemData name="Style Properties" defStyleNum="dsNormal"	color="#000080" selColor="#ffffff" bold="0" italic="0" />
+			<itemData name="Style Values" defStyleNum="dsNormal"		color="#ff0000" selColor="#ffffff" bold="0" italic="0" />
+			<itemData name="Brackets" defStyleNum="dsNormal"			color="#000080" selColor="#ffffff" bold="1" italic="0" />
+			<itemData name="Script Numbers" defStyleNum="dsNormal"		color="#ff00ff" selColor="#ffffff" bold="0" italic="0" />
+			<itemData name="Script Strings" defStyleNum="dsNormal"		color="#008080" selColor="#ffffff" bold="0" italic="0" />
+			<itemData name="Script Operators" defStyleNum="dsNormal"	color="#0000ff" selColor="#ffffff" bold="0" italic="0" />
+			<itemData name="Script Keywords" defStyleNum="dsNormal"		color="#0000cc" selColor="#ffffff" bold="1" italic="0" />
+			<itemData name="Script Functions" defStyleNum="dsFunction"	bold="1" />
+			<itemData name="Script Objects" defStyleNum="dsNormal"		color="#0000cc" selColor="#ffffff" bold="1" italic="0" />
+
+		</itemDatas>
+
+	</highlighting>
+
+	<general>
+
+		<comments>
+
+			<comment name="multiLine" start="&lt;!--" end="--&gt;" />
+			<comment name="multiLine" start="/*" end="*/" />
+			<comment name="singleLine" start="//" />
+
+		</comments>
+
+		<keywords casesensitive="0" weakDeliminator="-" />
+
+	</general>
+
+</language>
diff --git a/xml/commonlisp.xml b/xml/commonlisp.xml
new file mode 100644
--- /dev/null
+++ b/xml/commonlisp.xml
@@ -0,0 +1,1173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!--
+  This file is part of KDE's kate project.
+  
+  copyright   : (C) 2004 by Dominik Haumann
+  email       : dhdev at gmx dot de
+
+  last change : 2004-03-16
+
+ **********************************************************************
+ * This library is free software; you can redistribute it and/or      *
+ * modify it under the terms of the GNU Library General Public        *
+ * License as published by the Free Software Foundation; either       *
+ * version 2 of the License, or (at your option) any later version.   *
+ *                                                                    *
+ * This library is distributed in the hope that it will be useful,    *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of     *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  *
+ * Library General Public License for more details.                   *
+ *                                                                    *
+ * You should have received a copy of the GNU Library General Public  *
+ * License along with this library; if not, write to the              *
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,       *
+ * Boston, MA  02110-1301, USA.                                       *
+ **********************************************************************
+ -->
+<language version="1.02" kateversion="2.3" name="Common Lisp" section="Scripts" extensions="*.lisp;*.cl;*.lsp" mimetype="" author="Dominik Haumann (dhdev@gmx.de)" license="LGPL">
+  <highlighting>
+    <list name="symbols">
+      <item> &lt; </item>
+      <item> &lt;= </item>
+      <item> = </item>
+      <item> &gt; </item>
+      <item> &gt;= </item>
+      <item> =&gt; </item>
+      <item> - </item> 
+      <item> / </item> 
+      <item> /= </item> 
+      <item> // </item> 
+      <item> /// </item> 
+      <item> * </item> 
+      <item> ** </item> 
+      <item> *** </item> 
+      <item> + </item> 
+      <item> ++ </item> 
+      <item> +++ </item> 
+      <item> 1- </item> 
+      <item> 1+ </item> 
+    </list>
+    <list name="definitions">
+      <item> defclass </item> 
+      <item> defconstant </item> 
+      <item> defgeneric </item> 
+      <item> define-compiler-macro </item> 
+      <item> define-condition </item> 
+      <item> define-method-combination </item> 
+      <item> define-modify-macro </item> 
+      <item> define-setf-expander </item> 
+      <item> define-setf-method </item> 
+      <item> define-symbol-macro </item> 
+      <item> defmacro </item> 
+      <item> defmethod </item> 
+      <item> defpackage </item> 
+      <item> defparameter </item> 
+      <item> defsetf </item> 
+      <item> deftype </item> 
+      <item> defvar </item> 
+      <item> defun </item> 
+      <item> defstruct </item> 
+    </list>
+    <list name="keywords">
+      <item> abort </item> 
+      <item> abs </item> 
+      <item> access </item> 
+      <item> acons </item> 
+      <item> acos </item> 
+      <item> acosh </item> 
+      <item> add-method </item> 
+      <item> adjoin </item> 
+      <item> adjustable-array-p </item> 
+      <item> adjust-array </item> 
+      <item> allocate-instance </item> 
+      <item> alpha-char-p </item> 
+      <item> alphanumericp </item> 
+      <item> and </item> 
+      <item> append </item> 
+      <item> apply </item> 
+      <item> applyhook </item> 
+      <item> apropos </item> 
+      <item> apropos-list </item> 
+      <item> aref </item> 
+      <item> arithmetic-error </item> 
+      <item> arithmetic-error-operands </item> 
+      <item> arithmetic-error-operation </item> 
+      <item> array </item> 
+      <item> array-dimension </item> 
+      <item> array-dimension-limit </item> 
+      <item> array-dimensions </item> 
+      <item> array-displacement </item> 
+      <item> array-element-type </item> 
+      <item> array-has-fill-pointer-p </item> 
+      <item> array-in-bounds-p </item> 
+      <item> arrayp </item> 
+      <item> array-rank </item> 
+      <item> array-rank-limit </item> 
+      <item> array-row-major-index </item> 
+      <item> array-total-size </item> 
+      <item> array-total-size-limit </item> 
+      <item> ash </item> 
+      <item> asin </item> 
+      <item> asinh </item> 
+      <item> assert </item> 
+      <item> assoc </item> 
+      <item> assoc-if </item> 
+      <item> assoc-if-not </item> 
+      <item> atan </item> 
+      <item> atanh </item> 
+      <item> atom </item> 
+      <item> base-char </item> 
+      <item> base-string </item> 
+      <item> bignum </item> 
+      <item> bit </item> 
+      <item> bit-and </item> 
+      <item> bit-andc1 </item> 
+      <item> bit-andc2 </item> 
+      <item> bit-eqv </item> 
+      <item> bit-ior </item> 
+      <item> bit-nand </item> 
+      <item> bit-nor </item> 
+      <item> bit-not </item> 
+      <item> bit-orc1 </item> 
+      <item> bit-orc2 </item> 
+      <item> bit-vector </item> 
+      <item> bit-vector-p </item> 
+      <item> bit-xor </item> 
+      <item> block </item> 
+      <item> boole </item> 
+      <item> boole-1 </item> 
+      <item> boole-2 </item> 
+      <item> boolean </item> 
+      <item> boole-and </item> 
+      <item> boole-andc1 </item> 
+      <item> boole-andc2 </item> 
+      <item> boole-c1 </item> 
+      <item> boole-c2 </item> 
+      <item> boole-clr </item> 
+      <item> boole-eqv </item> 
+      <item> boole-ior </item> 
+      <item> boole-nand </item> 
+      <item> boole-nor </item> 
+      <item> boole-orc1 </item> 
+      <item> boole-orc2 </item> 
+      <item> boole-set </item> 
+      <item> boole-xor </item> 
+      <item> both-case-p </item> 
+      <item> boundp </item> 
+      <item> break </item> 
+      <item> broadcast-stream </item> 
+      <item> broadcast-stream-streams </item> 
+      <item> built-in-class </item> 
+      <item> butlast </item> 
+      <item> byte </item> 
+      <item> byte-position </item> 
+      <item> byte-size </item> 
+      <item> call-arguments-limit </item> 
+      <item> call-method </item> 
+      <item> call-next-method </item> 
+      <item> capitalize </item> 
+      <item> car </item> 
+      <item> case </item> 
+      <item> catch </item> 
+      <item> ccase </item> 
+      <item> cdr </item> 
+      <item> ceiling </item> 
+      <item> cell-error </item> 
+      <item> cell-error-name </item> 
+      <item> cerror </item> 
+      <item> change-class </item> 
+      <item> char </item> 
+      <item> char&lt; </item> 
+      <item> char&lt;= </item> 
+      <item> char= </item> 
+      <item> char&gt; </item> 
+      <item> char&gt;= </item> 
+      <item> char/= </item> 
+      <item> character </item> 
+      <item> characterp </item> 
+      <item> char-bit </item> 
+      <item> char-bits </item> 
+      <item> char-bits-limit </item> 
+      <item> char-code </item> 
+      <item> char-code-limit </item> 
+      <item> char-control-bit </item> 
+      <item> char-downcase </item> 
+      <item> char-equal </item> 
+      <item> char-font </item> 
+      <item> char-font-limit </item> 
+      <item> char-greaterp </item> 
+      <item> char-hyper-bit </item> 
+      <item> char-int </item> 
+      <item> char-lessp </item> 
+      <item> char-meta-bit </item> 
+      <item> char-name </item> 
+      <item> char-not-equal </item> 
+      <item> char-not-greaterp </item> 
+      <item> char-not-lessp </item> 
+      <item> char-super-bit </item> 
+      <item> char-upcase </item> 
+      <item> check-type </item> 
+      <item> cis </item> 
+      <item> class </item> 
+      <item> class-name </item> 
+      <item> class-of </item> 
+      <item> clear-input </item> 
+      <item> clear-output </item> 
+      <item> close </item> 
+      <item> clrhash </item> 
+      <item> code-char </item> 
+      <item> coerce </item> 
+      <item> commonp </item> 
+      <item> compilation-speed </item> 
+      <item> compile </item> 
+      <item> compiled-function </item> 
+      <item> compiled-function-p </item> 
+      <item> compile-file </item> 
+      <item> compile-file-pathname </item> 
+      <item> compiler-let </item> 
+      <item> compiler-macro </item> 
+      <item> compiler-macro-function </item> 
+      <item> complement </item> 
+      <item> complex </item> 
+      <item> complexp </item> 
+      <item> compute-applicable-methods </item> 
+      <item> compute-restarts </item> 
+      <item> concatenate </item> 
+      <item> concatenated-stream </item> 
+      <item> concatenated-stream-streams </item> 
+      <item> cond </item> 
+      <item> condition </item> 
+      <item> conjugate </item> 
+      <item> cons </item> 
+      <item> consp </item> 
+      <item> constantly </item> 
+      <item> constantp </item> 
+      <item> continue </item> 
+      <item> control-error </item> 
+      <item> copy-alist </item> 
+      <item> copy-list </item> 
+      <item> copy-pprint-dispatch </item> 
+      <item> copy-readtable </item> 
+      <item> copy-seq </item> 
+      <item> copy-structure </item> 
+      <item> copy-symbol </item> 
+      <item> copy-tree </item> 
+      <item> cos </item> 
+      <item> cosh </item> 
+      <item> count </item> 
+      <item> count-if </item> 
+      <item> count-if-not </item> 
+      <item> ctypecase </item> 
+      <item> debug </item> 
+      <item> decf </item> 
+      <item> declaim </item> 
+      <item> declaration </item> 
+      <item> declare </item> 
+      <item> decode-float </item> 
+      <item> decode-universal-time </item> 
+      <item> delete </item> 
+      <item> delete-duplicates </item> 
+      <item> delete-file </item> 
+      <item> delete-if </item> 
+      <item> delete-if-not </item> 
+      <item> delete-package </item> 
+      <item> denominator </item> 
+      <item> deposit-field </item> 
+      <item> describe </item> 
+      <item> describe-object </item> 
+      <item> destructuring-bind </item> 
+      <item> digit-char </item> 
+      <item> digit-char-p </item> 
+      <item> directory </item> 
+      <item> directory-namestring </item> 
+      <item> disassemble </item> 
+      <item> division-by-zero </item> 
+      <item> do </item> 
+      <item> do* </item> 
+      <item> do-all-symbols </item> 
+      <item> documentation </item> 
+      <item> do-exeternal-symbols </item> 
+      <item> do-external-symbols </item> 
+      <item> dolist </item> 
+      <item> do-symbols </item> 
+      <item> dotimes </item> 
+      <item> double-float </item> 
+      <item> double-float-epsilon </item> 
+      <item> double-float-negative-epsilon </item> 
+      <item> dpb </item> 
+      <item> dribble </item> 
+      <item> dynamic-extent </item> 
+      <item> ecase </item> 
+      <item> echo-stream </item> 
+      <item> echo-stream-input-stream </item> 
+      <item> echo-stream-output-stream </item> 
+      <item> ed </item> 
+      <item> eighth </item> 
+      <item> elt </item> 
+      <item> encode-universal-time </item> 
+      <item> end-of-file </item> 
+      <item> endp </item> 
+      <item> enough-namestring </item> 
+      <item> ensure-directories-exist </item> 
+      <item> ensure-generic-function </item> 
+      <item> eq </item> 
+      <item> eql </item> 
+      <item> equal </item> 
+      <item> equalp </item> 
+      <item> error </item> 
+      <item> etypecase </item> 
+      <item> eval </item> 
+      <item> evalhook </item> 
+      <item> eval-when </item> 
+      <item> evenp </item> 
+      <item> every </item> 
+      <item> exp </item> 
+      <item> export </item> 
+      <item> expt </item> 
+      <item> extended-char </item> 
+      <item> fboundp </item> 
+      <item> fceiling </item> 
+      <item> fdefinition </item> 
+      <item> ffloor </item> 
+      <item> fifth </item> 
+      <item> file-author </item> 
+      <item> file-error </item> 
+      <item> file-error-pathname </item> 
+      <item> file-length </item> 
+      <item> file-namestring </item> 
+      <item> file-position </item> 
+      <item> file-stream </item> 
+      <item> file-string-length </item> 
+      <item> file-write-date </item> 
+      <item> fill </item> 
+      <item> fill-pointer </item> 
+      <item> find </item> 
+      <item> find-all-symbols </item> 
+      <item> find-class </item> 
+      <item> find-if </item> 
+      <item> find-if-not </item> 
+      <item> find-method </item> 
+      <item> find-package </item> 
+      <item> find-restart </item> 
+      <item> find-symbol </item> 
+      <item> finish-output </item> 
+      <item> first </item> 
+      <item> fixnum </item> 
+      <item> flet </item> 
+      <item> float </item> 
+      <item> float-digits </item> 
+      <item> floating-point-inexact </item> 
+      <item> floating-point-invalid-operation </item> 
+      <item> floating-point-overflow </item> 
+      <item> floating-point-underflow </item> 
+      <item> floatp </item> 
+      <item> float-precision </item> 
+      <item> float-radix </item> 
+      <item> float-sign </item> 
+      <item> floor </item> 
+      <item> fmakunbound </item> 
+      <item> force-output </item> 
+      <item> format </item> 
+      <item> formatter </item> 
+      <item> fourth </item> 
+      <item> fresh-line </item> 
+      <item> fround </item> 
+      <item> ftruncate </item> 
+      <item> ftype </item> 
+      <item> funcall </item> 
+      <item> function </item> 
+      <item> function-keywords </item> 
+      <item> function-lambda-expression </item> 
+      <item> functionp </item> 
+      <item> gbitp </item> 
+      <item> gcd </item> 
+      <item> generic-function </item> 
+      <item> gensym </item> 
+      <item> gentemp </item> 
+      <item> get </item> 
+      <item> get-decoded-time </item> 
+      <item> get-dispatch-macro-character </item> 
+      <item> getf </item> 
+      <item> gethash </item> 
+      <item> get-internal-real-time </item> 
+      <item> get-internal-run-time </item> 
+      <item> get-macro-character </item> 
+      <item> get-output-stream-string </item> 
+      <item> get-properties </item> 
+      <item> get-setf-expansion </item> 
+      <item> get-setf-method </item> 
+      <item> get-universal-time </item> 
+      <item> go </item> 
+      <item> graphic-char-p </item> 
+      <item> handler-bind </item> 
+      <item> handler-case </item> 
+      <item> hash-table </item> 
+      <item> hash-table-count </item> 
+      <item> hash-table-p </item> 
+      <item> hash-table-rehash-size </item> 
+      <item> hash-table-rehash-threshold </item> 
+      <item> hash-table-size </item> 
+      <item> hash-table-test </item> 
+      <item> host-namestring </item> 
+      <item> identity </item> 
+      <item> if </item> 
+      <item> if-exists </item> 
+      <item> ignorable </item> 
+      <item> ignore </item> 
+      <item> ignore-errors </item> 
+      <item> imagpart </item> 
+      <item> import </item> 
+      <item> incf </item> 
+      <item> initialize-instance </item> 
+      <item> inline </item> 
+      <item> in-package </item> 
+      <item> in-package </item> 
+      <item> input-stream-p </item> 
+      <item> inspect </item> 
+      <item> int-char </item> 
+      <item> integer </item> 
+      <item> integer-decode-float </item> 
+      <item> integer-length </item> 
+      <item> integerp </item> 
+      <item> interactive-stream-p </item> 
+      <item> intern </item> 
+      <item> internal-time-units-per-second </item> 
+      <item> intersection </item> 
+      <item> invalid-method-error </item> 
+      <item> invoke-debugger </item> 
+      <item> invoke-restart </item> 
+      <item> invoke-restart-interactively </item> 
+      <item> isqrt </item> 
+      <item> keyword </item> 
+      <item> keywordp </item> 
+      <item> labels </item> 
+      <item> lambda </item> 
+      <item> lambda-list-keywords </item> 
+      <item> lambda-parameters-limit </item> 
+      <item> last </item> 
+      <item> lcm </item> 
+      <item> ldb </item> 
+      <item> ldb-test </item> 
+      <item> ldiff </item> 
+      <item> least-negative-double-float </item> 
+      <item> least-negative-long-float </item> 
+      <item> least-negative-normalized-double-float </item> 
+      <item> least-negative-normalized-long-float </item> 
+      <item> least-negative-normalized-short-float </item> 
+      <item> least-negative-normalized-single-float </item> 
+      <item> least-negative-short-float </item> 
+      <item> least-negative-single-float </item> 
+      <item> least-positive-double-float </item> 
+      <item> least-positive-long-float </item> 
+      <item> least-positive-normalized-double-float </item> 
+      <item> least-positive-normalized-long-float </item> 
+      <item> least-positive-normalized-short-float </item> 
+      <item> least-positive-normalized-single-float </item> 
+      <item> least-positive-short-float </item> 
+      <item> least-positive-single-float </item> 
+      <item> length </item> 
+      <item> let </item> 
+      <item> let* </item> 
+      <item> lisp </item> 
+      <item> lisp-implementation-type </item> 
+      <item> lisp-implementation-version </item> 
+      <item> list </item> 
+      <item> list* </item> 
+      <item> list-all-packages </item> 
+      <item> listen </item> 
+      <item> list-length </item> 
+      <item> listp </item> 
+      <item> load </item> 
+      <item> load-logical-pathname-translations </item> 
+      <item> load-time-value </item> 
+      <item> locally </item> 
+      <item> log </item> 
+      <item> logand </item> 
+      <item> logandc1 </item> 
+      <item> logandc2 </item> 
+      <item> logbitp </item> 
+      <item> logcount </item> 
+      <item> logeqv </item> 
+      <item> logical-pathname </item> 
+      <item> logical-pathname-translations </item> 
+      <item> logior </item> 
+      <item> lognand </item> 
+      <item> lognor </item> 
+      <item> lognot </item> 
+      <item> logorc1 </item> 
+      <item> logorc2 </item> 
+      <item> logtest </item> 
+      <item> logxor </item> 
+      <item> long-float </item> 
+      <item> long-float-epsilon </item> 
+      <item> long-float-negative-epsilon </item> 
+      <item> long-site-name </item> 
+      <item> loop </item> 
+      <item> loop-finish </item> 
+      <item> lower-case-p </item> 
+      <item> machine-instance </item> 
+      <item> machine-type </item> 
+      <item> machine-version </item> 
+      <item> macroexpand </item> 
+      <item> macroexpand-1 </item> 
+      <item> macroexpand-l </item> 
+      <item> macro-function </item> 
+      <item> macrolet </item> 
+      <item> make-array </item> 
+      <item> make-array </item> 
+      <item> make-broadcast-stream </item> 
+      <item> make-char </item> 
+      <item> make-concatenated-stream </item> 
+      <item> make-condition </item> 
+      <item> make-dispatch-macro-character </item> 
+      <item> make-echo-stream </item> 
+      <item> make-hash-table </item> 
+      <item> make-instance </item> 
+      <item> make-instances-obsolete </item> 
+      <item> make-list </item> 
+      <item> make-load-form </item> 
+      <item> make-load-form-saving-slots </item> 
+      <item> make-method </item> 
+      <item> make-package </item> 
+      <item> make-pathname </item> 
+      <item> make-random-state </item> 
+      <item> make-sequence </item> 
+      <item> make-string </item> 
+      <item> make-string-input-stream </item> 
+      <item> make-string-output-stream </item> 
+      <item> make-symbol </item> 
+      <item> make-synonym-stream </item> 
+      <item> make-two-way-stream </item> 
+      <item> makunbound </item> 
+      <item> map </item> 
+      <item> mapc </item> 
+      <item> mapcan </item> 
+      <item> mapcar </item> 
+      <item> mapcon </item> 
+      <item> maphash </item> 
+      <item> map-into </item> 
+      <item> mapl </item> 
+      <item> maplist </item> 
+      <item> mask-field </item> 
+      <item> max </item> 
+      <item> member </item> 
+      <item> member-if </item> 
+      <item> member-if-not </item> 
+      <item> merge </item> 
+      <item> merge-pathname </item> 
+      <item> merge-pathnames </item> 
+      <item> method </item> 
+      <item> method-combination </item> 
+      <item> method-combination-error </item> 
+      <item> method-qualifiers </item> 
+      <item> min </item> 
+      <item> minusp </item> 
+      <item> mismatch </item> 
+      <item> mod </item> 
+      <item> most-negative-double-float </item> 
+      <item> most-negative-fixnum </item> 
+      <item> most-negative-long-float </item> 
+      <item> most-negative-short-float </item> 
+      <item> most-negative-single-float </item> 
+      <item> most-positive-double-float </item> 
+      <item> most-positive-fixnum </item> 
+      <item> most-positive-long-float </item> 
+      <item> most-positive-short-float </item> 
+      <item> most-positive-single-float </item> 
+      <item> muffle-warning </item> 
+      <item> multiple-value-bind </item> 
+      <item> multiple-value-call </item> 
+      <item> multiple-value-list </item> 
+      <item> multiple-value-prog1 </item> 
+      <item> multiple-value-seteq </item> 
+      <item> multiple-value-setq </item> 
+      <item> multiple-values-limit </item> 
+      <item> name-char </item> 
+      <item> namestring </item> 
+      <item> nbutlast </item> 
+      <item> nconc </item> 
+      <item> next-method-p </item> 
+      <item> nil </item> 
+      <item> nintersection </item> 
+      <item> ninth </item> 
+      <item> no-applicable-method </item> 
+      <item> no-next-method </item> 
+      <item> not </item> 
+      <item> notany </item> 
+      <item> notevery </item> 
+      <item> notinline </item> 
+      <item> nreconc </item> 
+      <item> nreverse </item> 
+      <item> nset-difference </item> 
+      <item> nset-exclusive-or </item> 
+      <item> nstring </item> 
+      <item> nstring-capitalize </item> 
+      <item> nstring-downcase </item> 
+      <item> nstring-upcase </item> 
+      <item> nsublis </item> 
+      <item> nsubst </item> 
+      <item> nsubst-if </item> 
+      <item> nsubst-if-not </item> 
+      <item> nsubstitute </item> 
+      <item> nsubstitute-if </item> 
+      <item> nsubstitute-if-not </item> 
+      <item> nth </item> 
+      <item> nthcdr </item> 
+      <item> nth-value </item> 
+      <item> null </item> 
+      <item> number </item> 
+      <item> numberp </item> 
+      <item> numerator </item> 
+      <item> nunion </item> 
+      <item> oddp </item> 
+      <item> open </item> 
+      <item> open-stream-p </item> 
+      <item> optimize </item> 
+      <item> or </item> 
+      <item> otherwise </item> 
+      <item> output-stream-p </item> 
+      <item> package </item> 
+      <item> package-error </item> 
+      <item> package-error-package </item> 
+      <item> package-name </item> 
+      <item> package-nicknames </item> 
+      <item> packagep </item> 
+      <item> package-shadowing-symbols </item> 
+      <item> package-used-by-list </item> 
+      <item> package-use-list </item> 
+      <item> pairlis </item> 
+      <item> parse-error </item> 
+      <item> parse-integer </item> 
+      <item> parse-namestring </item> 
+      <item> pathname </item> 
+      <item> pathname-device </item> 
+      <item> pathname-directory </item> 
+      <item> pathname-host </item> 
+      <item> pathname-match-p </item> 
+      <item> pathname-name </item> 
+      <item> pathnamep </item> 
+      <item> pathname-type </item> 
+      <item> pathname-version </item> 
+      <item> peek-char </item> 
+      <item> phase </item> 
+      <item> pi </item> 
+      <item> plusp </item> 
+      <item> pop </item> 
+      <item> position </item> 
+      <item> position-if </item> 
+      <item> position-if-not </item> 
+      <item> pprint </item> 
+      <item> pprint-dispatch </item> 
+      <item> pprint-exit-if-list-exhausted </item> 
+      <item> pprint-fill </item> 
+      <item> pprint-indent </item> 
+      <item> pprint-linear </item> 
+      <item> pprint-logical-block </item> 
+      <item> pprint-newline </item> 
+      <item> pprint-pop </item> 
+      <item> pprint-tab </item> 
+      <item> pprint-tabular </item> 
+      <item> prin1 </item> 
+      <item> prin1-to-string </item> 
+      <item> princ </item> 
+      <item> princ-to-string </item> 
+      <item> print </item> 
+      <item> print-not-readable </item> 
+      <item> print-not-readable-object </item> 
+      <item> print-object </item> 
+      <item> print-unreadable-object </item> 
+      <item> probe-file </item> 
+      <item> proclaim </item> 
+      <item> prog </item> 
+      <item> prog* </item> 
+      <item> prog1 </item> 
+      <item> prog2 </item> 
+      <item> progn </item> 
+      <item> program-error </item> 
+      <item> progv </item> 
+      <item> provide </item> 
+      <item> psetf </item> 
+      <item> psetq </item> 
+      <item> push </item> 
+      <item> pushnew </item> 
+      <item> putprop </item> 
+      <item> quote </item> 
+      <item> random </item> 
+      <item> random-state </item> 
+      <item> random-state-p </item> 
+      <item> rassoc </item> 
+      <item> rassoc-if </item> 
+      <item> rassoc-if-not </item> 
+      <item> ratio </item> 
+      <item> rational </item> 
+      <item> rationalize </item> 
+      <item> rationalp </item> 
+      <item> read </item> 
+      <item> read-byte </item> 
+      <item> read-char </item> 
+      <item> read-char-no-hang </item> 
+      <item> read-delimited-list </item> 
+      <item> reader-error </item> 
+      <item> read-eval-print </item> 
+      <item> read-from-string </item> 
+      <item> read-line </item> 
+      <item> read-preserving-whitespace </item> 
+      <item> read-sequence </item> 
+      <item> readtable </item> 
+      <item> readtable-case </item> 
+      <item> readtablep </item> 
+      <item> real </item> 
+      <item> realp </item> 
+      <item> realpart </item> 
+      <item> reduce </item> 
+      <item> reinitialize-instance </item> 
+      <item> rem </item> 
+      <item> remf </item> 
+      <item> remhash </item> 
+      <item> remove </item> 
+      <item> remove-duplicates </item> 
+      <item> remove-if </item> 
+      <item> remove-if-not </item> 
+      <item> remove-method </item> 
+      <item> remprop </item> 
+      <item> rename-file </item> 
+      <item> rename-package </item> 
+      <item> replace </item> 
+      <item> require </item> 
+      <item> rest </item> 
+      <item> restart </item> 
+      <item> restart-bind </item> 
+      <item> restart-case </item> 
+      <item> restart-name </item> 
+      <item> return </item> 
+      <item> return-from </item> 
+      <item> revappend </item> 
+      <item> reverse </item> 
+      <item> room </item> 
+      <item> rotatef </item> 
+      <item> round </item> 
+      <item> row-major-aref </item> 
+      <item> rplaca </item> 
+      <item> rplacd </item> 
+      <item> safety </item> 
+      <item> satisfies </item> 
+      <item> sbit </item> 
+      <item> scale-float </item> 
+      <item> schar </item> 
+      <item> search </item> 
+      <item> second </item> 
+      <item> sequence </item> 
+      <item> serious-condition </item> 
+      <item> set </item> 
+      <item> set-char-bit </item> 
+      <item> set-difference </item> 
+      <item> set-dispatch-macro-character </item> 
+      <item> set-exclusive-or </item> 
+      <item> setf </item> 
+      <item> set-macro-character </item> 
+      <item> set-pprint-dispatch </item> 
+      <item> setq </item> 
+      <item> set-syntax-from-char </item> 
+      <item> seventh </item> 
+      <item> shadow </item> 
+      <item> shadowing-import </item> 
+      <item> shared-initialize </item> 
+      <item> shiftf </item> 
+      <item> short-float </item> 
+      <item> short-float-epsilon </item> 
+      <item> short-float-negative-epsilon </item> 
+      <item> short-site-name </item> 
+      <item> signal </item> 
+      <item> signed-byte </item> 
+      <item> signum </item> 
+      <item> simle-condition </item> 
+      <item> simple-array </item> 
+      <item> simple-base-string </item> 
+      <item> simple-bit-vector </item> 
+      <item> simple-bit-vector-p </item> 
+      <item> simple-condition-format-arguments </item> 
+      <item> simple-condition-format-control </item> 
+      <item> simple-error </item> 
+      <item> simple-string </item> 
+      <item> simple-string-p </item> 
+      <item> simple-type-error </item> 
+      <item> simple-vector </item> 
+      <item> simple-vector-p </item> 
+      <item> simple-warning </item> 
+      <item> sin </item> 
+      <item> single-flaot-epsilon </item> 
+      <item> single-float </item> 
+      <item> single-float-epsilon </item> 
+      <item> single-float-negative-epsilon </item> 
+      <item> sinh </item> 
+      <item> sixth </item> 
+      <item> sleep </item> 
+      <item> slot-boundp </item> 
+      <item> slot-exists-p </item> 
+      <item> slot-makunbound </item> 
+      <item> slot-missing </item> 
+      <item> slot-unbound </item> 
+      <item> slot-value </item> 
+      <item> software-type </item> 
+      <item> software-version </item> 
+      <item> some </item> 
+      <item> sort </item> 
+      <item> space </item> 
+      <item> special </item> 
+      <item> special-form-p </item> 
+      <item> special-operator-p </item> 
+      <item> speed </item> 
+      <item> sqrt </item> 
+      <item> stable-sort </item> 
+      <item> standard </item> 
+      <item> standard-char </item> 
+      <item> standard-char-p </item> 
+      <item> standard-class </item> 
+      <item> standard-generic-function </item> 
+      <item> standard-method </item> 
+      <item> standard-object </item> 
+      <item> step </item> 
+      <item> storage-condition </item> 
+      <item> store-value </item> 
+      <item> stream </item> 
+      <item> stream-element-type </item> 
+      <item> stream-error </item> 
+      <item> stream-error-stream </item> 
+      <item> stream-external-format </item> 
+      <item> streamp </item> 
+      <item> streamup </item> 
+      <item> string </item> 
+      <item> string&lt; </item> 
+      <item> string&lt;= </item> 
+      <item> string= </item> 
+      <item> string&gt; </item> 
+      <item> string&gt;= </item> 
+      <item> string/= </item> 
+      <item> string-capitalize </item> 
+      <item> string-char </item> 
+      <item> string-char-p </item> 
+      <item> string-downcase </item> 
+      <item> string-equal </item> 
+      <item> string-greaterp </item> 
+      <item> string-left-trim </item> 
+      <item> string-lessp </item> 
+      <item> string-not-equal </item> 
+      <item> string-not-greaterp </item> 
+      <item> string-not-lessp </item> 
+      <item> stringp </item> 
+      <item> string-right-strim </item> 
+      <item> string-right-trim </item> 
+      <item> string-stream </item> 
+      <item> string-trim </item> 
+      <item> string-upcase </item> 
+      <item> structure </item> 
+      <item> structure-class </item> 
+      <item> structure-object </item> 
+      <item> style-warning </item> 
+      <item> sublim </item> 
+      <item> sublis </item> 
+      <item> subseq </item> 
+      <item> subsetp </item> 
+      <item> subst </item> 
+      <item> subst-if </item> 
+      <item> subst-if-not </item> 
+      <item> substitute </item> 
+      <item> substitute-if </item> 
+      <item> substitute-if-not </item> 
+      <item> subtypep </item> 
+      <item> svref </item> 
+      <item> sxhash </item> 
+      <item> symbol </item> 
+      <item> symbol-function </item> 
+      <item> symbol-macrolet </item> 
+      <item> symbol-name </item> 
+      <item> symbolp </item> 
+      <item> symbol-package </item> 
+      <item> symbol-plist </item> 
+      <item> symbol-value </item> 
+      <item> synonym-stream </item> 
+      <item> synonym-stream-symbol </item> 
+      <item> sys </item> 
+      <item> system </item> 
+      <item> t </item> 
+      <item> tagbody </item> 
+      <item> tailp </item> 
+      <item> tan </item> 
+      <item> tanh </item> 
+      <item> tenth </item> 
+      <item> terpri </item> 
+      <item> the </item> 
+      <item> third </item> 
+      <item> throw </item> 
+      <item> time </item> 
+      <item> trace </item> 
+      <item> translate-logical-pathname </item> 
+      <item> translate-pathname </item> 
+      <item> tree-equal </item> 
+      <item> truename </item> 
+      <item> truncase </item> 
+      <item> truncate </item> 
+      <item> two-way-stream </item> 
+      <item> two-way-stream-input-stream </item> 
+      <item> two-way-stream-output-stream </item> 
+      <item> type </item> 
+      <item> typecase </item> 
+      <item> type-error </item> 
+      <item> type-error-datum </item> 
+      <item> type-error-expected-type </item> 
+      <item> type-of </item> 
+      <item> typep </item> 
+      <item> unbound-slot </item> 
+      <item> unbound-slot-instance </item> 
+      <item> unbound-variable </item> 
+      <item> undefined-function </item> 
+      <item> unexport </item> 
+      <item> unintern </item> 
+      <item> union </item> 
+      <item> unless </item> 
+      <item> unread </item> 
+      <item> unread-char </item> 
+      <item> unsigned-byte </item> 
+      <item> untrace </item> 
+      <item> unuse-package </item> 
+      <item> unwind-protect </item> 
+      <item> update-instance-for-different-class </item> 
+      <item> update-instance-for-redefined-class </item> 
+      <item> upgraded-array-element-type </item> 
+      <item> upgraded-complex-part-type </item> 
+      <item> upper-case-p </item> 
+      <item> use-package </item> 
+      <item> user </item> 
+      <item> user-homedir-pathname </item> 
+      <item> use-value </item> 
+      <item> values </item> 
+      <item> values-list </item> 
+      <item> vector </item> 
+      <item> vectorp </item> 
+      <item> vector-pop </item> 
+      <item> vector-push </item> 
+      <item> vector-push-extend </item> 
+      <item> warn </item> 
+      <item> warning </item> 
+      <item> when </item> 
+      <item> wild-pathname-p </item> 
+      <item> with-accessors </item> 
+      <item> with-compilation-unit </item> 
+      <item> with-condition-restarts </item> 
+      <item> with-hash-table-iterator </item> 
+      <item> with-input-from-string </item> 
+      <item> with-open-file </item> 
+      <item> with-open-stream </item> 
+      <item> with-output-to-string </item> 
+      <item> with-package-iterator </item> 
+      <item> with-simple-restart </item> 
+      <item> with-slots </item> 
+      <item> with-standard-io-syntax </item> 
+      <item> write </item> 
+      <item> write-byte </item> 
+      <item> write-char </item> 
+      <item> write-line </item> 
+      <item> write-sequence </item> 
+      <item> write-string </item> 
+      <item> write-to-string </item> 
+      <item> yes-or-no-p </item> 
+      <item> y-or-n-p </item> 
+      <item> zerop </item> 
+    </list>
+
+    <list name="modifiers">
+      <item> :abort </item> 
+      <item> :adjustable </item> 
+      <item> :append </item> 
+      <item> :array </item> 
+      <item> :base </item> 
+      <item> :case </item> 
+      <item> :circle </item> 
+      <item> :conc-name </item> 
+      <item> :constructor </item> 
+      <item> :copier </item> 
+      <item> :count </item> 
+      <item> :create </item> 
+      <item> :default </item> 
+      <item> :defaults </item> 
+      <item> :device </item> 
+      <item> :direction </item> 
+      <item> :directory </item> 
+      <item> :displaced-index-offset </item> 
+      <item> :displaced-to </item> 
+      <item> :element-type </item> 
+      <item> :end1 </item> 
+      <item> :end2 </item> 
+      <item> :end </item> 
+      <item> :error </item> 
+      <item> :escape </item> 
+      <item> :external </item> 
+      <item> :from-end </item> 
+      <item> :gensym </item> 
+      <item> :host </item> 
+      <item> :if-does-not-exist:pretty </item> 
+      <item> :if-exists:print </item> 
+      <item> :include:print-function </item> 
+      <item> :index </item> 
+      <item> :inherited </item> 
+      <item> :initial-contents </item> 
+      <item> :initial-element </item> 
+      <item> :initial-offset </item> 
+      <item> :initial-value </item> 
+      <item> :input </item> 
+      <item> :internal:size </item> 
+      <item> :io </item> 
+      <item> :junk-allowed </item> 
+      <item> :key </item> 
+      <item> :length </item> 
+      <item> :level </item> 
+      <item> :named </item> 
+      <item> :name </item> 
+      <item> :new-version </item> 
+      <item> :nicknames </item> 
+      <item> :output-file </item> 
+      <item> :output </item> 
+      <item> :overwrite </item> 
+      <item> :predicate </item> 
+      <item> :preserve-whitespace </item> 
+      <item> :probe </item> 
+      <item> :radix </item> 
+      <item> :read-only </item> 
+      <item> :rehash-size </item> 
+      <item> :rehash-threshold </item> 
+      <item> :rename-and-delete </item> 
+      <item> :rename </item> 
+      <item> :start1 </item> 
+      <item> :start2 </item> 
+      <item> :start </item> 
+      <item> :stream </item> 
+      <item> :supersede </item> 
+      <item> :test </item> 
+      <item> :test-not </item> 
+      <item> :type </item> 
+      <item> :use </item> 
+      <item> :verbose </item> 
+      <item> :version </item> 
+    </list>
+    <list name="variables">
+      <item> *applyhook* </item>
+      <item> *break-on-signals* </item>
+      <item> *break-on-signals* </item>
+      <item> *break-on-warnings* </item>
+      <item> *compile-file-pathname* </item>
+      <item> *compile-file-pathname* </item>
+      <item> *compile-file-truename* </item>
+      <item> *compile-file-truename* </item>
+      <item> *compile-print* </item>
+      <item> *compile-verbose* </item>
+      <item> *compile-verbose* </item>
+      <item> *debugger-hook* </item>
+      <item> *debug-io* </item>
+      <item> *default-pathname-defaults* </item>
+      <item> *error-output* </item>
+      <item> *evalhook* </item>
+      <item> *features* </item>
+      <item> *gensym-counter* </item>
+      <item> *load-pathname*  </item>
+      <item> *load-print* </item>
+      <item> *load-truename* </item>
+      <item> *load-verbose* </item>
+      <item> *macroexpand-hook* </item>
+      <item> *modules* </item>
+      <item> *package* </item>
+      <item> *print-array* </item>
+      <item> *print-base* </item>
+      <item> *print-case* </item>
+      <item> *print-circle* </item>
+      <item> *print-escape* </item>
+      <item> *print-gensym* </item>
+      <item> *print-length* </item>
+      <item> *print-level* </item>
+      <item> *print-lines* </item>
+      <item> *print-miser-width* </item>
+      <item> *print-miser-width* </item>
+      <item> *print-pprint-dispatch* </item>
+      <item> *print-pprint-dispatch* </item>
+      <item> *print-pretty* </item>
+      <item> *print-radix* </item>
+      <item> *print-readably* </item>
+      <item> *print-right-margin* </item>
+      <item> *print-right-margin* </item>
+      <item> *query-io* </item>
+      <item> *random-state* </item>
+      <item> *read-base* </item>
+      <item> *read-default-float-format* </item>
+      <item> *read-eval* </item>
+      <item> *read-suppress* </item>
+      <item> *readtable* </item>
+      <item> *standard-input* </item>
+      <item> *standard-output* </item>
+      <item> *terminal-io* </item>
+      <item> *trace-output* </item>
+    </list>
+
+    <contexts>
+      <context name="Normal" attribute="Normal" lineEndContext="#stay">
+        <RegExpr attribute="Region Marker" context="#stay" String=";+\s*BEGIN.*$" beginRegion="region"/>
+        <RegExpr attribute="Region Marker" context="#stay" String=";+\s*END.*$" endRegion="region"/>
+        <RegExpr attribute="Comment" context="#stay" String=";.*$"/>
+        <Detect2Chars attribute="Comment" context="MultiLineComment" char="#" char1="|" beginRegion="region"/>
+        <DetectChar attribute="Brackets" context="#stay" char="("/>
+        <DetectChar attribute="Brackets" context="#stay" char=")"/>
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+        <keyword attribute="Operator" context="#stay" String="symbols"/>
+        <keyword attribute="Modifier" context="#stay" String="modifiers"/>
+        <keyword attribute="Variable" context="#stay" String="variables"/>
+        <keyword attribute="Definition" context="function_decl" String="definitions"/>
+        <RegExpr attribute="Char" context="#stay" String="#\\."/>
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <RegExpr attribute="Char" context="SpecialNumber" String="#[bodxei]"/>
+        <RegExpr attribute="Decimal" context="#stay" String="#[tf]"/>
+        <Float attribute="Float" context="#stay"/>
+        <Int attribute="Decimal" context="#stay"/>
+      </context>
+      <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop" char="|" char1="#" endRegion="region"/>
+      </context>
+      <context name="function_decl" attribute="Function" lineEndContext="#stay">
+        <RegExpr attribute="Function" context="#pop" String="\s*[A-Za-z0-9-+\&lt;\&gt;//\*]*\s*" />
+      </context>
+      <context name="SpecialNumber" attribute="Normal" lineEndContext="#pop">
+        <Float attribute="Float" context="#pop"/>
+        <Int attribute="Decimal" context="#pop"/>
+        <HlCOct attribute="BaseN" context="#pop"/>
+        <HlCHex attribute="Float" context="#pop"/>
+      </context>
+      <context name="String" attribute="String" lineEndContext="#stay">
+        <RegExpr attribute="Char" context="#stay" String="#\\."/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal"      defStyleNum="dsNormal"/>
+      <itemData name="Keyword"     defStyleNum="dsKeyword"/>
+      <itemData name="Operator"    defStyleNum="dsKeyword" color="#d22811"/>
+      <itemData name="Modifier"    defStyleNum="dsKeyword" color="#800000"/>
+      <itemData name="Variable"    defStyleNum="dsKeyword" color="#b07e1f"/>
+      <itemData name="Definition"  defStyleNum="dsKeyword" color="#d22811"/>
+      <itemData name="Data"        defStyleNum="dsDataType"/>
+      <itemData name="Decimal"     defStyleNum="dsDecVal"/>
+      <itemData name="BaseN"       defStyleNum="dsBaseN"/>
+      <itemData name="Float"       defStyleNum="dsFloat"/>
+      <itemData name="Function"    defStyleNum="dsFunction"/>
+      <itemData name="Char"        defStyleNum="dsChar"/>
+      <itemData name="String"      defStyleNum="dsString"/>
+      <itemData name="Comment"     defStyleNum="dsComment"/>
+      <itemData name="Region Marker" defStyleNum="dsRegionMarker"/>
+      <itemData name="Brackets"    defStyleNum="dsNormal" color="#0000ff" selColor="#00ff00" bold="1" italic="0"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <keywords casesensitive="1" weakDeliminator="-+*?!&lt;&gt;=/:#\"/>
+    <comments>
+      <comment name="singleLine" start=";;" />
+      <comment name="multiLine" start="#|" end="|#" />
+    </comments>
+  </general>
+</language>
diff --git a/xml/cpp.xml b/xml/cpp.xml
new file mode 100644
--- /dev/null
+++ b/xml/cpp.xml
@@ -0,0 +1,299 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="C++" version="1.41" kateversion="2.4" section="Sources" extensions="*.c++;*.cxx;*.cpp;*.cc;*.C;*.h;*.hh;*.H;*.h++;*.hxx;*.hpp;*.hcc;*.moc" mimetype="text/x-c++src;text/x-c++hdr;text/x-chdr" priority="9">
+<!--
+##########################################################################
+## Fixes by Sebastian Pipping (webmaster@hartwork.org)
+##
+## NOTE: Keep in sync with C highlighter! (c.xml)
+##########################################################################
+-->
+  <highlighting>
+    <list name="keywords">
+      <item> asm </item>
+      <item> break </item>
+      <item> case </item>
+      <item> catch </item>
+      <item> class </item>
+      <item> const_cast </item>
+      <item> continue </item>
+      <item> default </item>
+      <item> delete </item>
+      <item> do </item>
+      <item> dynamic_cast</item>
+      <item> else </item>
+      <item> enum </item>
+      <item> explicit </item>
+      <item> export </item>
+      <item> extern </item>
+      <item> false </item>
+      <item> friend </item>
+      <item> for </item>
+      <item> goto </item>
+      <item> if </item>
+      <item> inline </item>
+      <item> namespace </item>
+      <item> new </item>
+      <item> operator </item>
+      <item> private </item>
+      <item> protected </item>
+      <item> public </item>
+      <item> qobject_cast </item>
+      <item> reinterpret_cast </item>
+      <item> return </item>
+      <item> sizeof </item>
+      <item> static_cast </item>
+      <item> struct </item>
+      <item> switch </item>
+      <item> template </item>
+      <item> this </item>
+      <item> throw </item>
+      <item> true </item>
+      <item> try </item>
+      <item> typedef </item>
+      <item> typeid </item>
+      <item> type_info </item>
+      <item> typename </item>
+      <item> union </item>
+      <item> using </item>
+      <item> virtual </item>
+      <item> while </item>
+
+      <item> and </item>
+      <item> and_eq </item>
+      <item> bad_cast </item>
+      <item> bad_typeid </item>
+      <item> bitand </item>
+      <item> bitor </item>
+      <item> compl </item>
+      <item> not </item>
+      <item> not_eq </item>
+      <item> or </item>
+      <item> or_eq </item>
+      <item> xor </item>
+      <item> xor_eq </item>
+      <item> except </item>
+      <item> finally </item>
+      <item> xalloc </item>
+    </list>
+    <list name="extensions">
+      <item> K_DCOP </item>
+      <item> SLOT </item>
+      <item> SIGNAL </item>
+      <item> Q_CLASSINFO </item>
+      <item> Q_ENUMS </item>
+      <item> Q_EXPORT </item>
+      <item> Q_OBJECT </item>
+      <item> Q_OVERRIDE </item>
+      <item> Q_PROPERTY </item>
+      <item> Q_SETS </item>
+      <item> Q_SIGNALS </item>
+      <item> Q_SLOTS </item>
+      <item> Q_FOREACH </item>
+      <item> Q_DECLARE_FLAGS </item>
+      <item> Q_INIT_RESOURCE </item>
+      <item> Q_CLEANUP_RESOURCE </item>
+      <item> Q_GLOBAL_STATIC </item>
+      <item> Q_GLOBAL_STATIC_WITH_ARGS </item>
+      <item> Q_DECLARE_INTERFACE </item>
+      <item> Q_DECLARE_TYPEINFO </item>
+      <item> Q_DECLARE_SHARED </item>
+      <item> Q_DECLARE_FLAGS </item>
+      <item> Q_DECLARE_OPERATORS_FOR_FLAGS </item>
+      <item> Q_FOREVER </item>
+      <item> Q_DECLARE_PRIVATE </item>
+      <item> Q_DECLARE_PUBLIC </item>
+      <item> Q_D </item>
+      <item> Q_Q </item>
+      <item> Q_DISABLE_COPY </item>
+      <item> Q_INTERFACES </item>
+      <item> Q_FLAGS </item>
+      <item> Q_SCRIPTABLE </item>
+      <item> Q_INVOKABLE </item>
+      <item> Q_GADGET </item>
+      <item> Q_ARG </item>
+      <item> Q_RETURN_ARG </item>
+      <item> Q_ASSERT </item>
+      <item> Q_ASSERT_X </item>
+      <item> Q_PRIVATE_SLOT </item>
+      <item> Q_DECLARE_METATYPE </item>
+      <item> Q_NOREPLY </item>
+      <item> TRUE </item>
+      <item> FALSE </item>
+      <item> connect </item>
+      <item> disconnect </item>
+      <item> emit </item>
+      <item> signals </item>
+      <item> slots </item>
+      <item> foreach </item>
+      <item> forever </item>
+    </list>
+    <list name="types">
+      <item> auto </item>
+      <item> bool </item>
+      <item> char </item>
+      <item> const </item>
+      <item> double </item>
+      <item> float </item>
+      <item> int </item>
+      <item> long </item>
+      <item> mutable </item>
+      <item> register </item>
+      <item> short </item>
+      <item> signed </item>
+      <item> static </item>
+      <item> unsigned </item>
+      <item> void </item>
+      <item> volatile </item>
+      <item> uchar </item>
+      <item> uint </item>
+      <item> int8_t </item>
+      <item> int16_t </item>
+      <item> int32_t </item>
+      <item> int64_t </item>
+      <item> uint8_t </item>
+      <item> uint16_t </item>
+      <item> uint32_t </item>
+      <item> uint64_t </item>
+      <item> wchar_t </item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+        <DetectSpaces />
+	<RegExpr attribute="Preprocessor" context="Outscoped" String="#\s*if\s+0" beginRegion="PP" firstNonSpace="true" />
+        <DetectChar context="AfterHash" char="#" firstNonSpace="true" lookAhead="true" />
+        <StringDetect attribute="Region Marker" context="Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />
+        <StringDetect attribute="Region Marker" context="Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />
+        <keyword attribute="Keyword" context="#stay" String="keywords" />
+        <keyword attribute="Extensions" context="#stay" String="extensions" />
+        <keyword attribute="Data Type" context="#stay" String="types" />
+        <HlCChar attribute="Char" context="#stay"/>
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <DetectIdentifier />
+        <Float attribute="Float" context="#stay">
+          <AnyChar String="fF" attribute="Float" context="#stay"/>
+        </Float>
+        <HlCOct attribute="Octal" context="#stay"/>
+        <HlCHex attribute="Hex" context="#stay"/>
+        <Int attribute="Decimal" context="#stay">
+          <StringDetect attribute="Decimal" context="#stay" String="ULL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LUL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LLU" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="UL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LU" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="U" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="L" insensitive="TRUE"/>
+        </Int>
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+        <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
+        <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]{|}~^&#59;"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#pop" name="String">
+        <LineContinue attribute="String" context="#stay"/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+
+      <context attribute="Region Marker" lineEndContext="#pop" name="Region Marker">
+      </context>
+
+      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
+        <DetectSpaces />
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+      </context>
+
+      <context attribute="Error" lineEndContext="#pop" name="AfterHash">
+        <!-- define, elif, else, endif, error, if, ifdef, ifndef, include, include_next, line, pragma, undef, warning -->
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*if(?:def|ndef)?(?=\s+\S)" insensitive="true" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*endif" insensitive="true" endRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Define" String="#\s*define.*((?=\\))" insensitive="true" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*(?:el(?:se|if)|include(?:_next)?|define|undef|line|error|warning|pragma)" insensitive="true" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s+[0-9]+" insensitive="true" firstNonSpace="true" />
+      </context>
+
+      <context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">
+        <LineContinue attribute="Preprocessor" context="#stay"/>
+        <RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>
+        <RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="Commentar/Preprocessor" char="/" char1="*" beginRegion="Comment2" />
+
+        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
+      </context>
+
+      <context attribute="Preprocessor" lineEndContext="#pop" name="Define">
+        <LineContinue attribute="Preprocessor" context="#stay"/>
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Commentar/Preprocessor">
+        <DetectSpaces />
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment2" />
+        <DetectIdentifier />
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Outscoped" >
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+        <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="#pop" String="#\s*el(?:se|if)" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="#pop" String="#\s*endif" endRegion="PP" firstNonSpace="true" />
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Outscoped intern">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+        <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Comment" context="#pop" String="#\s*endif" endRegion="PP" firstNonSpace="true" />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text"  defStyleNum="dsNormal"/>
+      <itemData name="Keyword"      defStyleNum="dsKeyword"/>
+      <itemData name="Extensions"   defStyleNum="dsKeyword" color="#0095ff" selColor="#ffffff" bold="1" italic="0"/>
+      <itemData name="Data Type"    defStyleNum="dsDataType"/>
+      <itemData name="Decimal"      defStyleNum="dsDecVal"/>
+      <itemData name="Octal"        defStyleNum="dsBaseN"/>
+      <itemData name="Hex"          defStyleNum="dsBaseN"/>
+      <itemData name="Float"        defStyleNum="dsFloat"/>
+      <itemData name="Char"         defStyleNum="dsChar"/>
+      <itemData name="String"       defStyleNum="dsString"/>
+      <itemData name="String Char"  defStyleNum="dsChar"/>
+      <itemData name="Comment"      defStyleNum="dsComment"/>
+      <itemData name="Symbol"       defStyleNum="dsNormal"/>
+      <itemData name="Preprocessor" defStyleNum="dsOthers"/>
+      <itemData name="Prep. Lib"    defStyleNum="dsOthers"/>
+      <itemData name="Region Marker" defStyleNum="dsRegionMarker" />
+      <itemData name="Error"        defStyleNum="dsError" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="//" />
+      <comment name="multiLine" start="/*" end="*/" region="Comment"/>
+    </comments>
+    <keywords casesensitive="1" />
+  </general>
+</language>
diff --git a/xml/css.xml b/xml/css.xml
new file mode 100644
--- /dev/null
+++ b/xml/css.xml
@@ -0,0 +1,655 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+
+<!--
+
+    Kate CSS syntax highlighting definition
+
+
+    Changelog:
+
+    - Version 2.01, by Mathieu Bonnet:
+
+        - Added CSS 3 property "border-radius".
+        - Added Gecko CSS properties "-moz-border-radius" and "-moz-box-flex".
+        - Added Gecko CSS value "-moz-box".
+        - Added Trident CSS functional notation "expression".
+        - Extended the id and class syntax specifications, as per CSS 2.1 grammar.
+
+-->
+
+<language name="CSS" version="2.01" kateversion="2.4" section="Markup" extensions="*.css" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
+
+  <highlighting>
+    <list name="properties">
+      <!-- CSS2 -->
+      <item> azimuth </item>
+      <item> background </item>
+      <item> background-attachment </item>
+      <item> background-color </item>
+      <item> background-image </item>
+      <item> background-position </item>
+      <item> background-repeat </item>
+      <item> border </item>
+      <item> border-bottom </item>
+      <item> border-bottom-color </item>
+      <item> border-bottom-style </item>
+      <item> border-bottom-width </item>
+      <item> border-collapse </item>
+      <item> border-color </item>
+      <item> border-left </item>
+      <item> border-left-color </item>
+      <item> border-left-style </item>
+      <item> border-left-width </item>
+      <item> border-right </item>
+      <item> border-right-color </item>
+      <item> border-right-style </item>
+      <item> border-right-width </item>
+      <item> border-spacing </item>
+      <item> border-style </item>
+      <item> border-top </item>
+      <item> border-top-color </item>
+      <item> border-top-style </item>
+      <item> border-top-width </item>
+      <item> border-width </item>
+      <item> bottom </item>
+      <item> caption-side </item>
+      <item> clear </item>
+      <item> clip </item>
+      <item> color </item>
+      <item> content </item>
+      <item> counter-increment </item>
+      <item> counter-reset </item>
+      <item> cue </item>
+      <item> cue-after </item>
+      <item> cue-before </item>
+      <item> cursor </item>
+      <item> direction </item>
+      <item> display </item>
+      <item> elevation </item>
+      <item> empty-cells </item>
+      <item> float </item>
+      <item> font </item>
+      <item> font-family </item>
+      <item> font-size </item>
+      <item> font-size-adjust </item>
+      <item> font-stretch </item>
+      <item> font-style </item>
+      <item> font-variant </item>
+      <item> font-weight </item>
+      <item> height </item>
+      <item> left </item>
+      <item> letter-spacing </item>
+      <item> line-height </item>
+      <item> list-style </item>
+      <item> list-style-image </item>
+      <item> list-style-keyword </item>
+      <item> list-style-position </item>
+      <item> list-style-type  </item>
+      <item> margin </item>
+      <item> margin-bottom </item>
+      <item> margin-left </item>
+      <item> margin-right </item>
+      <item> margin-top </item>
+      <item> marker-offset </item>
+      <item> max-height </item>
+      <item> max-width </item>
+      <item> min-height </item>
+      <item> min-width </item>
+      <item> orphans </item>
+      <item> outline </item>
+      <item> outline-color </item>
+      <item> outline-style </item>
+      <item> outline-width </item>
+      <item> overflow </item>
+      <item> padding </item>
+      <item> padding-bottom </item>
+      <item> padding-left </item>
+      <item> padding-right </item>
+      <item> padding-top </item>
+      <item> page </item>
+      <item> page-break-after </item>
+      <item> page-break-before </item>
+      <item> page-break-inside </item>
+      <item> pause </item>
+      <item> pause-after </item>
+      <item> pause-before </item>
+      <item> pitch </item>
+      <item> pitch-range </item>
+      <item> play-during </item>
+      <item> position </item>
+      <item> quotes </item>
+      <item> richness </item>
+      <item> right </item>
+      <item> size </item>
+      <item> speak </item>
+      <item> speak-header </item>
+      <item> speak-numeral </item>
+      <item> speak-punctuation </item>
+      <item> speech-rate </item>
+      <item> stress </item>
+      <item> table-layout </item>
+      <item> text-align </item>
+      <item> text-decoration </item>
+      <item> text-decoration-color </item>
+      <item> text-indent </item>
+      <item> text-shadow </item>
+      <item> text-transform </item>
+      <item> top </item>
+      <item> unicode-bidi </item>
+      <item> vertical-align </item>
+      <item> visibility </item>
+      <item> voice-family </item>
+      <item> volume </item>
+      <item> white-space </item>
+      <item> widows </item>
+      <item> width </item>
+      <item> word-spacing </item>
+      <item> z-index </item>
+
+      <!-- CSS3 -->
+      <item> border-radius </item>
+      <item> box-sizing </item>
+      <item> opacity </item>
+      <item> text-shadow </item>
+
+      <!-- Gecko rendering engine CSS property extensions -->
+      <item> -moz-border-radius </item>
+      <item> -moz-box-flex </item>
+
+      <!-- konq specific -->
+      <item> konq_bgpos_x </item>
+      <item> konq_bgpos_y </item>
+
+      <!-- font properties in @font-face -->
+      <item> font-family </item>
+      <item> font-size </item>
+      <item> font-stretch </item>
+      <item> font-style </item>
+      <item> font-variant </item>
+      <item> font-weight </item>
+      <item> unicode-range </item>
+      <item> units-per-em </item>
+      <item> src </item>
+      <item> panose-1 </item>
+      <item> stemv </item>
+      <item> stemh </item>
+      <item> slope </item>
+      <item> cap-height </item>
+      <item> x-height </item>
+      <item> ascent </item>
+      <item> descent </item>
+      <item> widths </item>
+      <item> bbox </item>
+      <item> definition-src </item>
+      <item> baseline </item>
+      <item> centerline </item>
+      <item> mathline </item>
+      <item> topline </item>
+    </list>
+
+    <list name="types">
+      <item> inherit </item>
+      <item> none </item>
+      <item> hidden </item>
+      <item> dotted </item>
+      <item> dashed </item>
+      <item> solid </item>
+      <item> double </item>
+      <item> groove </item>
+      <item> ridge </item>
+      <item> inset </item>
+      <item> outset </item>
+      <item> xx-small </item>
+      <item> x-small </item>
+      <item> small </item>
+      <item> medium </item>
+      <item> large </item>
+      <item> x-large </item>
+      <item> xx-large </item>
+      <item> smaller </item>
+      <item> larger </item>
+      <item> italic </item>
+      <item> oblique </item>
+      <item> small-caps </item>
+      <item> normal </item>
+      <item> bold </item>
+      <item> bolder </item>
+      <item> lighter </item>
+      <item> light </item>
+      <item> 100 </item>
+      <item> 200 </item>
+      <item> 300 </item>
+      <item> 400 </item>
+      <item> 500 </item>
+      <item> 600 </item>
+      <item> 700 </item>
+      <item> 800 </item>
+      <item> 900 </item>
+      <item> transparent </item>
+      <item> repeat </item>
+      <item> repeat-x </item>
+      <item> repeat-y </item>
+      <item> no-repeat </item>
+      <item> baseline </item>
+      <item> sub </item>
+      <item> super </item>
+      <item> top </item>
+      <item> text-top </item>
+      <item> middle </item>
+      <item> bottom </item>
+      <item> text-bottom </item>
+      <item> left </item>
+      <item> right </item>
+      <item> center </item>
+      <item> justify </item>
+      <item> konq-center </item>
+      <item> disc </item>
+      <item> circle </item>
+      <item> square </item>
+      <item> box </item>
+      <item> decimal </item>
+      <item> decimal-leading-zero </item>
+      <item> lower-roman </item>
+      <item> upper-roman </item>
+      <item> lower-greek </item>
+      <item> lower-alpha </item>
+      <item> lower-latin </item>
+      <item> upper-alpha </item>
+      <item> upper-latin </item>
+      <item> hebrew </item>
+      <item> armenian </item>
+      <item> georgian </item>
+      <item> cjk-ideographic </item>
+      <item> hiragana </item>
+      <item> katakana </item>
+      <item> hiragana-iroha </item>
+      <item> katakana-iroha </item>
+      <item> inline </item>
+      <item> inline-block </item>
+      <item> block </item>
+      <item> list-item </item>
+      <item> run-in </item>
+      <item> compact </item>
+      <item> marker </item>
+      <item> table </item>
+      <item> inline-table </item>
+      <item> table-row-group </item>
+      <item> table-header-group </item>
+      <item> table-footer-group </item>
+      <item> table-row </item>
+      <item> table-column-group </item>
+      <item> table-column </item>
+      <item> table-cell </item>
+      <item> table-caption </item>
+      <item> auto </item>
+      <item> crosshair </item>
+      <item> default </item>
+      <item> pointer </item>
+      <item> move </item>
+      <item> e-resize </item>
+      <item> ne-resize </item>
+      <item> nw-resize </item>
+      <item> n-resize </item>
+      <item> se-resize </item>
+      <item> sw-resize </item>
+      <item> s-resize </item>
+      <item> w-resize </item>
+      <item> text </item>
+      <item> wait </item>
+      <item> help </item>
+      <item> above </item>
+      <item> absolute </item>
+      <item> always </item>
+      <item> avoid </item>
+      <item> below </item>
+      <item> bidi-override </item>
+      <item> blink </item>
+      <item> both </item>
+      <item> capitalize </item>
+      <item> caption </item>
+      <item> close-quote </item>
+      <item> collapse </item>
+      <item> condensed </item>
+      <item> crop </item>
+      <item> cross </item>
+      <item> embed </item>
+      <item> expanded </item>
+      <item> extra-condensed </item>
+      <item> extra-expanded </item>
+      <item> fixed </item>
+      <item> hand </item>
+      <item> hide </item>
+      <item> higher </item>
+      <item> icon </item>
+      <item> inside </item>
+      <item> invert </item>
+      <item> landscape </item>
+      <item> level </item>
+      <item> line-through </item>
+      <item> loud </item>
+      <item> lower </item>
+      <item> lowercase </item>
+      <item> ltr </item>
+      <item> menu </item>
+      <item> message-box </item>
+      <item> mix </item>
+      <item> narrower </item>
+      <item> no-close-quote </item>
+      <item> no-open-quote </item>
+      <item> nowrap </item>
+      <item> open-quote </item>
+      <item> outside </item>
+      <item> overline </item>
+      <item> portrait </item>
+      <item> pre </item>
+      <item> pre-line </item>
+      <item> pre-wrap </item>
+      <item> relative </item>
+      <item> rtl </item>
+      <item> scroll </item>
+      <item> semi-condensed </item>
+      <item> semi-expanded </item>
+      <item> separate </item>
+      <item> show </item>
+      <item> small-caption </item>
+      <item> static </item>
+      <item> static-position </item>
+      <item> status-bar </item>
+      <item> thick </item>
+      <item> thin </item>
+      <item> ultra-condensed </item>
+      <item> ultra-expanded </item>
+      <item> underline </item>
+      <item> uppercase </item>
+      <item> visible </item>
+      <item> wider </item>
+      <item> break </item>
+      <item> serif </item>
+      <item> sans-serif </item>
+      <item> cursive </item>
+      <item> fantasy </item>
+      <item> monospace </item>
+      <item> border-box </item>
+      <item> content-box </item>
+      
+      <!-- Gecko rendering engine CSS value extensions -->
+      <item> -moz-box </item>      
+      
+    </list>
+
+
+    <list name="colors">
+      <item> aqua </item>
+      <item> black </item>
+      <item> blue </item>
+      <item> fuchsia </item>
+      <item> gray </item>
+      <item> green </item>
+      <item> lime </item>
+      <item> maroon </item>
+      <item> navy </item>
+      <item> olive </item>
+      <item> purple </item>
+      <item> red </item>
+      <item> silver </item>
+      <item> teal </item>
+      <item> white </item>
+      <item> yellow </item>
+      <item> ActiveBorder  </item>
+      <item> ActiveCaption  </item>
+      <item> AppWorkspace  </item>
+      <item> Background  </item>
+      <item> ButtonFace  </item>
+      <item> ButtonHighlight  </item>
+      <item> ButtonShadow  </item>
+      <item> ButtonText  </item>
+      <item> CaptionText  </item>
+      <item> GrayText  </item>
+      <item> Highlight  </item>
+      <item> HighlightText  </item>
+      <item> InactiveBorder  </item>
+      <item> InactiveCaption  </item>
+      <item> InactiveCaptionText  </item>
+      <item> InfoBackground  </item>
+      <item> InfoText  </item>
+      <item> Menu  </item>
+      <item> MenuText  </item>
+      <item> Scrollbar  </item>
+      <item> ThreeDDarkShadow  </item>
+      <item> ThreeDFace  </item>
+      <item> ThreeDHighlight  </item>
+      <item> ThreeDLightShadow  </item>
+      <item> ThreeDShadow  </item>
+      <item> Window  </item>
+      <item> WindowFrame  </item>
+      <item> WindowText  </item>
+    </list>
+
+    <list name="paren">
+      <item> url </item>
+      <item> attr </item>
+      <item> rect </item>
+      <item> rgb </item>
+      <item> counter </item>
+      <item> counters </item>
+
+      <!-- in @font-face -->
+      <item> local </item>
+      <item> format </item>
+      
+      <!-- Trident (a.k.a., MSHTML) rendering engine functional notation extensions -->
+      <item> expression </item>
+      
+    </list>
+
+    <list name="mediatypes">
+      <item> all </item>
+      <item> aural </item>
+      <item> braille </item>
+      <item> embossed </item>
+      <item> handheld </item>
+      <item> print </item>
+      <item> projection </item>
+      <item> screen </item>
+      <item> tty </item>
+      <item> tv </item>
+    </list>
+
+    <list name="pseudoclasses">
+      <item> hover </item>
+      <item> link </item>
+      <item> visited </item>
+      <item> active </item>
+      <item> focus </item>
+      <item> first-child </item>
+      <item> last-child </item>
+      <item> only-child </item>
+      <item> first-of-type </item>
+      <item> last-of-type </item>
+      <item> only-of-type </item>
+      <item> first-letter </item>
+      <item> first-line </item>
+      <item> before </item>
+      <item> after </item>
+      <item> selection </item>
+      <item> root </item>
+      <item> empty </item>
+      <item> target </item>
+      <item> enabled </item>
+      <item> disabled </item>
+      <item> checked </item>
+      <item> indeterminate </item>
+      <item> nth-child </item>
+      <item> nth-last-child </item>
+      <item> nth-of-type </item>
+      <item> nth-last-of-type </item>
+      <item> not </item>
+    </list>
+
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Base">
+        <LineContinue/>
+        <DetectSpaces/>
+	<IncludeRules context="FindRuleSets" />
+      </context>
+
+      <!-- to be included -->
+      <!-- finds rules and detects nesting -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindRuleSets">
+        <RegExpr attribute="Media" context="Media" String="@media\b" />
+	<RegExpr attribute="At Rule" context="Import" String="@import\b" />
+	<RegExpr attribute="At Rule" context="#stay" String="@(font-face|charset)\b" />
+        <DetectChar attribute="Property" context="RuleSet" char="{" beginRegion="ruleset" />
+        <!--parse selectors-->
+	<DetectChar attribute="Selector Attr" context="SelAttr" char="[" />
+	<RegExpr attribute="Selector Id" context="#stay" String="#([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
+	<RegExpr attribute="Selector Class" context="#stay" String="\.([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
+	<RegExpr attribute="Selector Pseudo" context="#stay" String=":lang\([\w_-]+\)" />
+	<DetectChar attribute="Selector Pseudo" context="SelPseudo" char=":" />
+	<IncludeRules context="FindStrings" />
+	<IncludeRules context="FindComments" />
+      </context>
+
+      <!-- finds arguments to properties -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindValues">
+	<RegExpr attribute="Value" context="#stay" String="[-+]?[0-9.]+(em|ex|px|in|cm|mm|pt|pc|deg|rad|grad|ms|s|Hz|kHz)\b" />
+	<RegExpr attribute="Value" context="#stay" String="[-+]?[0-9.]+[%]?" />
+	<RegExpr attribute="Normal Text" context="#stay" String="[\w\-]+" />
+      </context>
+
+      <!-- finds strings -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindStrings">
+	<DetectChar attribute="String" context="StringDQ" char="&quot;" />
+	<DetectChar attribute="String" context="StringSQ" char="'" />
+      </context>
+
+      <!-- finds comments -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindComments">
+        <RegExpr attribute="Region Marker" context="#stay" String="/\*BEGIN.*\*/" beginRegion="UserDefined" />
+        <RegExpr attribute="Region Marker" context="#stay" String="/\*END.*\*/" endRegion="UserDefined" />
+        <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" beginRegion="comment" />
+      </context>
+
+      <!-- other contexts -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="Media">
+        <DetectChar attribute="Media" context="Media2" char="{" beginRegion="media" />
+	<keyword attribute="Media" context="#stay" String="mediatypes" />
+	<DetectChar attribute="Media" context="#stay" char="," />
+	<IncludeRules context="FindComments" />
+	<RegExpr attribute="Error" context="#stay" String="\S+" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Media2">
+        <DetectChar attribute="Media" context="#pop#pop" char="}" endRegion="media" />
+	<IncludeRules context="FindRuleSets" />
+      </context>
+
+      <context attribute="Selector Attr" lineEndContext="#stay" name="SelAttr">
+	<DetectChar attribute="Selector Attr" context="#pop" char="]" />
+	<IncludeRules context="FindStrings" />
+      </context>
+
+      <context attribute="Selector Pseudo" lineEndContext="#pop" name="SelPseudo"
+      		fallthrough="true" fallthroughContext="#pop">
+	<keyword attribute="Selector Pseudo" context="#pop" String="pseudoclasses" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Import">
+      	<DetectChar attribute="At Rule" context="#pop" char=";" />
+	<keyword attribute="Media" context="#stay" String="mediatypes" />
+	<IncludeRules context="FindValues" />
+	<IncludeRules context="FindStrings" />
+	<IncludeRules context="FindComments" />
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Comment">
+	<DetectSpaces/>
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="comment" />
+        <IncludeRules context="##Alerts" />
+	<DetectIdentifier/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="RuleSet">
+        <DetectChar attribute="Property" context="#pop" char="}" endRegion="ruleset" />
+        <keyword attribute="Property" context="Rule" String="properties" />
+	<RegExpr attribute="Unknown Property" context="Rule" String="-?[A-Za-z_-]+(?=\s*:)" />
+	<IncludeRules context="FindComments" />
+	<RegExpr attribute="Error" context="#stay" String="\S" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Rule">
+      	<DetectChar attribute="Property" context="Rule2" char=":" />
+	<RegExpr attribute="Error" context="#stay" String="\S" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Rule2">
+      	<DetectChar attribute="Property" context="#pop#pop" char=";" />
+	<DetectChar attribute="Property" context="#pop#pop#pop" char="}" endRegion="ruleset" />
+        <!-- parse property values -->
+	<keyword attribute="Value" context="#stay" String="types" />
+	<keyword attribute="Value" context="#stay" String="colors" />
+	<RegExpr attribute="Value" context="#stay" String="#([0-9A-Fa-f]{3}){1,4}\b" />
+	<keyword attribute="Value" context="PropParen" String="paren" />
+	<RegExpr attribute="Important" context="#stay" String="!important\b" />
+	<IncludeRules context="FindValues" />
+	<IncludeRules context="FindStrings" />
+	<IncludeRules context="FindComments" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="PropParen">
+        <DetectChar attribute="Value" context="PropParen2" char="(" />
+	<IncludeRules context="FindComments" />
+	<RegExpr attribute="Error" context="#stay" String="\S" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="PropParen2">
+        <DetectChar attribute="Value" context="#pop#pop" char=")" />
+	<IncludeRules context="FindValues" />
+	<IncludeRules context="FindStrings" />
+	<IncludeRules context="FindComments" />
+      </context>
+
+      <!-- string contexts -->
+      <context attribute="String" lineEndContext="#stay" name="StringDQ">
+        <DetectChar attribute="String" context="#pop" char="&quot;" />
+        <IncludeRules context="InsideString" />
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="StringSQ">
+        <DetectChar attribute="String" context="#pop" char="'" />
+        <IncludeRules context="InsideString" />
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="InsideString">
+        <RegExpr attribute="String" context="#stay" String="\\[&quot;']" />
+	<DetectIdentifier/>
+      </context>
+
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Property"  defStyleNum="dsKeyword"/>
+      <itemData name="Unknown Property"  defStyleNum="dsKeyword" italic="1"/>
+      <itemData name="Media"  defStyleNum="dsDecVal" bold="1"/>
+      <itemData name="At Rule"  defStyleNum="dsDecVal" />
+      <itemData name="String"  defStyleNum="dsString" />
+      <itemData name="Value"  defStyleNum="dsDataType" />
+      <itemData name="Important" defStyleNum="dsKeyword" />
+      <itemData name="Selector Attr" defStyleNum="dsChar" />
+      <itemData name="Selector Id"  defStyleNum="dsFloat" bold="1"/>
+      <itemData name="Selector Class"  defStyleNum="dsFloat" />
+      <itemData name="Selector Pseudo"  defStyleNum="dsDecVal" />
+      <itemData name="Comment" defStyleNum="dsComment" />
+      <itemData name="Region Marker" defStyleNum="dsRegionMarker"/>
+      <itemData name="Alert" defStyleNum="dsAlert"/>
+      <itemData name="Error" defStyleNum="dsError"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <keywords casesensitive="0" weakDeliminator="-%"/>
+    <comments>
+      <comment name="multiLine" start="/*" end="*/" />
+    </comments>
+  </general>
+</language>
diff --git a/xml/d.xml b/xml/d.xml
new file mode 100644
--- /dev/null
+++ b/xml/d.xml
@@ -0,0 +1,484 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!--
+  ========================================================================
+
+  D.XML supports syntax highlighting for the D programming language under Kate.
+
+  Copyright (C) 2007 - Diggory Hardy <diggory.hardy@gmail.com>
+  Copyright (C) 2007 - Aziz Köksal <aziz.koeksal@gmail.com>
+  Copyright (C) 2007 - Jari-Matti Mäkelä <jmjm@iki.fi>
+  Copyright (C) 2004 - Simon J Mackenzie <project.katedxml@smackoz.fastmail.fm>
+
+  This code is released under the LGPL as part of kdelibs/kate.
+
+  ========================================================================
+
+  D is a next generation language written by Walter Bright of Digital Mars fame.
+  Digital Mars C, C++ and D Compilers can be obtained from http://www.digitalmars.com/
+
+  ========================================================================
+
+  Updates for D.XML can be obtained from http://kate.kde.org/hl/
+
+  UPDATE HISTORY:-
+  2007.09.10 - D.XML 1.44 - D 1.021/2.004 - Added __EOF__ to specialtokens.
+                                          - Replaced float regexps with more accurate ones. Not sure about speed.
+                                          - Fixed Octal regexp not to match 0_ .
+  2007.07.24 - D.XML 1.43 - D 1.020/2.003 - Added System to ltypes.
+                                          - Improved matching of version declarations.
+                                          - Fixed matching of hexadecimal floats.
+                                          - Deprecated style is stroked out again.
+  2007.07.21 - D.XML 1.42 - D 1.018/2.002 - d.xml validates again according to language.xml.
+                                          - HTML entities are highlighted now.
+                                          - Numbers before and after the slice operator are not highl. as floats anymore.
+                                          - Added C++ to ltypes.
+                                          - Improved matching of module/import declarations.
+  2007.07.01 - D.XML 1.41 - D 1.017/2.001 - fixed matching of numbers, added deprecated style, minor changes to styles, updated authors line
+  2007.07.01 - D.XML 1.40 - D 1.017/2.001 - matches now .di extensions, removed phobos-specific printf/writef and added
+                                          - library defined symbols string, wstring, dstring, size_t, ptrdiff_t, hash_t,
+                                          - Error, Exception, Object, TypeInfo and ClassInfo
+  2007.06.30 - D.XML 1.39 - D 1.017 - matching is much faster now, added "lib" to pragma types, added special tokens,
+                                    - /+ +/ can be nested now, numbers are matched more correctly, character literals don't span multiple lines anymore
+                                    - escape sequences inside strings and character literals are highlighted,
+                                    - non-hex characters in hex strings are highlighted with the Error style,
+                                    - using more default styles instead of custom ones
+  2007.04.11 - D.XML 1.38 - D 1.011 - ref, macro keywords are now supported, fixed \\ inside a string, updated author
+  2007.02.12 - D.XML 1.37 - D 1.006 - bool, foreach_reverse, lazy, scope and typeid keywords are now supported, fixed \"
+                                    - inside a string, fixed ending of wysiwyg strings.
+  2004.08.15 - D.XML 1.36 - D 0.98  - Current release of D.
+                                    - package, writef(strictly speaking writef isn't a keyword) - keywords are now supported.
+  2004.??.?? - D.XML 1.35 - D 0.??  - Not sure how this release got posted!
+  2004.05.23 - D.XML 1.34 - D 0.90  - updated.
+  2004.05.19 - D.XML 1.33 - D 0.89  - mixin - keyword is now supported.
+  2004.05.19 - D.XML 1.32 - D 0.77  - pragma, typeof - keywords are now supported.
+  2004.05.19 - D.XML 1.31 - D 0.76  - is - keyword is now supported.
+  2003.09.06 - D.XML 1.30 - D 0.71  - foreach - keyword is now supported.
+  2003.08.18 - D.XML 1.20 - D 0.69  - floats are now supported.
+                                    - embedded underscores in integer and float literals are now supported.
+  2003.08.11 - D.XML 1.10           - updated.
+  2003.07.18 - D.XML 1.00           - First released.
+
+  TODO:- Deliminated strings and Token strings (D2.0) are not supported.
+
+   ========================================================================
+-->
+
+<language name="D" section="Sources" extensions="*.d;*.D;*.di;*.DI;" mimetype="text/x-dsrc" version="1.43" kateversion="2.2" casesensitive="true" author="Aziz Köksal (aziz.koeksal@gmail.com), Jari-Matti Mäkelä (jmjm@iki.fi), Simon J Mackenzie (project.katedxml@smackoz.fastmail.fm)" license="LGPL">
+  <highlighting>
+    <list name="keywords">
+      <item> abstract </item>
+      <item> alias </item>
+      <item> align </item>
+      <item> asm </item>
+      <item> auto </item>
+
+      <item> body </item>
+      <item> break </item>
+
+      <item> case </item>
+      <item> cast </item>
+      <item> catch </item>
+      <item> class </item>
+      <item> const </item>
+      <item> continue </item>
+
+      <item> default </item>
+      <item> delegate </item>
+      <item> delete </item>
+      <item> do </item>
+
+      <item> else </item>
+      <item> enum </item>
+      <item> export </item>
+
+      <item> false </item>
+      <item> final </item>
+      <item> finally </item>
+      <item> for </item>
+      <item> foreach </item>
+      <item> foreach_reverse </item>
+      <item> function </item>
+
+      <item> goto </item>
+
+      <item> if </item>
+      <item> in </item>
+      <item> inout </item>
+      <item> interface </item>
+      <item> invariant </item>
+      <item> is </item>
+
+      <item> lazy </item>
+
+      <item> macro </item>
+      <item> mixin </item>
+
+      <item> new </item>
+      <item> null </item>
+
+      <item> out </item>
+      <item> override </item>
+
+      <item> package </item>
+      <item> private </item>
+      <item> protected </item>
+      <item> public </item>
+
+      <item> ref </item>
+      <item> return </item>
+
+      <item> scope </item>
+      <item> static </item>
+      <item> struct </item>
+      <item> super </item>
+      <item> switch </item>
+      <item> synchronized </item>
+
+      <item> template </item>
+      <item> this </item>
+      <item> throw </item>
+      <item> true </item>
+      <item> try </item>
+      <item> typedef </item>
+      <item> typeid </item>
+      <item> typeof </item>
+
+      <item> union </item>
+
+      <item> volatile </item>
+
+      <item> while </item>
+      <item> with </item>
+    </list>
+
+    <list name="deprecated">
+      <item> deprecated </item>
+    </list>
+
+    <list name="modules">
+      <item> module </item>
+      <item> import </item>
+    </list>
+
+    <list name="types">
+      <item> void </item>
+      <item> bool </item>
+      <item> byte </item>
+      <item> ubyte </item>
+      <item> short </item>
+      <item> ushort </item>
+      <item> int </item>
+      <item> uint </item>
+      <item> long </item>
+      <item> ulong </item>
+      <item> cent </item>
+      <item> ucent </item>
+      <item> float </item>
+      <item> double </item>
+      <item> real </item>
+      <item> ireal </item>
+      <item> ifloat </item>
+      <item> idouble </item>
+      <item> creal </item>
+      <item> cfloat </item>
+      <item> cdouble </item>
+      <item> char </item>
+      <item> wchar </item>
+      <item> dchar </item>
+    </list>
+
+    <list name="libsymbols">
+      <item> string </item>
+      <item> wstring </item>
+      <item> dstring </item>
+      <item> size_t </item>
+      <item> ptrdiff_t </item>
+      <item> hash_t </item>
+      <item> Error </item>
+      <item> Exception </item>
+      <item> Object </item>
+      <item> TypeInfo </item>
+      <item> ClassInfo </item>
+    </list>
+
+    <list name="linkage">
+      <item> extern </item>
+    </list>
+
+    <list name="ltypes">
+      <item> C </item>
+      <!-- <item> C++ </item> --><!-- is handled specially in Linkage rule -->
+      <item> D </item>
+      <item> Windows </item>
+      <item> Pascal </item>
+      <item> System </item>
+    </list>
+
+    <list name="debug">
+      <item> debug </item>
+    </list>
+
+    <list name="assert">
+      <item> assert </item>
+    </list>
+
+    <list name="pragma">
+      <item> pragma </item>
+    </list>
+
+    <list name="ptypes">
+      <item> msg </item>
+      <item> lib </item>
+    </list>
+
+    <list name="version">
+      <item> version </item>
+    </list>
+
+    <list name="vtypes">
+      <item> DigitalMars </item>
+      <item> X86 </item>
+      <item> AMD64 </item>
+      <item> Windows </item>
+      <item> Win32 </item>
+      <item> Win64 </item>
+      <item> linux </item>
+      <item> LittleEndian </item>
+      <item> BigEndian </item>
+      <item> D_InlineAsm </item>
+      <item> none </item>
+    </list>
+
+    <list name="specialtokens">
+      <item> __FILE__ </item>
+      <item> __LINE__ </item>
+      <item> __DATE__ </item>
+      <item> __TIME__ </item>
+      <item> __TIMESTAMP__ </item>
+      <item> __VENDOR__ </item>
+      <item> __VERSION__ </item>
+      <item> __EOF__ </item>
+    </list>
+
+    <list name="unittest">
+      <item> unittest </item>
+    </list>
+
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="normal">
+        <keyword attribute="Keyword"        context="#stay"      String="keywords"/>
+        <keyword attribute="Module"         context="ModuleName" String="modules"/>
+        <keyword attribute="Type"           context="#stay"      String="types"/>
+        <keyword attribute="LibrarySymbols" context="#stay"      String="libsymbols"/>
+        <keyword attribute="Linkage"        context="Linkage"    String="linkage"/>
+        <keyword attribute="Debug"          context="#stay"      String="debug"/>
+        <keyword attribute="Assert"         context="#stay"      String="assert"/>
+        <keyword attribute="Pragma"         context="Pragmas"    String="pragma"/>
+        <keyword attribute="Version"        context="Version"    String="version"/>
+        <keyword attribute="Unit Test"      context="#stay"      String="unittest"/>
+        <keyword attribute="SpecialTokens"  context="#stay"      String="specialtokens"/>
+        <keyword attribute="Deprecated"     context="Deprecated" String="deprecated"/>
+
+        <!-- Scan r" or x" before scanning Normal Text -->
+        <Detect2Chars attribute="RawString" context="RawString" char="r" char1="&quot;"/>
+        <Detect2Chars attribute="HexString" context="HexString" char="x" char1="&quot;"/>
+        <DetectIdentifier attribute="Normal Text"/>
+
+        <HlCStringChar attribute="EscapeString" context="#pop"/>
+        <Detect2Chars attribute="EscapeString" context="UnicodeShort"   char="\" char1="u"/>
+        <Detect2Chars attribute="EscapeString" context="UnicodeLong"   char="\" char1="U"/>
+        <Detect2Chars attribute="EscapeString" context="HTMLEntity"   char="\" char1="&amp;"/>
+
+        <DetectChar attribute="Char"     context="CharLiteral" char="'"/>
+        <DetectChar attribute="String"   context="String"      char="&quot;"/>
+        <DetectChar attribute="BQString" context="BQString"    char="`"/>
+
+        <Detect2Chars attribute="Comment" context="CommentLine"   char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="CommentBlock" char="/" char1="*" beginRegion="CommentBlock"/>
+        <Detect2Chars attribute="Comment" context="CommentNested" char="/" char1="+" beginRegion="CommentNested"/>
+
+        <DetectChar attribute="Normal Text" context="#stay" char="{" beginRegion="BraceA" />
+        <DetectChar attribute="Normal Text" context="#stay" char="}" endRegion="BraceA" />
+
+        <!-- Match ... and .. before numbers are matched. -->
+        <StringDetect attribute="Normal Text" context="#pop" String="..."/>
+        <Detect2Chars attribute="Normal Text"   char="." char1="."/>
+
+        <!-- Float -->
+        <!-- Floats must be matched before Binary|Octal|Hex|Integer -->
+        <!-- Works as is supported by gdc 0.24; in particular exponents cannot start with _ -->
+        
+        <!-- Hexadecimal float with decimal exponent-->
+        <!-- (old regexp: 0[xX]_*[\da-fA-F][\da-fA-F_]*\.?[\da-fA-F_]*[pP][-+]?\d[\d_]*[fFL]?i? ) -->
+        <RegExpr attribute="Float" context="#pop" String="0[xX][_a-fA-F\d]*(\.[_a-fA-F\d]*)?[pP][-+]?[\d]+[_\d]*[fFL]?i?"/>
+        <!-- Old float regexps:
+        - Float starting with a dot
+        <RegExpr attribute="Float" context="#pop" String="\.\d[\d_]*([eE][-+]?\d[\d_]*)?[fFL]?i?"/>
+        - Float with a non-optional exponent
+        <RegExpr attribute="Float" context="#pop" String="\d[\d_]*[eE][-+]?\d[\d_]*[fFL]?i?"/>
+        - Float with a dot after the integer part
+        - (?!\.) looks ahead and avoids matching the slice operator
+        <RegExpr attribute="Float" context="#pop" String="\d[\d_]*\.(?!\.)[\d_]*([eE][-+]?\d[\d_]*)?[fFL]?i?"/>
+        - Integer floats
+        <RegExpr attribute="Float" context="#pop" String="\d[\d_]*([fF]i?|[fFL]?i)"/>
+        -->
+        <!-- All floats except integers -->
+        <!-- RegExpr is branched rather than using look aheads for efficiency at the expense of extra length -->
+        <RegExpr attribute="Float" context="#pop" String="[\d][_\d]*(\.(?!\.)[_\d]*([eE][-+]?[\d]+[_\d]*)?[fFL]?i?|[eE][-+]?[\d]+[_\d]*[fFL]?i?|[fF]i?|[fFL]?i)"/>
+        <RegExpr attribute="Float" context="#pop" String="\.[\d][_\d]*([eE][-+]?[\d]+[_\d]*)?[fFL]?i?"/>
+
+        <!-- Binary|Octal|Hex|Integer -->
+        <RegExpr attribute="Binary"  context="#pop" String="0[bB]_*[01][01_]*(L[uU]?|[uU]L?)?"/>
+        <!-- Octal must be matched before Integer -->
+        <RegExpr attribute="Octal"   context="#pop" String="0_*[0-7][0-7_]*(L[uU]?|[uU]L?)?"/>
+        <RegExpr attribute="Hex"     context="#pop" String="0[xX]_*[\da-fA-F][\da-fA-F_]*(L[uU]?|[uU]L?)?"/>
+        <RegExpr attribute="Integer" context="#pop" String="\d+[\d_]*(L[uU]?|[uU]L?)?"/>
+
+        <StringDetect attribute="Pragma" context="#pop" String="#line"/>
+      </context>
+
+      <!-- \u 4HexDigits -->
+      <context attribute="EscapeString" lineEndContext="#pop" name="UnicodeShort">
+        <RegExpr attribute="EscapeString" context="#pop" String="[\da-fA-F]{4}"/>
+      </context>
+      <!-- \U 8HexDigits -->
+      <context attribute="EscapeString" lineEndContext="#pop" name="UnicodeLong">
+        <RegExpr attribute="EscapeString" context="#pop" String="[\da-fA-F]{8}"/>
+      </context>
+      <!-- \& Alpha Alphanumerical+ ; -->
+      <context attribute="EscapeString" lineEndContext="#pop" name="HTMLEntity" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="EscapeString" context="#pop" String="[a-zA-Z]\w+;"/>
+      </context>
+
+      <context attribute="Module Name" lineEndContext="#stay" name="ModuleName">
+        <Detect2Chars attribute="Comment"     context="CommentLine"   char="/" char1="/"/>
+        <Detect2Chars attribute="Comment"     context="CommentBlock" char="/" char1="*" beginRegion="CommentBlock"/>
+        <Detect2Chars attribute="Comment"     context="CommentNested" char="/" char1="+" beginRegion="CommentNested"/>
+        <RegExpr context="#pop" String="[^\s\w.:,]"/>
+      </context>
+
+      <context attribute="Deprecated" lineEndContext="#stay" name="Deprecated">
+        <Detect2Chars attribute="Comment"     context="CommentLine"   char="/" char1="/"/>
+        <Detect2Chars attribute="Comment"     context="CommentBlock"  char="/" char1="*" beginRegion="CommentBlock"/>
+        <Detect2Chars attribute="Comment"     context="CommentNested" char="/" char1="+" beginRegion="CommentNested"/>
+        <RegExpr      attribute="Normal Text" context="#pop" String="[;({=]" />
+      </context>
+
+      <context attribute="Linkage" lineEndContext="#pop" name="Linkage" fallthrough="true" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="Linkage2" char="("/>
+      </context>
+      <context attribute="Linkage" lineEndContext="#pop" name="Linkage2" fallthrough="true" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <StringDetect attribute="Linkage Type" context="#pop" String="C++"/>
+        <keyword    attribute="Linkage Type" context="#pop" String="ltypes"/>
+        <RegExpr attribute="Error" context="#pop" String="[^)]+"/>
+      </context>
+
+      <context attribute="Version" lineEndContext="#pop" name="Version" fallthrough="true" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text"  context="Version2"  char="="/>
+        <DetectChar attribute="Normal Text"  context="Version2" char="("/>
+        <DetectChar attribute="Normal Text"  context="#pop"  char=";"/>
+        <DetectChar attribute="Normal Text"  context="#pop" char=")"/>
+        <RegExpr attribute="Error" context="#pop" String="[^\n]+"/>
+      </context>
+      <context attribute="Version" lineEndContext="#pop" name="Version2" fallthrough="true" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <keyword    attribute="Version Type" context="#pop" String="vtypes"/>
+        <DetectIdentifier attribute="Normal Text" context="#pop"/>
+        <Int attribute="Integer" context="#pop"/>
+        <RegExpr attribute="Error" context="#pop" String="[^);]+"/>
+      </context>
+
+      <context attribute="Pragma" lineEndContext="#pop" name="Pragmas">
+        <DetectChar attribute="Normal Text"  context="#stay" char="("/>
+        <keyword    attribute="Version Type" context="#pop" String="ptypes"/>
+        <DetectIdentifier attribute="Normal Text" context="#pop"/>
+      </context>
+
+      <!-- Strings -->
+      <!-- r"..." -->
+      <context attribute="RawString" lineEndContext="#stay" name="RawString">
+        <DetectChar attribute="RawString" context="#pop" char="&quot;"/>
+      </context>
+      <!-- `...` -->
+      <context attribute="BQString" lineEndContext="#stay" name="BQString">
+        <DetectChar attribute="BQString" context="#pop" char="`"/>
+      </context>
+      <!-- x"..." -->
+      <context attribute="HexString" lineEndContext="#stay" name="HexString">
+        <DetectChar attribute="HexString" context="#pop" char="&quot;"/>
+        <RegExpr attribute="Error" context="#stay" String="[^\sa-fA-F\d&quot;]+" />
+      </context>
+      <!-- '...' -->
+      <context attribute="Char" lineEndContext="#pop" name="CharLiteral" fallthrough="true" fallthroughContext="#pop">
+        <HlCStringChar attribute="EscapeSequence" context="#stay"/>
+        <DetectChar    attribute="Char" context="#pop"  char="'"/>
+        <RegExpr attribute="EscapeSequence" context="#stay" String="\\(u[\da-fA-F]{4}|U[\da-fA-F]{8}|&amp;[a-zA-Z]\w+;)"/>
+        <DetectChar   attribute="Char" context="#pop"  char="'"/>
+        <RegExpr attribute="Char" context="#stay" String=".'"/>
+      </context>
+      <!-- "..." -->
+      <context attribute="String" lineEndContext="#stay" name="String">
+        <Detect2Chars attribute="String" context="#stay" char="\" char1="&quot;"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+        <HlCStringChar attribute="EscapeSequence"/>
+        <RegExpr attribute="EscapeSequence" context="#stay" String="\\(u[\da-fA-F]{4}|U[\da-fA-F]{8}|&amp;[a-zA-Z]\w+;)" />
+      </context>
+
+      <!-- Comments -->
+      <context attribute="Comment" lineEndContext="#pop" name="CommentLine"/>
+      <context attribute="Comment" lineEndContext="#stay" name="CommentBlock">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="CommentBlock"/>
+      </context>
+      <context attribute="Comment" lineEndContext="#stay" name="CommentNested">
+       <Detect2Chars attribute="Comment" context="CommentNested" char="/" char1="+" beginRegion="CommentNested"/>
+       <Detect2Chars attribute="Comment" context="#pop" char="+" char1="/" endRegion="CommentNested"/>
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text"    defStyleNum="dsNormal"/>
+      <itemData name="Keyword"        defStyleNum="dsKeyword"/>
+      <itemData name="Type"           defStyleNum="dsDataType"/>
+      <itemData name="Integer"        defStyleNum="dsDecVal"/>
+      <itemData name="Binary"         defStyleNum="dsBaseN"/>
+      <itemData name="Octal"          defStyleNum="dsBaseN"/>
+      <itemData name="Hex"            defStyleNum="dsBaseN"/>
+      <itemData name="Float"          defStyleNum="dsFloat"/>
+
+      <itemData name="LibrarySymbols" defStyleNum="dsDataType"/>
+      <itemData name="Deprecated"     defStyleNum="dsComment" strikeOut="true"/>
+      <itemData name="SpecialTokens"  defStyleNum="dsNormal"   color="#00aa00"/>
+      <itemData name="Module"         defStyleNum="dsKeyword"  color="#0000ff" selColor="#ffffff"/>
+      <itemData name="Module Name"    defStyleNum="dsNormal"  color="#0000ff" selColor="#ffffff"/>
+      <itemData name="Linkage"        defStyleNum="dsKeyword"  color="#ff0000" selColor="#ffffff"/>
+      <itemData name="Linkage Type"   defStyleNum="dsNormal" color="#ff0000" selColor="#ffffff" bold="1"/>
+      <itemData name="Debug"          defStyleNum="dsKeyword"  color="#ff00ff" selColor="#ffffff"/>
+      <itemData name="Assert"         defStyleNum="dsKeyword"  color="#0000ff" selColor="#ffffff"/>
+      <itemData name="Version"        defStyleNum="dsKeyword"  color="#ff0000" selColor="#ffffff"/>
+      <itemData name="Version Type"   defStyleNum="dsNormal" color="#ff0000" selColor="#ffffff" bold="1"/>
+      <itemData name="Unit Test"      defStyleNum="dsKeyword"  color="#ff00ff" selColor="#ffffff" bold="1"/>
+      <itemData name="Pragma"         defStyleNum="dsKeyword"  color="#00aa00" selColor="#ffffff" bold="1"/>
+
+      <itemData name="EscapeString"   defStyleNum="dsString"/>
+      <itemData name="EscapeSequence" defStyleNum="dsString" color="#00aa88" selColor="#ff0000"/>
+      <itemData name="String"         defStyleNum="dsString"/>
+      <itemData name="Char"           defStyleNum="dsChar"/>
+      <itemData name="RawString"      defStyleNum="dsString"      color="#a100a1" selColor="#ff00ff"/>
+      <itemData name="BQString"       defStyleNum="dsString"    color="#a100a1" selColor="#ff00ff"/>
+      <itemData name="HexString"      defStyleNum="dsString"    color="#a10022" selColor="#ff0055"/>
+
+      <itemData name="Comment"        defStyleNum="dsComment"/>
+      <itemData name="Error"          defStyleNum="dsError"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+    <comment name="singleLine" start="//"/>
+    <comment name="multiLine"  start="/+" end="+/" region="CommentNested"/>
+    </comments>
+    <keywords casesensitive="true"/>
+  </general>
+</language>
diff --git a/xml/djangotemplate.xml b/xml/djangotemplate.xml
new file mode 100644
--- /dev/null
+++ b/xml/djangotemplate.xml
@@ -0,0 +1,328 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+	<!ENTITY name    "[A-Za-z_:][\w.:_-]*">
+	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
+]>
+<language name="Django HTML Template" version="1.2" kateversion="2.4" section="Markup" extensions="*.htm;*.html" mimetype="text/html"  author="Matthew Marshall (matthew@matthewmarshall.org)" license="LGPL" priority="9">
+
+<!--
+    Based off of the katepart html syntax highlighting by Wilbert Berendsen.
+
+    Email me with any bugs/suggestions/requests!
+-->
+
+<highlighting>
+
+<list name="blocktags">
+    <item>for</item>
+    <item>block</item>
+    <item>if</item>
+    <item>ifequal</item>
+    <item>ifnotequal</item>
+    <item>ifchanged</item>
+    <item>blocktrans</item>
+    <item>spaceless</item>
+</list>
+
+<list name="endblocktags">
+    <item>endfor</item>
+    <item>endblock</item>
+    <item>endif</item>
+    <item>endifequal</item>
+    <item>endifnotequal</item>
+    <item>endifchanged</item>
+    <item>endblocktrans</item>
+    <item>endspaceless</item>
+</list>
+
+<contexts>
+  <context name="Start" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="Mismatched Block Tag" context="#stay" String="\{%\s*end[a-z]+\s*%\}" />
+    <IncludeRules context="FindTemplate" />
+    <IncludeRules context="FindHTML" />
+  </context>
+
+  <context name="In Block" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr context="#pop" String="\{%\s*end[a-z]+\s*%\}" lookAhead="true" />
+    <IncludeRules context="FindTemplate" />
+    <IncludeRules context="FindHTML" />
+  </context>
+
+  <context name="FindTemplate" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="Template Comment" context="Template Comment" String="\{%\s*comment\s*%\}" beginRegion="templatecomment" />
+    <Detect2Chars attribute="Template Var" context="Template Var" char="{" char1="{" />
+    <Detect2Chars attribute="Template Tag" context="Template Tag" char="{" char1="%" />
+  </context>
+
+  <context name="Template Comment" attribute="Template Comment" lineEndContext="#stay">
+    <RegExpr attribute="Template Comment" context="#pop" String="\{%\s*endcomment\s*%\}" endRegion="templatecomment" />
+  </context>
+
+  <context name="Template Var" attribute="Template Var" lineEndContext="#stay">
+    <Detect2Chars attribute="Template Var" context="#pop" char="}" char1="}" />
+    <DetectChar attribute="Template Filter" context="Template Filter" char='|' />
+    <Detect2Chars attribute="Error" context="#stay" char="{" char1="{" />
+    <Detect2Chars attribute="Error" context="#stay" char="{" char1="%" />
+    <Detect2Chars attribute="Error" context="#stay" char="%" char1="}" />
+  </context>
+
+  <context name="Template Filter" attribute="Template Filter" lineEndContext="#stay">
+    <Detect2Chars attribute="Template Var" context="#pop#pop" char="}" char1="}" />
+    <DetectChar attribute="Template String" char="'" context="Single A-string"/>
+    <DetectChar attribute="Template String" char="&quot;" context="Single Q-string"/>
+    <Detect2Chars attribute="Error" context="#stay" char="{" char1="{" />
+    <Detect2Chars attribute="Error" context="#stay" char="{" char1="%" />
+    <Detect2Chars attribute="Error" context="#stay" char="%" char1="}" />
+  </context>
+
+  <context name="Template Tag" attribute="Template Tag" lineEndContext="#stay">
+      <keyword String="blocktags" context="Found Block Tag" lookAhead="true" attribute="Template Tag" />
+      <DetectIdentifier attribute="Template Tag" context="In Template Tag" />
+  </context>
+
+  <context name="Found Block Tag" attribute="Template Tag" lineEndContext="#stay">
+    <!-- This context is entered when a matching block tag was found through lookAhead.  We need to capture it in an re, so that it can be matched with the end[blockname] tag later -->
+    <RegExpr attribute="Template Tag" String="(&name;)" context="In Block Tag"/>
+  </context>
+
+  <context name="In Block Tag" attribute="Template Tag Argument" dynamic="true" lineEndContext="#stay" >
+    <RegExpr context="#pop#pop#pop" String="\{%\s*end%1\s*%\}" dynamic="true" attribute="Template Tag"/>
+    <RegExpr context="Non Matching Tag" String="\{%\s*end[a-z]+\s*%\}" lookAhead="true" />
+    <Detect2Chars attribute="Template Tag" context="In Block" char="%" char1="}" />
+    <IncludeRules context="In Template Tag" />
+  </context>
+
+  <context name="Non Matching Tag" attribute="Template Tag" lineEndContext="#stay">
+    <keyword String="endblocktags" attribute="Mismatched Block Tag" context="#pop" />
+    <!-- If the mismatched tag is one we don't know about, ignore it. -->
+    <DetectIdentifier attribute="Template Tag" context="#pop" />
+  </context>
+
+  <context name="In Template Tag" attribute="Template Tag Argument" lineEndContext="#stay">
+    <Detect2Chars attribute="Template Tag" context="#pop#pop" char="%" char1="}" />
+    <DetectChar attribute="Template String" char="'" context="Single A-string"/>
+    <DetectChar attribute="Template String" char="&quot;" context="Single Q-string"/>
+    <Detect2Chars attribute="Error" context="#stay" char="{" char1="{" />
+    <Detect2Chars attribute="Error" context="#stay" char="{" char1="%" />
+    <Detect2Chars attribute="Error" context="#stay" char="}" char1="}" />
+  </context>
+
+  <context name="Single A-string" attribute="Template String" lineEndContext="#stay">
+    <HlCStringChar attribute="Template String" context="#stay"/>
+<!--       <RegExpr attribute="Operator" String="%[a-zA-Z]" context="#stay"/> -->
+    <DetectChar attribute="Template String" char="'" context="#pop"/>
+  </context>
+
+  <context name="Single Q-string" attribute="Template String" lineEndContext="#stay">
+    <HlCStringChar attribute="Template String" context="#stay"/>
+<!--       <RegExpr attribute="Operator" String="%[a-zA-Z]" context="#stay"/> -->
+    <DetectChar attribute="Template String" char="&quot;" context="#pop"/>
+  </context>
+
+
+
+  <context name="FindHTML" attribute="Normal Text" lineEndContext="#stay">
+    <DetectSpaces/>
+    <DetectIdentifier/>
+    <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
+    <StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
+    <RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" beginRegion="doctype" />
+    <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
+    <RegExpr attribute="Element" context="CSS" String="&lt;style\b" insensitive="TRUE" beginRegion="style" />
+    <RegExpr attribute="Element" context="JS" String="&lt;script\b" insensitive="TRUE" beginRegion="script" />
+    <RegExpr attribute="Element" context="El Open" String="&lt;pre\b" insensitive="TRUE" beginRegion="pre" />
+    <RegExpr attribute="Element" context="El Open" String="&lt;div\b" insensitive="TRUE" beginRegion="div" />
+    <RegExpr attribute="Element" context="El Open" String="&lt;table\b" insensitive="TRUE" beginRegion="table" />
+    <RegExpr attribute="Element" context="El Open" String="&lt;&name;" />
+    <RegExpr attribute="Element" context="El Close" String="&lt;/pre\b" insensitive="TRUE" endRegion="pre" />
+    <RegExpr attribute="Element" context="El Close" String="&lt;/div\b" insensitive="TRUE" endRegion="div" />
+    <RegExpr attribute="Element" context="El Close" String="&lt;/table\b" insensitive="TRUE" endRegion="table" />
+    <RegExpr attribute="Element" context="El Close" String="&lt;/&name;" />
+    <!-- as long as kde gives DTDs the text/html mimetype--><IncludeRules context="FindDTDRules" />
+    <IncludeRules context="FindEntityRefs" />
+  </context>
+
+  <context name="FindEntityRefs" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
+    <AnyChar attribute="Error" context="#stay" String="&amp;&lt;" />
+  </context>
+
+  <context name="FindPEntityRefs" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
+    <RegExpr attribute="PEntityRef" context="#stay" String="%&name;;" />
+    <AnyChar attribute="Error" context="#stay" String="&amp;%" />
+  </context>
+
+  <context name="FindAttributes" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="Attribute" context="#stay" String="&name;" column="0"/>
+    <RegExpr attribute="Attribute" context="#stay" String="\s+&name;" />
+    <DetectChar attribute="Attribute" context="Value" char="=" />
+  </context>
+
+  <context name="FindDTDRules" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="Doctype" context="Doctype Markupdecl" String="&lt;!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />
+  </context>
+
+
+  <context name="Comment" attribute="Comment" lineEndContext="#stay">
+    <DetectSpaces/>
+    <IncludeRules context="##Alerts" />
+    <IncludeRules context="FindTemplate" />
+    <DetectIdentifier/>
+    <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
+    <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />
+  </context>
+
+  <context name="CDATA" attribute="Normal Text" lineEndContext="#stay">
+    <DetectSpaces/>
+    <DetectIdentifier/>
+    <StringDetect attribute="CDATA" context="#pop" String="]]&gt;" endRegion="cdata" />
+    <StringDetect attribute="EntityRef" context="#stay" String="]]&amp;gt;" />
+  </context>
+
+  <context name="PI" attribute="Normal Text" lineEndContext="#stay">
+    <Detect2Chars attribute="Processing Instruction" context="#pop" char="?" char1="&gt;" endRegion="pi" />
+  </context>
+
+  <context name="Doctype" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Doctype" context="#pop" char="&gt;" endRegion="doctype" />
+    <DetectChar attribute="Doctype" context="Doctype Internal Subset" char="[" beginRegion="int_subset" />
+  </context>
+
+  <context name="Doctype Internal Subset" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Doctype" context="#pop" char="]" endRegion="int_subset" />
+    <IncludeRules context="FindDTDRules" />
+    <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
+    <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
+    <IncludeRules context="FindPEntityRefs" />
+  </context>
+
+  <context name="Doctype Markupdecl" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Doctype" context="#pop" char="&gt;" />
+    <DetectChar attribute="Value" context="Doctype Markupdecl DQ" char="&quot;" />
+    <DetectChar attribute="Value" context="Doctype Markupdecl SQ" char="&apos;" />
+  </context>
+
+  <context name="Doctype Markupdecl DQ" attribute="Value" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="#pop" char="&quot;" />
+    <IncludeRules context="FindPEntityRefs" />
+  </context>
+
+  <context name="Doctype Markupdecl SQ" attribute="Value" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="#pop" char="&apos;" />
+    <IncludeRules context="FindPEntityRefs" />
+  </context>
+
+  <context name="El Open" attribute="Normal Text" lineEndContext="#stay">
+    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" />
+    <DetectChar attribute="Element" context="#pop" char="&gt;" />
+    <IncludeRules context="FindAttributes" />
+    <IncludeRules context="FindTemplate" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="El Close" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Element" context="#pop" char="&gt;" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="El Close 2" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Element" context="#pop#pop#pop" char="&gt;" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="El Close 3" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Element" context="#pop#pop#pop#pop" char="&gt;" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="CSS" attribute="Normal Text" lineEndContext="#stay">
+    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="style" />
+    <DetectChar attribute="Element" context="CSS content" char="&gt;" />
+    <IncludeRules context="FindAttributes" />
+    <IncludeRules context="FindTemplate" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="CSS content" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="Element" context="El Close 2" String="&lt;/style\b" insensitive="TRUE" endRegion="style" />
+    <IncludeRules context="FindTemplate" />
+    <IncludeRules context="##CSS" includeAttrib="true"/>
+  </context>
+
+  <context name="JS" attribute="Normal Text" lineEndContext="#stay">
+    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="script" />
+    <DetectChar attribute="Element" context="JS content" char="&gt;" />
+    <IncludeRules context="FindTemplate" />
+    <IncludeRules context="FindAttributes" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="JS content" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="TRUE" endRegion="script" />
+    <RegExpr attribute="Comment" context="JS comment close" String="//(?=.*&lt;/script\b)" insensitive="TRUE" />
+    <IncludeRules context="FindTemplate" />
+    <IncludeRules context="##JavaScript" includeAttrib="true"/>
+  </context>
+
+  <context name="JS comment close" attribute="Comment" lineEndContext="#pop">
+    <RegExpr attribute="Element" context="El Close 3" String="&lt;/script\b" insensitive="TRUE" endRegion="script" />
+    <IncludeRules context="FindTemplate" />
+    <IncludeRules context="##Alerts" />
+  </context>
+
+  <context name="Value" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Value NQ">
+    <DetectChar attribute="Value" context="Value DQ" char="&quot;" />
+    <DetectChar attribute="Value" context="Value SQ" char="&apos;" />
+    <DetectSpaces />
+  </context>
+
+  <context name="Value NQ" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+    <IncludeRules context="FindEntityRefs" />
+    <IncludeRules context="FindTemplate" />
+    <RegExpr attribute="Value" context="#stay" String="/(?!&gt;)" />
+    <RegExpr attribute="Value" context="#stay" String="[^/&gt;&lt;&quot;&apos;\s]" />
+  </context>
+
+  <context name="Value DQ" attribute="Value" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="#pop#pop" char="&quot;" />
+    <IncludeRules context="FindTemplate" />
+    <IncludeRules context="FindEntityRefs" />
+  </context>
+
+  <context name="Value SQ" attribute="Value" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="#pop#pop" char="&apos;" />
+    <IncludeRules context="FindTemplate" />
+    <IncludeRules context="FindEntityRefs" />
+  </context>
+
+</contexts>
+<itemDatas>
+  <itemData name="Normal Text" defStyleNum="dsNormal" />
+  <itemData name="Comment" defStyleNum="dsComment" />
+  <itemData name="CDATA" defStyleNum="dsBaseN" bold="1" />
+  <itemData name="Processing Instruction" defStyleNum="dsKeyword" />
+  <itemData name="Doctype" defStyleNum="dsDataType" bold="1" />
+  <itemData name="Element" defStyleNum="dsKeyword" />
+  <itemData name="Attribute" defStyleNum="dsOthers" />
+  <itemData name="Value" defStyleNum="dsString" color="#a00" />
+  <itemData name="EntityRef" defStyleNum="dsDecVal" />
+  <itemData name="PEntityRef" defStyleNum="dsDecVal" />
+  <itemData name="Error" defStyleNum="dsError" />
+  <itemData name="Template Var" defStyleNum="dsFunction" />
+  <itemData name="Template Tag" defStyleNum="dsFunction" />
+  <itemData name="Template Tag Argument" defStyleNum="dsFunction" />
+  <itemData name="Template String" defStyleNum="dsString" />
+  <itemData name="Template Comment" defStyleNum="dsComment" />
+  <itemData name="Template Filter" defStyleNum="dsOthers" />
+  <itemData name="Mismatched Block Tag" defStyleNum="dsError" />
+</itemDatas>
+
+</highlighting>
+<general>
+  <comments>
+      <comment name="multiLine" start="{% comment %}" end="{% endcomment %}" region="templatecomment" />
+  </comments>
+</general>
+</language>
diff --git a/xml/doxygen.xml b/xml/doxygen.xml
new file mode 100644
--- /dev/null
+++ b/xml/doxygen.xml
@@ -0,0 +1,480 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+        <!ENTITY wordsep "([][,?;()]|\.$|\.?\s)">     <!-- things that end a TagWord -->
+]>
+<!--
+  This file is part of KDE's kate project.
+
+  Copyright 2004 Dominik Haumann (dhdev@gmx.de)
+  Copyright 2007 Matthew Woehlke (mw_triad@users.sourceforge.net)
+
+ **********************************************************************
+ * This library is free software; you can redistribute it and/or      *
+ * modify it under the terms of the GNU Lesser General Public         *
+ * License as published by the Free Software Foundation; either       *
+ * version 2 of the License, or (at your option) any later version.   *
+ *                                                                    *
+ * This library is distributed in the hope that it will be useful,    *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of     *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  *
+ * Lesser General Public License for more details.                    *
+ *                                                                    *
+ * You should have received a copy of the GNU Lesser General Public   *
+ * License along with this library; if not, write to the              *
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,   *
+ * Boston, MA  02110-1301, USA.                                       *
+ **********************************************************************
+ -->
+<language name="Doxygen" version="1.29" kateversion="2.4" section="Markup" extensions="*.dox;*.doxygen" mimetype="text/x-doxygen" author="Dominik Haumann (dhdev@gmx.de)" license="LGPL">
+  <highlighting>
+    <!-- note: all tags may begin with a \ or @ char
+         so if you add/change tags you have to do it twice -->
+    <list name="TagOnly">
+      <item> \arg </item>
+      <item> \attention </item>
+      <item> \author </item>
+      <item> \callgraph </item>
+      <item> \code </item>
+      <item> \dot </item>
+      <item> \else </item>
+      <item> \endcode </item>
+      <item> \endcond </item>
+      <item> \enddot </item>
+      <item> \endhtmlonly </item>
+      <item> \endif </item>
+      <item> \endlatexonly </item>
+      <item> \endlink </item>
+      <item> \endmanonly </item>
+      <item> \endverbatim </item>
+      <item> \endxmlonly </item>
+      <item> \f[ </item>
+      <item> \f] </item>
+      <item> \f$ </item>
+      <item> \hideinitializer </item>
+      <item> \htmlonly </item>
+      <item> \interface </item>
+      <item> \internal </item>
+      <item> \invariant </item>
+      <item> \~ </item>
+      <item> \@ </item>
+      <item> \$ </item>
+      <item> \\ </item>
+      <item> \# </item>
+      <item> \latexonly </item>
+      <item> \li </item>
+      <item> \manonly </item>
+      <item> \n </item>
+      <item> \nosubgrouping </item>
+      <item> \note </item>
+      <item> \only </item>
+      <item> \post </item>
+      <item> \pre </item>
+      <item> \remarks </item>
+      <item> \return </item>
+      <item> \returns </item>
+      <item> \sa </item>
+      <item> \see </item>
+      <item> \showinitializer </item>
+      <item> \since </item>
+      <item> \test </item>
+      <item> \todo </item>
+      <item> \verbatim </item>
+      <item> \warning </item>
+      <item> \xmlonly </item>
+
+      <item> @arg </item>
+      <item> @attention </item>
+      <item> @author </item>
+      <item> @callgraph </item>
+      <item> @code </item>
+      <item> @dot </item>
+      <item> @else </item>
+      <item> @endcode </item>
+      <item> @endcond </item>
+      <item> @enddot </item>
+      <item> @endhtmlonly </item>
+      <item> @endif </item>
+      <item> @endlatexonly </item>
+      <item> @endlink </item>
+      <item> @endmanonly </item>
+      <item> @endverbatim </item>
+      <item> @endxmlonly </item>
+      <item> @f[ </item>
+      <item> @f] </item>
+      <item> @f$ </item>
+      <item> @hideinitializer </item>
+      <item> @htmlonly </item>
+      <item> @interface </item>
+      <item> @internal </item>
+      <item> @invariant </item>
+      <item> @~ </item>
+      <item> @@ </item>
+      <item> @$ </item>
+      <item> @\ </item>
+      <item> @# </item>
+      <item> @latexonly </item>
+      <item> @li </item>
+      <item> @manonly </item>
+      <item> @n </item>
+      <item> @nosubgrouping </item>
+      <item> @note </item>
+      <item> @only </item>
+      <item> @post </item>
+      <item> @pre </item>
+      <item> @remarks </item>
+      <item> @return </item>
+      <item> @returns </item>
+      <item> @sa </item>
+      <item> @see </item>
+      <item> @showinitializer </item>
+      <item> @since </item>
+      <item> @test </item>
+      <item> @todo </item>
+      <item> @verbatim </item>
+      <item> @warning </item>
+      <item> @xmlonly </item>
+    </list>
+
+    <list name="TagWord">
+      <item> \addtogroup </item>
+      <item> \a </item>
+      <item> \anchor </item>
+      <item> \b </item>
+      <item> \c </item>
+      <item> \class </item>
+      <item> \cond </item>
+      <item> \copydoc </item>
+      <item> \def </item>
+      <item> \dontinclude </item>
+      <item> \dotfile </item>
+      <item> \e </item>
+      <item> \elseif </item>
+      <item> \em </item>
+      <item> \enum </item>
+      <item> \example </item>
+      <item> \exception </item>
+      <item> \exceptions </item>
+      <item> \file </item>
+      <item> \htmlinclude </item>
+      <item> \if </item>
+      <item> \ifnot </item>
+      <item> \include </item>
+      <item> \link </item>
+      <item> \namespace </item>
+      <item> \p </item>
+      <item> \package </item>
+      <item> \ref </item>
+      <item> \relatesalso </item>
+      <item> \relates </item>
+      <item> \retval </item>
+      <item> \throw </item>
+      <item> \throws </item>
+      <item> \verbinclude </item>
+      <item> \version </item>
+      <item> \xrefitem </item>
+
+      <item> @addtogroup </item>
+      <item> @a </item>
+      <item> @anchor </item>
+      <item> @b </item>
+      <item> @c </item>
+      <item> @class </item>
+      <item> @cond </item>
+      <item> @copydoc </item>
+      <item> @def </item>
+      <item> @dontinclude </item>
+      <item> @dotfile </item>
+      <item> @e </item>
+      <item> @elseif </item>
+      <item> @em </item>
+      <item> @enum </item>
+      <item> @example </item>
+      <item> @exception </item>
+      <item> @exceptions </item>
+      <item> @file </item>
+      <item> @htmlinclude </item>
+      <item> @if </item>
+      <item> @ifnot </item>
+      <item> @include </item>
+      <item> @link </item>
+      <item> @namespace </item>
+      <item> @p </item>
+      <item> @package </item>
+      <item> @ref </item>
+      <item> @relatesalso </item>
+      <item> @relates </item>
+      <item> @retval </item>
+      <item> @throw </item>
+      <item> @throws </item>
+      <item> @verbinclude </item>
+      <item> @version </item>
+      <item> @xrefitem </item>
+    </list>
+    <list name="TagParam">
+      <item> \param </item>
+
+      <item> @param </item>
+    </list>
+    <list name="TagWordWord">
+      <item> \image </item>
+
+      <item> @image </item>
+    </list>
+    <list name="TagWordString">
+      <item> \defgroup </item>
+      <item> \page </item>
+      <item> \paragraph </item>
+      <item> \section </item>
+      <item> \struct </item>
+      <item> \subsection </item>
+      <item> \subsubsection </item>
+      <item> \union </item>
+      <item> \weakgroup </item>
+
+      <item> @defgroup </item>
+      <item> @page </item>
+      <item> @paragraph </item>
+      <item> @section </item>
+      <item> @struct </item>
+      <item> @subsection </item>
+      <item> @subsubsection </item>
+      <item> @union </item>
+      <item> @weakgroup </item>
+    </list>
+    <list name="TagString">
+      <item> \addindex </item>
+      <item> \brief </item>
+      <item> \bug </item>
+      <item> \date </item>
+      <item> \deprecated </item>
+      <item> \fn </item>
+      <item> \ingroup </item>
+      <item> \line </item>
+      <item> \mainpage </item>
+      <item> \name </item>
+      <item> \overload </item>
+      <item> \par </item>
+      <item> \short </item>
+      <item> \skip </item>
+      <item> \skipline </item>
+      <item> \typedef </item>
+      <item> \until </item>
+      <item> \var </item>
+
+      <item> @addindex </item>
+      <item> @brief </item>
+      <item> @bug </item>
+      <item> @date </item>
+      <item> @deprecated </item>
+      <item> @fn </item>
+      <item> @ingroup </item>
+      <item> @line </item>
+      <item> @mainpage </item>
+      <item> @name </item>
+      <item> @overload </item>
+      <item> @par </item>
+      <item> @short </item>
+      <item> @skip </item>
+      <item> @skipline </item>
+      <item> @typedef </item>
+      <item> @until </item>
+      <item> @var </item>
+    </list>
+    <contexts>
+    <!-- different formats:
+      @tag                     : TagOnly
+      @tag rest_of_line        : TagString
+      @tag <word>              : TagWord
+      @tag <word> <word>       : TagWordWord
+      @tag <word> rest_of_line : TagWordString
+    -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+        <RegExpr attribute="Comment" context="LineComment" String="//(!|(/(?=[^/]|$)))&lt;?"/>
+        <RegExpr attribute="Comment" context="BlockComment" String="/\*(\*[^*/]|!|[*!]&lt;|\*$)" beginRegion="BlockComment"/>
+        <RegExpr attribute="Region" context="#stay" String="//\s*@\{\s*$" beginRegion="MemberGroup"/>
+        <RegExpr attribute="Region" context="#stay" String="//\s*@\}\s*$"   endRegion="MemberGroup"/>
+        <RegExpr attribute="Region" context="#stay" String="/\*\s*@\{\s*\*/" beginRegion="MemberGroup"/>
+        <RegExpr attribute="Region" context="#stay" String="/\*\s*@\}\s*\*/"   endRegion="MemberGroup"/>
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="LineComment">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <keyword attribute="Tags" context="#stay" String="TagOnly" />
+        <keyword attribute="Tags" context="SL_TagWord" String="TagWord" />
+        <keyword attribute="Tags" context="SL_TagParam" String="TagParam" />
+        <keyword attribute="Tags" context="SL_TagWordWord" String="TagWordWord" />
+        <keyword attribute="Tags" context="SL_TagString" String="TagString" />
+        <keyword attribute="Tags" context="SL_TagWordString" String="TagWordString" />
+        <DetectIdentifier />
+        <StringDetect attribute="HTML Comment" context="SL_htmlcomment" String="&lt;!--" />
+        <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />
+        <RegExpr attribute="HTML Tag" context="SL_htmltag" String="&lt;\/?[a-zA-Z_:][a-zA-Z0-9._:-]*" />
+      </context>
+      <context attribute="Comment" lineEndContext="#stay" name="BlockComment">
+        <DetectSpaces />
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment"/>
+        <IncludeRules context="##Alerts" />
+        <Detect2Chars attribute="Region" context="#stay" char="@" char1="{" />
+        <Detect2Chars attribute="Region" context="#stay" char="@" char1="}" />
+        <keyword attribute="Tags" context="#stay" String="TagOnly" />
+        <keyword attribute="Tags" context="ML_TagWord" String="TagWord" />
+        <keyword attribute="Tags" context="ML_TagParam" String="TagParam" />
+        <keyword attribute="Tags" context="ML_TagWordWord" String="TagWordWord" />
+        <keyword attribute="Tags" context="ML_TagString" String="TagString" />
+        <keyword attribute="Tags" context="ML_TagWordString" String="TagWordString" />
+        <DetectIdentifier />
+        <RegExpr attribute="Tags" context="#stay" String="\\(&lt;|&gt;)" />
+        <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />
+        <RegExpr attribute="HTML Tag" context="ML_htmltag" String="&lt;\/?[a-zA-Z_:][a-zA-Z0-9._:-]*" />
+        <StringDetect attribute="HTML Comment" context="ML_htmlcomment" String="&lt;!--" />
+      </context>
+
+<!-- NOTE: all contexts beginning with ML_ are for multiline comments
+     The following contexts contain a Detect2Chars that looks for a */ sequence to end multiline comments. Singleline comments do not have this limitation - that's why all contexts are copy&pasted and the line <Detect2Chars ... */> is removed. <IncludeRules context="acontext"> could be used instead but it would make context switching much more complex and very hard to understand! (But use IncludeRules where the rules don't refer to another SL_*/ML_* context, to help maintainability.)
+-->
+      <!-- tag contexts -->
+      <context attribute="Comment" lineEndContext="#pop" name="ML_TagWord">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true"/>
+        <IncludeRules context="SL_TagWord" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="ML_TagParam">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true"/>
+        <DetectSpaces />
+        <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[in]" />
+        <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[out]" />
+        <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[in,out]" />
+        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />
+        <RegExpr attribute="Word" context="#stay" String="\S" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="ML_TagWordWord">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true"/>
+        <DetectSpaces />
+        <RegExpr attribute="Word" context="ML_Tag2ndWord" String="\S(?=&wordsep;)" />
+        <RegExpr attribute="Word" context="#stay" String="\S" />
+      </context>
+      <!-- TODO for kate 2.x, convert references to "#pop!ML_TagWord" -->
+      <context attribute="Comment" lineEndContext="#pop#pop" name="ML_Tag2ndWord">
+        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" lookAhead="true"/>
+        <IncludeRules context="SL_Tag2ndWord" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="ML_TagString">
+        <DetectSpaces />
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true"/>
+        <StringDetect attribute="HTML Comment" context="ML_htmlcomment" String="&lt;!--" />
+        <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />
+        <RegExpr attribute="HTML Tag" context="ML_htmltag" String="&lt;\/?[a-zA-Z_:][a-zA-Z0-9._:-]*" />
+        <RegExpr attribute="Description" context="#stay" String="." />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="ML_TagWordString">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true"/>
+        <IncludeRules context="SL_TagWordString" />
+      </context>
+
+      <!-- html contexts -->
+      <context name="ML_htmltag" attribute="Identifier" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true"/>
+        <Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1="&gt;" />
+        <DetectChar attribute="HTML Tag" context="#pop" char="&gt;"/>
+        <RegExpr attribute="Identifier" context="ML_identifiers" String="\s*=\s*"/>
+      </context>
+      <context name="ML_htmlcomment" attribute="HTML Comment" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true"/>
+        <IncludeRules context="##Alerts" />
+        <StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />
+      </context>
+      <context name="ML_identifiers" attribute="Identifier" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true"/>
+        <RegExpr attribute="String" context="#pop" String="\s*#?[a-zA-Z0-9]*" />
+        <DetectChar attribute="Types" context="ML_types1" char="'" />
+        <DetectChar attribute="Types" context="ML_types2" char="&quot;" />
+      </context>
+      <context name="ML_types1" attribute="Types" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true"/>
+        <DetectChar attribute="Types" context="#pop#pop" char="'" />
+      </context>
+      <context name="ML_types2" attribute="Types" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true"/>
+        <DetectChar attribute="Types" context="#pop#pop" char="&quot;" />
+      </context>
+
+<!-- NOTE: all contexts beginning with SL_ are for singleline comments -->
+      <!-- tag contexts -->
+      <context attribute="Comment" lineEndContext="#pop" name="SL_TagWord">
+        <DetectSpaces />
+        <keyword attribute="Tags" context="#pop" String="TagWord" lookAhead="true"/>
+        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />
+        <RegExpr attribute="Word" context="#stay" String="\S" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="SL_TagParam">
+        <DetectSpaces />
+        <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[in]" />
+        <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[out]" />
+        <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[in,out]" />
+        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />
+        <RegExpr attribute="Word" context="#stay" String="\S" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="SL_TagWordWord">
+        <DetectSpaces />
+        <RegExpr attribute="Word" context="SL_Tag2ndWord" String="\S(?=&wordsep;)" />
+        <RegExpr attribute="Word" context="#stay" String="\S" />
+      </context>
+      <!-- TODO for kate 2.x, convert references to "#pop!SL_TagWord" -->
+      <context attribute="Comment" lineEndContext="#pop#pop" name="SL_Tag2ndWord">
+        <DetectSpaces />
+        <RegExpr attribute="Word" context="#pop#pop" String="\S(?=&wordsep;)" />
+        <RegExpr attribute="Word" context="#stay" String="\S" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="SL_TagString">
+        <DetectSpaces />
+        <StringDetect attribute="HTML Comment" context="SL_htmlcomment" String="&lt;!--" />
+        <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />
+        <RegExpr attribute="HTML Tag" context="SL_htmltag" String="&lt;\/?[a-zA-Z_:][a-zA-Z0-9._:-]*" />
+        <RegExpr attribute="Description" context="#stay" String="." />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="SL_TagWordString">
+        <DetectSpaces />
+        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />
+        <RegExpr attribute="Word" context="#stay" String="\S" />
+      </context>
+
+      <!-- html contexts -->
+      <context name="SL_htmltag" attribute="Identifier" lineEndContext="#pop">
+        <Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1="&gt;" />
+        <DetectChar attribute="HTML Tag" context="#pop" char="&gt;"/>
+        <RegExpr attribute="Identifier" context="SL_identifiers" String="\s*=\s*"/>
+      </context>
+      <context name="SL_htmlcomment" attribute="HTML Comment" lineEndContext="#pop">
+        <IncludeRules context="##Alerts" />
+        <StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />
+      </context>
+      <context name="SL_identifiers" attribute="Identifier" lineEndContext="#pop">
+        <RegExpr attribute="String" context="#pop" String="\s*#?[a-zA-Z0-9]*" />
+        <DetectChar attribute="Types" context="SL_types1" char="'" />
+        <DetectChar attribute="Types" context="SL_types2" char="&quot;" />
+      </context>
+      <context name="SL_types1" attribute="Types" lineEndContext="#pop">
+        <DetectChar attribute="Types" context="#pop#pop" char="'" />
+      </context>
+      <context name="SL_types2" attribute="Types" lineEndContext="#pop">
+        <DetectChar attribute="Types" context="#pop#pop" char="&quot;" />
+      </context>
+
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal" />
+      <itemData name="Tags"        defStyleNum="dsKeyword" color="#ca60ca" selColor="#ffffff" bold="1" italic="0" />
+      <itemData name="Word"        defStyleNum="dsKeyword" color="#0095ff" selColor="#ffffff" bold="1" italic="0" />
+      <itemData name="HTML Tag"    defStyleNum="dsKeyword" color="#000000" selColor="#ffffff" bold="1" italic="0" />
+      <itemData name="Description" defStyleNum="dsString"  color="#ff0000" />
+      <itemData name="Comment"     defStyleNum="dsComment" color="#0000ff" selColor="#ffffff" italic="1" />
+      <itemData name="Region"      defStyleNum="dsRegionMarker" />
+      <itemData name="Identifier"  defStyleNum="dsOthers" />
+      <itemData name="HTML Comment" defStyleNum="dsComment" />
+      <itemData name="Types"       defStyleNum="dsDataType" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <keywords casesensitive="0" weakDeliminator="\$~" />
+  </general>
+</language>
diff --git a/xml/dtd.xml b/xml/dtd.xml
new file mode 100644
--- /dev/null
+++ b/xml/dtd.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE language SYSTEM "language.dtd"[
+  <!ENTITY nmtoken "[\-\w\d\.:_]+">
+  <!ENTITY entref  "(#[0-9]+|#[xX][0-9A-Fa-f]+|&nmtoken;);">
+]>
+<language name="DTD" version="1.02" kateversion="2.4" section="Markup" extensions="*.dtd" mimetype="application/xml-dtd" author="Andriy Lesyuk (s-andy@in.if.ua)" license="LGPL">
+  <highlighting>
+
+    <list name="Category">
+      <item>EMPTY</item>
+      <item>ANY</item>
+      <item>CDATA</item>
+      <item>ID</item>
+      <item>IDREF</item>
+      <item>IDREFS</item>
+      <item>NMTOKEN</item>
+      <item>NMTOKENS</item>
+      <item>ENTITY</item>
+      <item>ENTITIES</item>
+      <item>NOTATION</item>
+      <item>PUBLIC</item>
+      <item>SYSTEM</item>
+      <item>NDATA</item>
+    </list>
+
+    <list name="Keywords">
+      <item>#PCDATA</item>
+      <item>#REQUIRED</item>
+      <item>#IMPLIED</item>
+      <item>#FIXED</item>
+    </list>
+
+    <contexts>
+      <context name="Normal" attribute="Normal" lineEndContext="#stay">
+        <DetectSpaces />
+        <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
+        <StringDetect attribute="Processing Instruction" context="PI" String="&lt;?xml" beginRegion="pi" />
+        <StringDetect attribute="Declaration" context="Declaration" String="&lt;!ELEMENT" beginRegion="declaration" />
+        <StringDetect attribute="Declaration" context="Declaration" String="&lt;!ATTLIST" beginRegion="declaration" />
+        <StringDetect attribute="Declaration" context="Declaration" String="&lt;!NOTATION" beginRegion="declaration" />
+        <StringDetect attribute="Declaration" context="Declaration" String="&lt;!ENTITY" beginRegion="declaration" />
+        <DetectIdentifier />
+      </context>
+
+      <context name="Comment" attribute="Comment" lineEndContext="#stay">
+        <DetectSpaces />
+        <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+      </context>
+
+      <context name="PI" attribute="Normal" lineEndContext="#stay">
+        <Detect2Chars attribute="Processing Instruction" context="#pop" char="?" char1="&gt;" endRegion="pi" />
+      </context>
+
+      <context name="Declaration" attribute="Normal" lineEndContext="#stay">
+        <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
+        <Detect2Chars attribute="Comment" context="InlineComment" char="-" char1="-" />
+        <DetectChar attribute="Declaration" context="#pop" char="&gt;" endRegion="declaration" />
+        <DetectChar attribute="String" context="String" char="&quot;" />
+        <RegExpr attribute="Declaration" context="#stay" String="(-|O)\s(-|O)" />
+        <AnyChar attribute="Delimiter" context="#stay" String="(|)," />
+        <RegExpr attribute="Entity" context="#stay" String="(%|&amp;)&entref;" />
+        <AnyChar attribute="Symbol" context="#stay" String="?*+-&amp;" />
+        <RegExpr attribute="Local" context="#stay" String="%\s" />
+        <keyword attribute="Keyword" context="#stay" String="Category" />
+        <keyword attribute="Keyword" context="#stay" String="Keywords" />
+        <RegExpr attribute="Name" context="#stay" String="\b&nmtoken;\b" />
+      </context>
+
+      <context name="String" attribute="String" lineEndContext="#stay">
+        <DetectSpaces />
+        <DetectChar attribute="String" context="#pop" char="&quot;" />
+        <RegExpr attribute="Entity" context="#stay" String="%&nmtoken;;" />
+      </context>
+
+      <context name="InlineComment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces />
+        <Detect2Chars attribute="Comment" context="#pop" char="-" char1="-" />
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+      </context>
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal" defStyleNum="dsNormal" />
+      <itemData name="Comment" defStyleNum="dsComment" />
+      <itemData name="Processing Instruction" defStyleNum="dsKeyword" />
+      <itemData name="Declaration" defStyleNum="dsDataType" bold="1" />
+      <itemData name="Name" defStyleNum="dsFunction" />
+      <itemData name="Delimiter" defStyleNum="dsDecVal" />
+      <itemData name="Symbol" defStyleNum="dsFloat" bold="1" />
+      <itemData name="Keyword" defStyleNum="dsKeyword" />
+      <itemData name="String" defStyleNum="dsString" />
+      <itemData name="Entity" defStyleNum="dsDecVal" />
+      <itemData name="Local" defStyleNum="dsDecVal" bold="1" />
+    </itemDatas>
+  </highlighting>
+
+  <general>
+    <comments>
+      <comment name="multiLine" start="&lt;!--" end="--&gt;" />
+    </comments>
+  </general>
+
+</language>
+<!-- kate: indent-width 2; indent-mode normal; tab-indents on; -->
+
diff --git a/xml/eiffel.xml b/xml/eiffel.xml
new file mode 100644
--- /dev/null
+++ b/xml/eiffel.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!--
+Eiffel syntax highlighting for Kate and Kwrite editors
+
+Change log:
+2003-12-16 	Revised existing version by adding several missing keywords. Added predefined
+				entities as a separate word list. Moved from numeric to named contexts.
+				Changed version to 1.02.
+
+Author of version 1.02: Sebastian Vuorinen
+-->
+<language name="Eiffel" version="1.02" kateversion="2.1" section="Sources" extensions="*.e" mimetype="text/x-eiffel-src" author="Sebastian Vuorinen" license="">
+	<highlighting>
+		<list name="keywords">
+			<item> agent </item>
+			<item> alias </item>
+			<item> all </item>
+			<item> and </item>
+			<item> as </item>
+			<item> assign </item>
+			<item> class </item>
+			<item> convert </item>
+			<item> create </item>
+			<item> creation </item>
+			<item> debug </item>
+			<item> deferred </item>
+			<item> do </item>
+			<item> else </item>
+			<item> elseif </item>
+			<item> end </item>
+			<item> expanded </item>
+			<item> export </item>
+			<item> external </item>
+			<item> feature </item>
+			<item> from </item>
+			<item> frozen </item>
+			<item> if </item>
+			<item> implies </item>
+			<item> indexing </item>
+			<item> infix </item>
+			<item> inherit </item>
+			<item> inspect </item>
+			<item> is </item>
+			<item> like </item>
+			<item> local </item>
+			<item> loop </item>
+			<item> not </item>
+			<item> obsolete </item>
+			<item> old </item>
+			<item> once </item>
+			<item> or </item>
+			<item> prefix </item>
+			<item> pure </item>
+			<item> redefine </item>
+			<item> reference </item>
+			<item> rename </item>
+			<item> rescue </item>
+			<item> retry </item>
+			<item> separate </item>
+			<item> then </item>
+			<item> undefine </item>
+		</list>
+
+		<list name="predefined-entities">
+			<item> Current </item>
+			<item> False </item>
+			<item> Precursor </item>
+			<item> Result </item>
+			<item> True </item>
+			<item> TUPLE </item>
+		</list>
+
+		<list name="assertions">
+			<item> check </item>
+			<item> ensure </item>
+			<item> require </item>
+			<item> variant </item>
+			<item> invariant </item>
+		</list>
+
+		<contexts>
+			<context name = "Normal" attribute = "Normal Text" lineEndContext="#stay">
+				<keyword attribute = "Keyword" String = "keywords" context="#stay" />
+				<keyword attribute = "Predefined entities" String = "predefined-entities" context="#stay" />
+				<keyword attribute = "Assertions" String = "assertions" context="#stay" />
+
+				<Int attribute = "Decimal" context="#stay" />
+				<Float attribute = "Float" context="#stay" />
+				<HlCChar attribute = "Char" context="#stay" />
+				<DetectChar attribute = "String" char = "&quot;" context="Quoted String" />
+
+				<Detect2Chars attribute = "Comment" char = "-" char1 = "-" context="Documentation" />
+			</context>
+
+			<context name = "Quoted String" attribute = "String" lineEndContext="#pop">
+				<DetectChar attribute = "String" char = "&quot;" context="#pop" />
+			</context>
+
+			<context name = "Documentation" attribute="Comment" lineEndContext="#pop" />
+		</contexts>
+
+		<itemDatas>
+			<itemData name="Normal Text" defStyleNum="dsNormal" />
+
+			<itemData name="Keyword"     defStyleNum="dsKeyword" />
+			<itemData name="Predefined entities" defStyleNum="dsOthers" />
+			<itemData name="Assertions"  defStyleNum="dsOthers" />
+
+			<itemData name="Decimal"     defStyleNum="dsDecVal" />
+			<itemData name="Float"       defStyleNum="dsFloat" />
+			<itemData name="Char"        defStyleNum="dsChar" />
+			<itemData name="String"      defStyleNum="dsString" />
+
+			<itemData name="Comment"     defStyleNum="dsComment" />
+		</itemDatas>
+	</highlighting>
+
+	<general>
+		<comments>
+			<comment name="singleLine" start="--" />
+		</comments>
+		<keywords casesensitive="1" />
+	</general>
+</language>
diff --git a/xml/erlang.xml b/xml/erlang.xml
new file mode 100644
--- /dev/null
+++ b/xml/erlang.xml
@@ -0,0 +1,250 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+          <!ENTITY atomstr    "\b[a-z][_a-z@-Z0-9]*(?:(?=[^_a-z@-Z0-9])|$)" >
+          <!ENTITY varstr    "\b[_A-Z][_a-z@-Z0-9]*(?:(?=[^_a-z@-Z0-9])|$)" >
+          <!-- pragmas defined here, because "keyword" can't handle the leading '-' -->
+          <!ENTITY pragmas 
+             "^(?:-module|-export|-define|-undef|-ifdef|-ifndef|-else|-endif|-include|-include_lib)" >
+          <!--  same with separators: (from s3.9 p 24 of erlang spec) -->
+          <!ENTITY separators "(?:\(|\)|\{|\}|\[|\]|\.|\:|\||\|\||;|\,|\?|-&gt;|\#)" >
+          <!--  and operators - although words are dealt with separately -->
+          <!ENTITY opsymbols 
+                   "(?:\+|-|\*|\/|==|\/=|=:=|=\/=|&lt;|=&lt;|&gt;|&gt;=|\+\+|--|=|!|&lt;-)" >
+]
+>
+<!--
+    Copyright (C) 2007 Bill Ross <bill@emailme.net.au>
+
+    
+    This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public
+   License version 2 as published by the Free Software Foundation.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public License
+   along with this library; see the file COPYING.LIB.  If not, write to
+   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.
+  
+   Changes 
+   v1-0-2 (2008-01-10) - fixed to '_" in atom and variable names (thanks to Vito De Tullio)
+                                   - fixed highlighting problem when '@' at end of atom/variable
+-->
+
+<language name="Erlang" version="1.02" kateversion="2.5" section="Scripts" extensions="*.erl" mimetype="" author="Bill Ross (bill@emailme.net.au)" license="LGPL">
+  <highlighting>
+    <list name="keywords">
+      <!-- ====== s3.8 p 24 of erlang spec ===== -->
+      <item> after </item>
+      <item> begin </item>
+      <item> case </item>
+      <item> catch </item>
+      <item> cond </item>
+      <item> end </item>
+      <item> fun </item>
+      <item> if </item>
+      <item> let </item>
+      <item> of </item>
+      <item> query </item>
+      <item> receive </item>
+      <item> all_true </item>
+      <item> some_true </item>
+    </list>
+    <list name="operators">
+      <!-- operators: s3.9 p 24 of erlang spec -->
+      <!-- see also opsymbols for the symbols -->
+      <item> div </item>
+      <item> rem </item>
+      <item> or </item>
+      <item> xor </item>
+      <item> bor </item>
+      <item> bxor </item>
+      <item> bsl </item>
+      <item> bsr </item>
+      <item> and </item>
+      <item> band </item>
+      <item> not </item>
+      <item> bnot </item>
+    </list>
+    <list name="functions">
+      <!-- all standard (erlang) functions are here, -->
+      <!-- except those defined as erlang:function (those will show as functions anyway -->
+      <item>abs</item>
+      <item>accept</item>
+      <item>alarm</item>
+      <item>apply</item>
+      <item>atom_to_list</item>
+      <item>binary_to_list</item>
+      <item>binary_to_term</item>
+      <item>check_process_code</item>
+      <item>concat_binary</item>
+      <item>date</item>
+      <item>delete_module</item>
+      <item>disconnect_node</item>
+      <item>element</item>
+      <item>erase</item>
+      <item>exit</item>
+      <item>float</item>
+      <item>float_to_list</item>
+      <item>garbage_collect</item>
+      <item>get</item>
+      <item>get_keys</item>
+      <item>group_leader</item>
+      <item>halt</item>
+      <item>hd</item>
+      <item>integer_to_list</item>
+      <item>is_alive</item>
+      <item>is_atom</item>
+      <item>is_binary</item>
+      <item>is_boolean</item>
+      <item>is_float</item>
+      <item>is_function</item>
+      <item>is_integer</item>
+      <item>is_list</item>
+      <item>is_number</item>
+      <item>is_pid</item>
+      <item>is_port</item>
+      <item>is_process_alive</item>
+      <item>is_record</item>
+      <item>is_reference</item>
+      <item>is_tuple</item>
+      <item>length</item>
+      <item>link</item>
+      <item>list_to_atom</item>
+      <item>list_to_binary</item>
+      <item>list_to_float</item>
+      <item>list_to_integer</item>
+      <item>list_to_pid</item>
+      <item>list_to_tuple</item>
+      <item>load_module</item>
+      <item>loaded</item>
+      <item>localtime</item>
+      <item>make_ref</item>
+      <item>module_loaded</item>
+      <item>node</item>
+      <item>nodes</item>
+      <item>now</item>
+      <item>open_port</item>
+      <item>pid_to_list</item>
+      <item>port_close</item>
+      <item>port_command</item>
+      <item>port_connect</item>
+      <item>port_control</item>
+      <item>ports</item>
+      <item>pre_loaded</item>
+      <item>process_flag</item>
+      <item>process_info</item>
+      <item>processes</item>
+      <item>purge_module</item>
+      <item>put</item>
+      <item>register</item>
+      <item>registered</item>
+      <item>round</item>
+      <item>self</item>
+      <item>setelement</item>
+      <item>size</item>
+      <item>spawn</item>
+      <item>spawn_link</item>
+      <item>spawn_opt</item>
+      <item>split_binary</item>
+      <item>statistics</item>
+      <item>term_to_binary</item>
+      <item>throw</item>
+      <item>time</item>
+      <item>tl</item>
+      <item>trunc</item>
+      <item>tuple_to_list</item>
+      <item>unlink</item>
+      <item>unregister</item>
+      <item>whereis</item>
+   </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Normal Text" >
+        <RegExpr attribute="Pragma" context="#stay" column="0" String="&pragmas;" />
+        <keyword attribute="Keyword" context="#stay" String="keywords" />
+        <keyword attribute="Operator" context="#stay" String="operators" />
+        <RegExpr attribute="Operator" context="#stay" String="&opsymbols;" />
+        <keyword attribute="Function" context="#stay" String="functions" />
+        <RegExpr attribute="Separator" context="#stay" String="&separators;" />
+        <DetectSpaces />
+        <DetectChar attribute="Comment" context="comment" char="%" />
+
+        <!-- Functions (in addition to named functions dealt with above) -->
+        <!-- simple version - got to be in form module:function -->
+        <RegExpr attribute="Function" context="#pop" String="&atomstr;:&atomstr;" />
+        <RegExpr attribute="Functon" context="isfunction" String="&atomstr;\(" lookAhead="true" />
+
+        <!-- Variables - begin with upper case, or between single quotes -->
+        <RegExpr attribute="Variable" context="#pop" String="&varstr;" />
+
+        <!-- atoms - begin with lower case (letters, numbers, @), 
+             or anything between single quotes -->
+        <DetectChar attribute="Atom" context="atomquote" char="'" /> 
+        <RegExpr attribute="Atom" context="#pop" String="&atomstr;" />
+        
+        <DetectChar attribute="String" context="stringquote" char="&quot;" />
+        
+        <!-- numbers - these work -->
+        <!-- integers have three forms 7, 3#22, $A -->
+        <!-- float must have a number after the decimal point, or it doesn't count -->
+        <RegExpr attribute="Float" context="#pop" String="[0-9]+\.[0-9]+(?:[eE][+-]?[0-9]+)?" />
+        <RegExpr attribute="Number" context="#pop" String="\d+#[a-zA-Z0-9]+" />
+        <RegExpr attribute="Integer" context="#pop" String="\$\S" />
+        <RegExpr attribute="Integer" context="#pop" String="[0-9]+" />
+
+      </context>
+
+      <!-- isfunction -->
+      <!-- confirm that this is a function and capture name for formatting -->
+      <!-- lookahead for '(' already performed by the time we are here -->
+      <context name="isfunction" attribute="Function" lineEndContext="#pop"  >
+        <RegExpr attribute="Function" context="#pop" String="&atomstr;" />
+      </context>
+
+      <!-- finish off the atom in quoted string (allow for escaped single quotes -->
+      <context name="atomquote" attribute="Atom" lineEndContext="#pop">
+        <RegExpr attribute="Atom" context="#pop" String="(?:(?:\\')?[^']*)*'" />
+      </context>
+
+      <!-- finish off the atom in quoted string (allow for escaped single quotes -->
+      <context name="stringquote" attribute="String" lineEndContext="#pop">
+        <RegExpr attribute="String" context="#pop" String="(?:(?:\\&quot;)?[^&quot;]*)*&quot;" />
+      </context>
+      
+      <!-- finish off the comment (allows for alerts) -->
+      <context name="comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+      </context>
+
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text"               defStyleNum="dsNormal" />
+      <itemData name="Keyword"                   defStyleNum="dsKeyword" />
+      <itemData name="Pragma"                    defStyleNum="dsKeyword" />
+      <itemData name="Function"                  defStyleNum="dsFunction" />
+      <itemData name="Separator"                 defStyleNum="dsFunction" />
+      <itemData name="Operator"                  defStyleNum="dsKeyword"  />
+      <itemData name="Variable"                  defStyleNum="dsDataType" />
+      <itemData name="Integer"                   defStyleNum="dsDecVal" />
+      <itemData name="Number"                    defStyleNum="dsBaseN" />
+      <itemData name="Float"                     defStyleNum="dsFloat" />
+      <itemData name="Atom"                      defStyleNum="dsChar" />
+      <itemData name="String"                    defStyleNum="dsString" />
+      <itemData name="Comment"                   defStyleNum="dsComment" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="%" />
+    </comments>
+    <keywords casesensitive="1" />
+  </general>
+</language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
diff --git a/xml/fortran.xml b/xml/fortran.xml
new file mode 100644
--- /dev/null
+++ b/xml/fortran.xml
@@ -0,0 +1,569 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="Fortran" version="1.11" kateversion="2.4" section="Sources" extensions="*.f;*.F;*.for;*.FOR;*.f90;*.F90;*.fpp;*.FPP;*.f95;*.F95;" mimetype="text/x-fortran-src" casesensitive="0" author="Franchin Matteo (fnch@libero.it)" license="LGPL">
+<!-- by Franchin Matteo, fnch@libero.it -->
+  <highlighting>
+
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+<!-- *                              L I S T S                            *  -->
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+    <list name="keywords">
+      <item> allocate </item>
+      <item> break </item>
+      <item> call </item>
+      <item> case </item>
+      <item> common </item>
+      <item> contains </item>
+      <item> continue </item>
+      <item> cycle </item>
+      <item> deallocate </item>
+      <item> default </item>
+      <item> do </item>
+      <item> forall </item>
+      <item> where </item>
+      <item> elsewhere </item>
+      <item> elseif </item>
+      <item> else </item>
+      <item> equivalence </item>
+      <item> exit </item>
+      <item> external </item>
+      <item> for </item>
+      <item> go </item>
+      <item> goto </item>
+      <item> if </item>
+      <item> implicit </item>
+      <item> include </item>
+      <item> interface </item>
+      <item> intrinsic </item>
+      <item> namelist </item>
+      <item> none </item>
+      <item> nullify </item>
+      <item> operator </item>
+      <item> assignment </item>
+      <item> pause </item>
+      <item> procedure </item>
+      <item> pure </item>
+      <item> elemental </item>
+      <item> record </item>
+      <item> recursive </item>
+      <item> result </item>
+      <item> return </item>
+      <item> select </item>
+      <item> selectcase </item>
+      <item> stop </item>
+      <item> then </item>
+      <item> to </item>
+      <item> use </item>
+      <item> only </item>
+      <item> entry </item>
+      <item> while </item>
+    </list>
+    <list name="io_functions">
+      <item> access </item>
+      <item> backspace </item>
+      <item> close </item>
+      <item> inquire </item>
+      <item> open </item>
+      <item> print </item>
+      <item> read </item>
+      <item> rewind </item>
+      <item> write </item>
+      <item> format </item>
+    </list>
+    <!-- Keywords inside read(...), write(...), backspace(...),
+          rewind(...), endfile(...), close(...) -->
+    <list name="io_keywords">
+      <item> unit </item>
+      <item> end </item>
+      <item> err </item>
+      <item> fmt </item>
+      <item> iostat </item>
+      <item> status </item>
+      <item> advance </item>
+      <item> size </item>
+      <item> eor </item>
+    </list>
+    <!-- Keywords inside open(...) -->
+    <list name="open_keywords">
+      <item> unit </item>
+      <item> iostat </item>
+      <item> err </item>
+      <item> file </item>
+      <item> status </item>
+      <item> access </item>
+      <item> form </item>
+      <item> recl </item>
+      <item> blank </item>
+      <item> position </item>
+      <item> action </item>
+      <item> delim </item>
+      <item> pad </item>
+    </list>
+    <!-- Keywords inside inquire(...) -->
+    <list name="inquire_keywords">
+      <item> unit </item>
+      <item> iostat </item>
+      <item> err </item>
+      <item> file </item>
+      <item> exist </item>
+      <item> opened </item>
+      <item> number </item>
+      <item> named </item>
+      <item> name </item>
+      <item> access </item>
+      <item> sequential </item>
+      <item> direct </item>
+      <item> form </item>
+      <item> formatted </item>
+      <item> unformatted </item>
+      <item> recl </item>
+      <item> nextrec </item>
+      <item> blank </item>
+      <item> position </item>
+      <item> action </item>
+      <item> read </item>
+      <item> write </item>
+      <item> readwrite </item>
+      <item> delim </item>
+      <item> pad </item>
+    </list>
+    <list name="types">
+      <item> double </item>
+      <item> precision </item>
+      <item> parameter </item>
+      <item> save </item>
+      <item> pointer </item>
+      <item> public </item>
+      <item> private </item>
+      <item> target </item>
+      <item> allocatable </item>
+      <item> optional </item>
+      <item> sequence </item>
+    </list>
+
+<!-- There are 4 types of intrinsic procedures in Fortran 90:
+   1) Elemental procedures (elemental_procs);
+   2) Inquiry functions (inquiry_fn);
+   3) Transformational functions (transform_fn);
+   4) Non elemental subroutines (non_elem_subr);
+  Often mathematical functions have one generic form and many specific names!
+  If you use the generic form, the compiler will select the right function
+  to use depending on the type of the arguments.
+  But you can use also the specific names!
+  -->
+
+<!-- E L E M E N T A L    P R O C E D U R E S -->
+    <list name="elemental_procs">
+    <!-- Elemental functions that may convert -->
+      <item> abs </item>   <!-- Generic form: abs -->
+      <item> cabs </item>  <!-- Specific names for abs -->
+      <item> dabs </item>
+      <item> iabs </item>
+      <item> aimag </item>
+      <item> aint </item>  <!-- Generic form: aint -->
+      <item> dint </item>  <!-- Specific name for aint -->
+      <item> anint </item> <!-- Generic form: anint -->
+      <item> dnint </item> <!-- Specific name for anint -->
+      <item> ceiling </item>
+      <item> cmplx </item>
+      <item> dcmplx </item> <!-- (non standard) -->
+      <item> dimag </item>  <!-- (non standard) -->
+      <item> floor </item>
+      <item> nint </item>  <!-- Generic form: nint -->
+      <item> idnint </item><!-- Specific name for nint -->
+      <item> int </item>   <!-- Generic form: int -->
+      <item> idint </item> <!-- Specific names for int -->
+      <item> ifix </item>
+      <item> real </item>  <!-- Generic form: real -->
+      <item> float </item> <!-- Specific names for real -->
+      <item> sngl </item>
+      <item> dble </item>
+      <item> dreal </item> <!-- (non standard) -->
+      <item> aprime </item> <!-- 5 functions from fortran.xml -->
+      <item> dconjg </item> <!-- I don't know if they really belong to -->
+      <item> dfloat </item> <!-- the fortran 90/95 standard! -->
+      <item> ddmim </item>
+      <item> rand </item>
+    <!-- Elemental functions that do not convert -->
+      <item> modulo </item>
+      <item> conjg </item>
+      <item> dprod </item>  <!-- dprod(x, y) is the specific name for x*y -->
+      <item> dim </item>    <!-- Generic form: dim -->
+      <item> ddim </item>   <!-- Specific names for dim -->
+      <item> idim </item>
+      <item> max </item>    <!-- Generic form: max -->
+      <item> amax0 </item>  <!-- Specific names for max -->
+      <item> amax1 </item>
+      <item> max0 </item>
+      <item> max1 </item>
+      <item> dmax1 </item>
+      <item> min </item>    <!-- Generic form: min -->
+      <item> amin0 </item>  <!-- Specific names for min -->
+      <item> amin1 </item>
+      <item> min0 </item>
+      <item> min1 </item>
+      <item> dmin1 </item>
+      <item> mod </item>    <!-- Generic form: mod -->
+      <item> amod </item>   <!-- Specific names for mod -->
+      <item> dmod </item>
+      <item> sign </item>   <!-- Generic form: sign -->
+      <item> dsign </item>  <!-- Specific names for sign -->
+      <item> isign </item>
+    <!-- Elemental mathematical functions -->
+      <item> acos </item>    <!-- Generic form: acos -->
+      <item> dacos </item>   <!-- Specific names for acos -->
+      <item> asin </item>    <!-- Generic form: asin -->
+      <item> dasin </item>   <!-- Specific names for asin -->
+      <item> atan </item>    <!-- Generic form: atan -->
+      <item> datan </item>   <!-- Specific names for atan -->
+      <item> atan2 </item>   <!-- Generic form: atan2 -->
+      <item> datan2 </item>  <!-- Specific names for atan2 -->
+      <item> cos </item>     <!-- Generic form: cos -->
+      <item> ccos </item>    <!-- Specific names for cos -->
+      <item> dcos </item>
+      <item> cosh </item>    <!-- Generic form: cosh -->
+      <item> dcosh </item>   <!-- Specific names for cosh -->
+      <item> exp </item>     <!-- Generic form: exp -->
+      <item> cexp </item>    <!-- Specific names for exp -->
+      <item> dexp </item>
+      <item> log </item>     <!-- Generic form: log -->
+      <item> alog </item>    <!-- Specific names for log -->
+      <item> dlog </item>
+      <item> clog </item>
+      <item> log10 </item>   <!-- Generic form: log10 -->
+      <item> alog10 </item>  <!-- Specific names for log10 -->
+      <item> dlog10 </item>
+      <item> sin </item>     <!-- Generic form: sin -->
+      <item> csin </item>    <!-- Specific names for sin -->
+      <item> dsin </item>
+      <item> sinh </item>    <!-- Generic form: sinh -->
+      <item> dsinh </item>   <!-- Specific name for sinh -->
+      <item> sqrt </item>    <!-- Generic form: sqrt -->
+      <item> csqrt </item>   <!-- Specific names for sqrt -->
+      <item> dsqrt </item>
+      <item> tan </item>     <!-- Generic form: tan -->
+      <item> dtan </item>    <!-- Generic form: dtan -->
+      <item> tanh </item>    <!-- Generic form: tanh -->
+      <item> dtanh </item>   <!-- Specific names for tanh -->
+    <!-- Elemental character and logical functions -->
+    <!-- Character-integer conversions -->
+      <item> achar </item>
+      <item> char </item>
+      <item> iachar </item>
+      <item> ichar </item>
+    <!-- Lexical comparison functions -->
+      <item> lge </item>
+      <item> lgt </item>
+      <item> lle </item>
+      <item> llt </item>
+    <!-- String-handling elemental functions -->
+      <item> adjustl </item>
+      <item> adjustr </item>
+      <item> index </item>
+      <item> len_trim </item>
+      <item> scan </item>
+      <item> verify </item>
+    <!-- Logical conversion -->
+      <item> logical </item>
+    <!-- Elemental functions to manipulate reals -->
+      <item> exponent </item>
+      <item> fraction </item>
+      <item> nearest </item>
+      <item> rrspacing </item>
+      <item> scale </item>
+      <item> set_exponent </item>
+      <item> spacing </item>
+    <!-- Bit manipulation elemental functions -->
+      <item> btest </item>
+      <item> iand </item>
+      <item> ibclr </item>
+      <item> ibits </item>
+      <item> ibset </item>
+      <item> ieor </item>
+      <item> ior </item>
+      <item> ishft </item>
+      <item> ishftc </item>
+      <item> not </item>
+    <!-- Bit manipulation elemental subroutine -->
+      <item> mvbits </item>
+    <!-- Merge elemental function -->
+      <item> merge </item>
+    </list>
+
+<!-- I N Q U I R Y    F U N C T I O N S -->
+    <list name="inquiry_fn">
+    <!-- Inquiry functions for any type -->
+      <item> associated </item>
+      <item> present </item>
+      <item> kind </item>
+    <!-- String-handling inquiry function -->
+      <item> len </item>
+    <!-- Numeric inquiry functions -->
+      <item> digits </item>
+      <item> epsilon </item>
+      <item> huge </item>
+      <item> maxexponent </item>
+      <item> minexponent </item>
+      <item> precision </item>
+      <item> radix </item>
+      <item> range </item>
+      <item> tiny </item>
+    <!-- Bit inquiry function -->
+      <item> bit_size </item>
+    <!-- Array inquiry functions -->
+      <item> allocated </item>
+      <item> lbound </item>
+      <item> ubound </item>
+      <item> shape </item>
+      <item> size </item>
+    </list>
+
+<!-- T R A N S F O R M A T I O N A L    F U N C T I O N S -->
+    <list name="transform_fn">
+    <!-- String-handling transformational functions -->
+      <item> repeat </item>
+      <item> trim </item>
+    <!-- Transformational functions for kind values -->
+      <item> selected_int_kind </item>
+      <item> selected_real_kind </item>
+    <!-- Transfer function -->
+      <item> transfer </item>
+    <!-- Vector and matrix multiplication functions -->
+      <item> dot_product </item>
+      <item> matmul </item>
+    <!-- Transformational functions that reduce arrays -->
+      <item> all </item>
+      <item> any </item>
+      <item> count </item>
+      <item> maxval </item>
+      <item> minval </item>
+      <item> product </item>
+      <item> sum </item>
+    <!-- Packing and unpacking arrays -->
+      <item> pack </item>
+      <item> unpack </item>
+    <!-- Transformational function for reshaping an array -->
+      <item> reshape </item>
+    <!-- Transformational function for replication -->
+      <item> spread </item>
+    <!-- Array shifting functions -->
+      <item> cshift </item>
+      <item> eoshift </item>
+    <!-- Matrix transpose -->
+      <item> transpose </item>
+    <!-- Transformational functions for geometric location -->
+      <item> maxloc </item>
+      <item> minloc </item>
+    </list>
+
+<!-- N O N    E L E M E N T A L    S U B R O U T I N E S -->
+    <list name="non_elem_subr">
+    <!-- Real time clock -->
+      <item> date_and_time </item>
+      <item> system_clock </item>
+    <!-- Random numbers -->
+      <item> random_number </item>
+      <item> random_seed </item>
+    </list>
+
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+<!-- *                           C O N T E X T S                         *  -->
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="default" >
+        <IncludeRules context="find_strings" />
+        <IncludeRules context="find_decls" />
+        <IncludeRules context="find_intrinsics" />
+        <IncludeRules context="find_io_stmnts" />
+        <IncludeRules context="find_op_and_log" />
+        <IncludeRules context="find_numbers" />
+        <IncludeRules context="find_preprocessor" />
+        <IncludeRules context="find_comments" />
+        <IncludeRules context="find_symbols" />
+        <IncludeRules context="find_end_stmnts" />
+        <IncludeRules context="find_begin_stmnts" />
+      </context>
+<!--************************END OF THE MAIN CONTEXT*************************-->
+
+
+
+<!-- This context highlights preprocessor lines -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_preprocessor">
+        <RegExpr attribute="Preprocessor" context="#stay" String="(#|cDEC\$|CDEC\$).*$" column="0"/>
+      </context>
+
+<!-- This context highlights operators and the logical values .true. .false. -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_op_and_log">
+        <RegExpr attribute="Logical" context="#stay" String="\.(true|false)\." insensitive="TRUE"/>
+        <RegExpr attribute="Operator" context="#stay" String="\.[A-Za-z]+\."/>
+        <RegExpr attribute="Operator" context="#stay" String="(==|/=|&lt;|&lt;=|&gt;|&gt;=)"/>
+      </context>
+
+<!-- This context highlights comments -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_comments">
+        <RegExpr attribute="Comment" context="#stay" String="[cC\*].*$" column="0"/>
+        <RegExpr attribute="Comment" context="#stay" String="!.*$"/>
+      </context>
+
+<!-- This context highlights symbols -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_symbols">
+        <Detect2Chars attribute="Keyword" context="#stay" char="*" char1="*"/>
+        <Detect2Chars attribute="Keyword" context="#stay" char="(" char1="/"/>
+        <Detect2Chars attribute="Keyword" context="#stay" char="/" char1=")"/>
+        <AnyChar attribute="Keyword" context="#stay" String="&amp;+-*/=?[]^{|}~"/>
+        <AnyChar attribute="Symbol" context="#stay" String="(),"/>
+      </context>
+
+<!-- This context highlights items inside the parentesis of a function -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="inside_func_paren">
+        <DetectChar attribute="Normal Text" context="inside_func_paren" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+        <IncludeRules context="find_strings" />
+        <IncludeRules context="find_intrinsics" />
+        <IncludeRules context="find_numbers" />
+      </context>
+
+<!-- The following two contexts match input/output statements -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_io_stmnts">
+        <RegExpr attribute="IO Function" context="find_io_paren" String="\b(read|write|backspace|rewind|end\s*file|close)\s*[(]" insensitive="TRUE"/>
+        <RegExpr attribute="IO Function" context="find_io_paren" String="\bopen\s*[(]" insensitive="TRUE"/>
+        <RegExpr attribute="IO Function" context="find_io_paren" String="\binquire\s*[(]" insensitive="TRUE"/>
+        <RegExpr attribute="IO Function" context="format_stmnt" String="\bformat\s*[(]" insensitive="TRUE"/>
+        <RegExpr attribute="IO Function" context="#stay" String="\bend\s*file\b" insensitive="TRUE"/>
+        <keyword attribute="IO Function" context="#stay" String="io_functions"/>
+      </context>
+<!-- This context matches parenthesis for the read, write, ... statements -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_io_paren">
+        <DetectChar attribute="IO Function" context="#stay" char="*"/>
+        <DetectChar attribute="Normal Text" context="inside_func_paren" char="("/>
+        <DetectChar attribute="IO Function" context="#pop" char=")"/>
+        <keyword attribute="IO Function"  context="#stay" String="io_keywords"/>
+        <keyword attribute="IO Function"  context="#stay" String="inquire_keywords"/>
+        <keyword attribute="IO Function"  context="#stay" String="open_keywords"/>
+        <IncludeRules context="find_strings" />
+        <IncludeRules context="find_intrinsics" />
+        <IncludeRules context="find_numbers" />
+        <IncludeRules context="find_symbols" />
+      </context>
+<!-- This context highlights the text inside the parenthesis of fortran statement -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="format_stmnt">
+        <DetectChar attribute="IO Function" context="format_stmnt" char="("/>
+        <DetectChar attribute="IO Function" context="#pop" char=")"/>
+        <RegExpr attribute="IO Function" context="#stay" String="[0-9]*/" insensitive="TRUE"/>
+        <AnyChar attribute="IO Function" context="#stay" String=":"/>
+        <IncludeRules context="find_strings" />
+        <IncludeRules context="find_symbols" />
+      </context>
+
+<!-- The following context matches the begin of program units -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_begin_stmnts">
+        <RegExpr attribute="Keyword" context="#stay" String="\bmodule\s+procedure\b" insensitive="TRUE"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\b(program|subroutine|function|module|block\s*data)\b" insensitive="TRUE" beginRegion="Unit"/>
+      </context>
+<!-- The following context matches the end of program units -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_end_stmnts">
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(program|subroutine|function|module|block\s*data)\b" insensitive="TRUE" endRegion="Unit"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(do|if|select|where|forall|interface)\b" insensitive="TRUE"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\b" insensitive="TRUE" endRegion="Unit"/>
+      </context>
+
+<!-- The following two contexts match declarations -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_decls">
+        <RegExpr attribute="Data Type" context="#stay" String="\binteger[\*]\d{1,2}" insensitive="TRUE"/>
+        <RegExpr attribute="Data Type" context="#stay" String="\breal[\*]\d{1,2}" insensitive="TRUE"/>
+        <RegExpr attribute="Data Type" context="#stay" String="\bcomplex[\*]\d{1,2}" insensitive="TRUE"/>
+        <RegExpr attribute="Data Type" context="#stay" String="\bend\s*type\b" insensitive="TRUE"/>
+        <keyword attribute="Data Type" context="#stay" String="types"/>
+        <RegExpr attribute="Data Type" context="#stay" String="^\s*data\b" insensitive="TRUE"/>
+        <RegExpr attribute="Data Type" context="find_paren" String="^\s*real\s*[(]" insensitive="TRUE"/>
+        <RegExpr attribute="Data Type" context="#stay" String="^\s*real(?![\w\*])" insensitive="TRUE"/>
+        <RegExpr attribute="Data Type" context="#stay" String="\bcharacter[*][0-9]+\b" insensitive="TRUE"/>
+        <RegExpr attribute="Data Type" context="find_paren" String="\b(type|integer|complex|character|logical|intent|dimension)\b\s*[(]" insensitive="TRUE"/>
+        <RegExpr attribute="Data Type" context="#stay" String="\b(type|integer|complex|character|logical|intent|dimension)\b" insensitive="TRUE"/>
+        <Detect2Chars attribute="Data Type" context="#stay" char=":" char1=":"/>
+      </context>
+<!-- This context matches parenthesis in data type declarations, such as in 'real(...)'-->
+      <context attribute="Data Type" lineEndContext="#pop" name="find_paren">
+        <DetectChar attribute="Data Type" context="find_paren" char="("/>
+        <DetectChar attribute="Data Type" context="#pop" char=")"/>
+      </context>
+
+<!-- The following context matches intrinsic procedures -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_intrinsics">
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+      <!-- INTRINSIC PROCEDURES -->
+        <keyword attribute="Elemental Procedure"       context="#stay" String="elemental_procs"/>
+        <keyword attribute="Inquiry Function"          context="#stay" String="inquiry_fn"/>
+        <keyword attribute="Transformational Function" context="#stay" String="transform_fn"/>
+        <keyword attribute="Non elemental subroutine"  context="#stay" String="non_elem_subr"/>
+      </context>
+
+<!-- The following context matches integer and real numbers -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_numbers">
+        <!-- Floating-point numbers with optional kind -->
+        <RegExpr attribute="Float" context="#stay" String="[0-9]*\.[0-9]+([de][+-]?[0-9]+)?([_]([0-9]+|[a-z][\w_]*))?" insensitive="TRUE"/>
+        <RegExpr attribute="Float" context="#stay" String="\b[0-9]+\.[0-9]*([de][+-]?[0-9]+)?([_]([0-9]+|[a-z][\w_]*))?(?![a-z])" insensitive="TRUE"/>
+        <RegExpr attribute="Float" context="#stay" String="\b[0-9]+[de][+-]?[0-9]+([_]([0-9]+|[a-z][\w_]*))?" insensitive="TRUE"/>
+        <!-- Integers with optional kind specifier -->
+        <RegExpr attribute="Decimal" context="#stay" String="\b[0-9]+([_]([0-9]+|[a-zA-Z][\w_]*))?"/>
+        <!-- Integers in binary, octal and hexadecimal notations -->
+        <RegExpr attribute="Decimal" context="#stay" String="\b[bozx]([&apos;][0-9a-f]+[&apos;]|[&quot;][0-9a-f]+[&quot;])" insensitive="TRUE"/>
+      </context>
+
+<!-- The following four contexts implement the complex string multi-line declarations -->
+      <!-- Matches STRINGS (there are 2 types of strings: '...' and "...") -->
+      <context attribute="String" lineEndContext="#stay" name="find_strings">
+        <DetectChar attribute="String" context="string_1" char="&apos;"/>
+        <DetectChar attribute="String" context="string_2" char="&quot;"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="string_1" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="String" context="#pop" String="[^&apos;]*&apos;"/>
+        <RegExpr attribute="Keyword" context="end_of_string" String="&amp;\s*$"/>
+        <RegExpr attribute="String" context="end_of_string" String=".*(?=&amp;\s*$)"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="string_2" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="String" context="#pop" String="[^&quot;]*&quot;"/>
+        <RegExpr attribute="Keyword" context="end_of_string" String="&amp;\s*$"/>
+        <RegExpr attribute="String" context="end_of_string" String=".*(?=&amp;\s*$)"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="end_of_string" fallthrough="true" fallthroughContext="#pop#pop">
+        <DetectSpaces />
+        <RegExpr attribute="Keyword" context="#stay" String="&amp;\s*$"/>
+        <DetectChar attribute="Keyword" context="#pop" char="&amp;" firstNonSpace="true"/>
+        <RegExpr attribute="Comment" context="#stay" String="(!.*)?$" firstNonSpace="true"/>
+      </context>
+    </contexts>
+
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+<!-- *             S T Y L E   I T E M   D E F I N I T I O N S           *  -->
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Data Type" defStyleNum="dsDataType"/>
+      <itemData name="Decimal" defStyleNum="dsDecVal"/>
+      <itemData name="Float" defStyleNum="dsFloat"/>
+      <itemData name="String" defStyleNum="dsString"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="Symbol" defStyleNum="dsNormal"/>
+      <itemData name="Preprocessor" defStyleNum="dsOthers"/>
+      <itemData name="Operator" defStyleNum="dsKeyword" color="#008000" selColor="#ff00ff" bold="1" italic="0"/>
+      <itemData name="Logical" defStyleNum="dsOthers" color="#800080" selColor="#ffa0a0" bold="1" italic="0"/>
+      <itemData name="IO Function" defStyleNum="dsFunction" color="#006060" selColor="#ffffff" bold="0" italic="0"/>
+      <itemData name="Elemental Procedure" defStyleNum="dsKeyword" color="#600060" selColor="#ffa0ff" bold="1" italic="0"/>
+      <itemData name="Inquiry Function" defStyleNum="dsFunction" color="#000060" selColor="#a0a0ff" bold="1" italic="1"/>
+      <itemData name="Transformational Function" defStyleNum="dsFunction" color="#600060" selColor="#ffa0ff" bold="1" italic="0"/>
+      <itemData name="Non elemental subroutine" defStyleNum="dsKeyword" color="#600060" selColor="#ffa0ff" bold="1" italic="0"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="c"/>
+      <comment name="singleLine" start="!"/>
+    </comments>
+    <keywords casesensitive="0"/>
+  </general>
+</language>
diff --git a/xml/haskell.xml b/xml/haskell.xml
new file mode 100644
--- /dev/null
+++ b/xml/haskell.xml
@@ -0,0 +1,392 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!-- Haskell syntax highlighting by Marcel Martin <mmar@freenet.de> -->
+<language name="Haskell" version="1.04" kateversion="2.3" section="Sources" extensions="*.hs" author="Marcel Martin (mmar@freenet.de)" license="">
+	<highlighting>
+	<list name="keywords">
+		<item> as </item>
+		<item> case </item>
+		<item> class </item>
+		<item> data </item>
+		<item> deriving </item>
+		<item> do </item>
+		<item> else </item>
+		<item> if </item>
+        <item> import </item>
+        <item> in </item>
+		<item> infixl </item>
+		<item> infixr </item>
+		<item> instance </item>
+		<item> let </item>
+		<item> module </item>
+		<item> of </item>
+		<item> primitive </item>
+		<item> qualified </item>
+		<item> then </item>
+		<item> type </item>
+		<item> where </item>
+	</list>
+        <list name="infix operators">
+		<item> quot </item>
+		<item> rem </item>
+		<item> div </item>
+		<item> mod </item>
+		<item> elem </item>
+		<item> notElem </item>
+		<item> seq </item>
+	</list>
+	<list name="functions">
+		<!--
+                These operators are not handled yet.
+		<item> !! </item>
+		<item> % </item>
+		<item> && </item>
+		<item> $! </item>
+		<item> $ </item>
+		<item> * </item>
+		<item> ** </item>
+		<item> - </item>
+		<item> . </item>
+		<item> /= </item>
+		<item> < </item>
+		<item> <= </item>
+		<item> =<< </item>
+		<item> == </item>
+		<item> > </item>
+		<item> >= </item>
+		<item> >> </item>
+		<item> >>= </item>
+		<item> ^ </item>
+		<item> ^^ </item>
+		<item> ++ </item>
+		<item> || </item>
+		//-->
+
+		<item> FilePath </item>
+		<item> IOError </item>
+		<item> abs </item>
+		<item> acos </item>
+		<item> acosh </item>
+		<item> all </item>
+		<item> and </item>
+		<item> any </item>
+		<item> appendFile </item>
+		<item> approxRational </item>
+		<item> asTypeOf </item>
+		<item> asin </item>
+		<item> asinh </item>
+		<item> atan </item>
+		<item> atan2 </item>
+		<item> atanh </item>
+		<item> basicIORun </item>
+		<item> break </item>
+		<item> catch </item>
+		<item> ceiling </item>
+		<item> chr </item>
+		<item> compare </item>
+		<item> concat </item>
+		<item> concatMap </item>
+		<item> const </item>
+		<item> cos </item>
+		<item> cosh </item>
+		<item> curry </item>
+		<item> cycle </item>
+		<item> decodeFloat </item>
+		<item> denominator </item>
+		<item> digitToInt </item>
+		<item> div </item>
+		<item> divMod </item>
+		<item> drop </item>
+		<item> dropWhile </item>
+		<item> either </item>
+		<item> elem </item>
+		<item> encodeFloat </item>
+		<item> enumFrom </item>
+		<item> enumFromThen </item>
+		<item> enumFromThenTo </item>
+		<item> enumFromTo </item>
+		<item> error </item>
+		<item> even </item>
+		<item> exp </item>
+		<item> exponent </item>
+		<item> fail </item>
+		<item> filter </item>
+		<item> flip </item>
+		<item> floatDigits </item>
+		<item> floatRadix </item>
+		<item> floatRange </item>
+		<item> floor </item>
+		<item> fmap </item>
+		<item> foldl </item>
+		<item> foldl1 </item>
+		<item> foldr </item>
+		<item> foldr1 </item>
+		<item> fromDouble </item>
+		<item> fromEnum </item>
+		<item> fromInt </item>
+		<item> fromInteger </item>
+		<item> fromIntegral </item>
+		<item> fromRational </item>
+		<item> fst </item>
+		<item> gcd </item>
+		<item> getChar </item>
+		<item> getContents </item>
+		<item> getLine </item>
+		<item> head </item>
+		<item> id </item>
+		<item> inRange </item>
+		<item> index </item>
+		<item> init </item>
+		<item> intToDigit </item>
+		<item> interact </item>
+		<item> ioError </item>
+		<item> isAlpha </item>
+		<item> isAlphaNum </item>
+		<item> isAscii </item>
+		<item> isControl </item>
+		<item> isDenormalized </item>
+		<item> isDigit </item>
+		<item> isHexDigit </item>
+		<item> isIEEE </item>
+		<item> isInfinite </item>
+		<item> isLower </item>
+		<item> isNaN </item>
+		<item> isNegativeZero </item>
+		<item> isOctDigit </item>
+		<item> isPrint </item>
+		<item> isSpace </item>
+		<item> isUpper </item>
+		<item> iterate </item>
+		<item> last </item>
+		<item> lcm </item>
+		<item> length </item>
+		<item> lex </item>
+		<item> lexDigits </item>
+		<item> lexLitChar </item>
+		<item> lines </item>
+		<item> log </item>
+		<item> logBase </item>
+		<item> lookup </item>
+		<item> map </item>
+		<item> mapM </item>
+		<item> mapM_ </item>
+		<item> max </item>
+		<item> maxBound </item>
+		<item> maximum </item>
+		<item> maybe </item>
+		<item> min </item>
+		<item> minBound </item>
+		<item> minimum </item>
+		<item> mod </item>
+		<item> negate </item>
+		<item> not </item>
+		<item> notElem </item>
+		<item> null </item>
+		<item> numerator </item>
+		<item> odd </item>
+		<item> or </item>
+		<item> ord </item>
+		<item> otherwise </item>
+		<item> pi </item>
+		<item> pred </item>
+		<item> primExitWith </item>
+		<item> print </item>
+		<item> product </item>
+		<item> properFraction </item>
+		<item> putChar </item>
+		<item> putStr </item>
+		<item> putStrLn </item>
+		<item> quot </item>
+		<item> quotRem </item>
+		<item> range </item>
+		<item> rangeSize </item>
+		<item> read </item>
+		<item> readDec </item>
+		<item> readFile </item>
+		<item> readFloat </item>
+		<item> readHex </item>
+		<item> readIO </item>
+		<item> readInt </item>
+		<item> readList </item>
+		<item> readLitChar </item>
+		<item> readLn </item>
+		<item> readOct </item>
+		<item> readParen </item>
+		<item> readSigned </item>
+		<item> reads </item>
+		<item> readsPrec </item>
+		<item> realToFrac </item>
+		<item> recip </item>
+		<item> rem </item>
+		<item> repeat </item>
+		<item> replicate </item>
+		<item> return </item>
+		<item> reverse </item>
+		<item> round </item>
+		<item> scaleFloat </item>
+		<item> scanl </item>
+		<item> scanl1 </item>
+		<item> scanr </item>
+		<item> scanr1 </item>
+		<item> seq </item>
+		<item> sequence </item>
+		<item> sequence_ </item>
+		<item> show </item>
+		<item> showChar </item>
+		<item> showInt </item>
+		<item> showList </item>
+		<item> showLitChar </item>
+		<item> showParen </item>
+		<item> showSigned </item>
+		<item> showString </item>
+		<item> shows </item>
+		<item> showsPrec </item>
+		<item> significand </item>
+		<item> signum </item>
+		<item> sin </item>
+		<item> sinh </item>
+		<item> snd </item>
+		<item> span </item>
+		<item> splitAt </item>
+		<item> sqrt </item>
+		<item> subtract </item>
+		<item> succ </item>
+		<item> sum </item>
+		<item> tail </item>
+		<item> take </item>
+		<item> takeWhile </item>
+		<item> tan </item>
+		<item> tanh </item>
+		<item> threadToIOResult </item>
+		<item> toEnum </item>
+		<item> toInt </item>
+		<item> toInteger </item>
+		<item> toLower </item>
+		<item> toRational </item>
+		<item> toUpper </item>
+		<item> truncate </item>
+		<item> uncurry </item>
+		<item> undefined </item>
+		<item> unlines </item>
+		<item> until </item>
+		<item> unwords </item>
+		<item> unzip </item>
+		<item> unzip3 </item>
+		<item> userError </item>
+		<item> words </item>
+		<item> writeFile </item>
+		<item> zip </item>
+		<item> zip3 </item>
+		<item> zipWith </item>
+		<item> zipWith3 </item>
+	</list>
+	<list name="type constructors">
+		<item> Bool </item>
+		<item> Char </item>
+                <item> Double </item>
+		<item> Either </item>
+		<item> Float </item>
+		<item> IO </item>
+		<item> Integer </item>
+		<item> Int </item>
+		<item> Maybe </item>
+		<item> Ordering </item>
+		<item> Rational </item>
+		<item> Ratio </item>
+		<item> ReadS </item>
+		<item> ShowS </item>
+		<item> String </item>
+
+	</list>
+	<list name="classes">
+		<item> Bounded </item>
+		<item> Enum </item>
+		<item> Eq </item>
+		<item> Floating </item>
+		<item> Fractional </item>
+		<item> Functor </item>
+		<item> Integral </item>
+		<item> Ix </item>
+		<item> Monad </item>
+		<item> Num </item>
+		<item> Ord </item>
+		<item> Read </item>
+		<item> RealFloat </item>
+		<item> RealFrac </item>
+		<item> Real </item>
+		<item> Show </item>
+	</list>
+	<list name="data constructors">
+		<item> EQ </item>
+		<item> False </item>
+		<item> GT </item>
+		<item> Just </item>
+		<item> LT </item>
+		<item> Left </item>
+		<item> Nothing </item>
+		<item> Right </item>
+		<item> True </item>
+	</list>
+	<contexts>
+		<context attribute="Normal Text" lineEndContext="#stay" name="normal">
+			<Detect2Chars attribute="Comment" context="comment_multi_line" char="{" char1="-" />
+			<Detect2Chars attribute="Comment" context="comment_single_line" char="-" char1="-" />
+            <RegExpr attribute="Module Name" context="#stay" String="([A-Z][A-Za-z0-9]*\.)+[A-Z][A-Za-z0-9]*"/> 
+            <keyword attribute="Keyword" context="#stay" String="keywords" />
+			<keyword attribute="Class" context="#stay" String="classes" />
+			<keyword attribute="Type Constructor" context="#stay" String="type constructors" />
+			<keyword attribute="Function" context="#stay" String="functions" />
+			<keyword attribute="Data Constructor" context="#stay" String="data constructors" />
+			<DetectChar attribute="String" context="string" char="&quot;" />
+			<DetectChar attribute="Infix Operator" context="infix" char="`"/>
+			<RegExpr attribute="Normal Text" context="#stay" String="\w[']+" />
+			<DetectChar attribute="Char" context="single_char" char="'" />
+			<RegExpr attribute="Function Definition" context="#stay" String="[a-z_]+\w*'*\s*::" />
+			<Float attribute="Float" context="#stay" />
+			<Int attribute="Decimal" context="#stay" />
+		</context>
+		<context attribute="Comment" lineEndContext="#pop" name="comment_single_line" />
+		<context attribute="Comment" lineEndContext="#stay" name="comment_multi_line">
+			<Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" />
+		</context>
+		<context attribute="String" lineEndContext="#stay" name="string">
+			<RegExpr attribute="String" context="#stay" String="\\." />
+			<DetectChar attribute="String" context="#pop" char="&quot;" />
+		</context>
+		<context attribute="Infix Operator" lineEndContext="#stay" name="infix">
+			<DetectChar attribute="Infix Operator" context="#pop" char="`"/>
+		</context>
+		<context attribute="Char" lineEndContext="#pop" name="single_char">
+			<RegExpr attribute="Char" context="#stay" String="\\." />
+			<DetectChar attribute="Char" context="#pop" char="'" />
+		</context>
+		<context attribute="Function Definition" lineEndContext="#pop" name="function_definition">
+			<DetectChar attribute="Function Definition" context="#pop" char=";" />
+		</context>
+	</contexts>
+	<itemDatas>
+		<itemData name="Normal Text"		defStyleNum="dsNormal"/>
+		<itemData name="Module Name" 		defStyleNum="dsNormal"/>
+		<itemData name="Keyword" 		defStyleNum="dsKeyword"/>
+		<itemData name="Function"		defStyleNum="dsFunction"/>
+		<itemData name="Function Definition"	defStyleNum="dsFunction"/>
+		<itemData name="Class"			defStyleNum="dsKeyword"/>
+		<itemData name="Decimal"		defStyleNum="dsDecVal"/>
+		<itemData name="Float"			defStyleNum="dsFloat"/>
+		<itemData name="Char"			defStyleNum="dsChar"/>
+		<itemData name="String"			defStyleNum="dsString"/>
+		<itemData name="Constructor"		defStyleNum="dsOthers"/>
+		<itemData name="Comment"		defStyleNum="dsComment"/>
+		<itemData name="Data Constructor"	defStyleNum="dsKeyword"/>
+		<itemData name="Type Constructor"	defStyleNum="dsDataType"/>
+		<itemData name="Infix Operator"		defStyleNum="dsOthers"/>
+	</itemDatas>
+	</highlighting>
+	<general>
+		<comments>
+			<comment name="singleLine" start="--" />
+			<comment name="multiLine" start="{-" end="-}" />
+		</comments>
+		<keywords casesensitive="1" />
+	</general>
+</language>
diff --git a/xml/haskell.xml.bkp b/xml/haskell.xml.bkp
new file mode 100644
--- /dev/null
+++ b/xml/haskell.xml.bkp
@@ -0,0 +1,387 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!-- Haskell syntax highlighting by Marcel Martin <mmar@freenet.de> -->
+<language name="Haskell" version="1.04" kateversion="2.3" section="Sources" extensions="*.hs" author="Marcel Martin (mmar@freenet.de)" license="">
+	<highlighting>
+	<list name="keywords">
+		<item> case </item>
+		<item> class </item>
+		<item> data </item>
+		<item> deriving </item>
+		<item> do </item>
+		<item> else </item>
+		<item> if </item>
+		<item> in </item>
+		<item> infixl </item>
+		<item> infixr </item>
+		<item> instance </item>
+		<item> let </item>
+		<item> module </item>
+		<item> of </item>
+		<item> primitive </item>
+		<item> then </item>
+		<item> type </item>
+		<item> where </item>
+	</list>
+        <list name="infix operators">
+		<item> quot </item>
+		<item> rem </item>
+		<item> div </item>
+		<item> mod </item>
+		<item> elem </item>
+		<item> notElem </item>
+		<item> seq </item>
+	</list>
+	<list name="functions">
+		<!--
+                These operators are not handled yet.
+		<item> !! </item>
+		<item> % </item>
+		<item> && </item>
+		<item> $! </item>
+		<item> $ </item>
+		<item> * </item>
+		<item> ** </item>
+		<item> - </item>
+		<item> . </item>
+		<item> /= </item>
+		<item> < </item>
+		<item> <= </item>
+		<item> =<< </item>
+		<item> == </item>
+		<item> > </item>
+		<item> >= </item>
+		<item> >> </item>
+		<item> >>= </item>
+		<item> ^ </item>
+		<item> ^^ </item>
+		<item> ++ </item>
+		<item> || </item>
+		//-->
+
+		<item> FilePath </item>
+		<item> IOError </item>
+		<item> abs </item>
+		<item> acos </item>
+		<item> acosh </item>
+		<item> all </item>
+		<item> and </item>
+		<item> any </item>
+		<item> appendFile </item>
+		<item> approxRational </item>
+		<item> asTypeOf </item>
+		<item> asin </item>
+		<item> asinh </item>
+		<item> atan </item>
+		<item> atan2 </item>
+		<item> atanh </item>
+		<item> basicIORun </item>
+		<item> break </item>
+		<item> catch </item>
+		<item> ceiling </item>
+		<item> chr </item>
+		<item> compare </item>
+		<item> concat </item>
+		<item> concatMap </item>
+		<item> const </item>
+		<item> cos </item>
+		<item> cosh </item>
+		<item> curry </item>
+		<item> cycle </item>
+		<item> decodeFloat </item>
+		<item> denominator </item>
+		<item> digitToInt </item>
+		<item> div </item>
+		<item> divMod </item>
+		<item> drop </item>
+		<item> dropWhile </item>
+		<item> either </item>
+		<item> elem </item>
+		<item> encodeFloat </item>
+		<item> enumFrom </item>
+		<item> enumFromThen </item>
+		<item> enumFromThenTo </item>
+		<item> enumFromTo </item>
+		<item> error </item>
+		<item> even </item>
+		<item> exp </item>
+		<item> exponent </item>
+		<item> fail </item>
+		<item> filter </item>
+		<item> flip </item>
+		<item> floatDigits </item>
+		<item> floatRadix </item>
+		<item> floatRange </item>
+		<item> floor </item>
+		<item> fmap </item>
+		<item> foldl </item>
+		<item> foldl1 </item>
+		<item> foldr </item>
+		<item> foldr1 </item>
+		<item> fromDouble </item>
+		<item> fromEnum </item>
+		<item> fromInt </item>
+		<item> fromInteger </item>
+		<item> fromIntegral </item>
+		<item> fromRational </item>
+		<item> fst </item>
+		<item> gcd </item>
+		<item> getChar </item>
+		<item> getContents </item>
+		<item> getLine </item>
+		<item> head </item>
+		<item> id </item>
+		<item> inRange </item>
+		<item> index </item>
+		<item> init </item>
+		<item> intToDigit </item>
+		<item> interact </item>
+		<item> ioError </item>
+		<item> isAlpha </item>
+		<item> isAlphaNum </item>
+		<item> isAscii </item>
+		<item> isControl </item>
+		<item> isDenormalized </item>
+		<item> isDigit </item>
+		<item> isHexDigit </item>
+		<item> isIEEE </item>
+		<item> isInfinite </item>
+		<item> isLower </item>
+		<item> isNaN </item>
+		<item> isNegativeZero </item>
+		<item> isOctDigit </item>
+		<item> isPrint </item>
+		<item> isSpace </item>
+		<item> isUpper </item>
+		<item> iterate </item>
+		<item> last </item>
+		<item> lcm </item>
+		<item> length </item>
+		<item> lex </item>
+		<item> lexDigits </item>
+		<item> lexLitChar </item>
+		<item> lines </item>
+		<item> log </item>
+		<item> logBase </item>
+		<item> lookup </item>
+		<item> map </item>
+		<item> mapM </item>
+		<item> mapM_ </item>
+		<item> max </item>
+		<item> maxBound </item>
+		<item> maximum </item>
+		<item> maybe </item>
+		<item> min </item>
+		<item> minBound </item>
+		<item> minimum </item>
+		<item> mod </item>
+		<item> negate </item>
+		<item> not </item>
+		<item> notElem </item>
+		<item> null </item>
+		<item> numerator </item>
+		<item> odd </item>
+		<item> or </item>
+		<item> ord </item>
+		<item> otherwise </item>
+		<item> pi </item>
+		<item> pred </item>
+		<item> primExitWith </item>
+		<item> print </item>
+		<item> product </item>
+		<item> properFraction </item>
+		<item> putChar </item>
+		<item> putStr </item>
+		<item> putStrLn </item>
+		<item> quot </item>
+		<item> quotRem </item>
+		<item> range </item>
+		<item> rangeSize </item>
+		<item> read </item>
+		<item> readDec </item>
+		<item> readFile </item>
+		<item> readFloat </item>
+		<item> readHex </item>
+		<item> readIO </item>
+		<item> readInt </item>
+		<item> readList </item>
+		<item> readLitChar </item>
+		<item> readLn </item>
+		<item> readOct </item>
+		<item> readParen </item>
+		<item> readSigned </item>
+		<item> reads </item>
+		<item> readsPrec </item>
+		<item> realToFrac </item>
+		<item> recip </item>
+		<item> rem </item>
+		<item> repeat </item>
+		<item> replicate </item>
+		<item> return </item>
+		<item> reverse </item>
+		<item> round </item>
+		<item> scaleFloat </item>
+		<item> scanl </item>
+		<item> scanl1 </item>
+		<item> scanr </item>
+		<item> scanr1 </item>
+		<item> seq </item>
+		<item> sequence </item>
+		<item> sequence_ </item>
+		<item> show </item>
+		<item> showChar </item>
+		<item> showInt </item>
+		<item> showList </item>
+		<item> showLitChar </item>
+		<item> showParen </item>
+		<item> showSigned </item>
+		<item> showString </item>
+		<item> shows </item>
+		<item> showsPrec </item>
+		<item> significand </item>
+		<item> signum </item>
+		<item> sin </item>
+		<item> sinh </item>
+		<item> snd </item>
+		<item> span </item>
+		<item> splitAt </item>
+		<item> sqrt </item>
+		<item> subtract </item>
+		<item> succ </item>
+		<item> sum </item>
+		<item> tail </item>
+		<item> take </item>
+		<item> takeWhile </item>
+		<item> tan </item>
+		<item> tanh </item>
+		<item> threadToIOResult </item>
+		<item> toEnum </item>
+		<item> toInt </item>
+		<item> toInteger </item>
+		<item> toLower </item>
+		<item> toRational </item>
+		<item> toUpper </item>
+		<item> truncate </item>
+		<item> uncurry </item>
+		<item> undefined </item>
+		<item> unlines </item>
+		<item> until </item>
+		<item> unwords </item>
+		<item> unzip </item>
+		<item> unzip3 </item>
+		<item> userError </item>
+		<item> words </item>
+		<item> writeFile </item>
+		<item> zip </item>
+		<item> zip3 </item>
+		<item> zipWith </item>
+		<item> zipWith3 </item>
+	</list>
+	<list name="type constructors">
+		<item> Bool </item>
+		<item> Char </item>
+                <item> Double </item>
+		<item> Either </item>
+		<item> Float </item>
+		<item> IO </item>
+		<item> Integer </item>
+		<item> Int </item>
+		<item> Maybe </item>
+		<item> Ordering </item>
+		<item> Rational </item>
+		<item> Ratio </item>
+		<item> ReadS </item>
+		<item> ShowS </item>
+		<item> String </item>
+
+	</list>
+	<list name="classes">
+		<item> Bounded </item>
+		<item> Enum </item>
+		<item> Eq </item>
+		<item> Floating </item>
+		<item> Fractional </item>
+		<item> Functor </item>
+		<item> Integral </item>
+		<item> Ix </item>
+		<item> Monad </item>
+		<item> Num </item>
+		<item> Ord </item>
+		<item> Read </item>
+		<item> RealFloat </item>
+		<item> RealFrac </item>
+		<item> Real </item>
+		<item> Show </item>
+	</list>
+	<list name="data constructors">
+		<item> EQ </item>
+		<item> False </item>
+		<item> GT </item>
+		<item> Just </item>
+		<item> LT </item>
+		<item> Left </item>
+		<item> Nothing </item>
+		<item> Right </item>
+		<item> True </item>
+	</list>
+	<contexts>
+		<context attribute="Normal Text" lineEndContext="#stay" name="normal">
+			<Detect2Chars attribute="Comment" context="comment_multi_line" char="{" char1="-" />
+			<Detect2Chars attribute="Comment" context="comment_single_line" char="-" char1="-" />
+			<keyword attribute="Keyword" context="#stay" String="keywords" />
+			<keyword attribute="Class" context="#stay" String="classes" />
+			<keyword attribute="Type Constructor" context="#stay" String="type constructors" />
+			<keyword attribute="Function" context="#stay" String="functions" />
+			<keyword attribute="Data Constructor" context="#stay" String="data constructors" />
+			<DetectChar attribute="String" context="string" char="&quot;" />
+			<DetectChar attribute="Infix Operator" context="infix" char="`"/>
+			<RegExpr attribute="Normal Text" context="#stay" String="\w[']+" />
+			<DetectChar attribute="Char" context="single_char" char="'" />
+			<RegExpr attribute="Function Definition" context="#stay" String="[a-z_]+\w*'*\s*::" />
+			<Float attribute="Float" context="#stay" />
+			<Int attribute="Decimal" context="#stay" />
+		</context>
+		<context attribute="Comment" lineEndContext="#pop" name="comment_single_line" />
+		<context attribute="Comment" lineEndContext="#stay" name="comment_multi_line">
+			<Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" />
+		</context>
+		<context attribute="String" lineEndContext="#stay" name="string">
+			<RegExpr attribute="String" context="#stay" String="\\." />
+			<DetectChar attribute="String" context="#pop" char="&quot;" />
+		</context>
+		<context attribute="Infix Operator" lineEndContext="#stay" name="infix">
+			<DetectChar attribute="Infix Operator" context="#pop" char="`"/>
+		</context>
+		<context attribute="Char" lineEndContext="#pop" name="single_char">
+			<RegExpr attribute="Char" context="#stay" String="\\." />
+			<DetectChar attribute="Char" context="#pop" char="'" />
+		</context>
+		<context attribute="Function Definition" lineEndContext="#pop" name="function_definition">
+			<DetectChar attribute="Function Definition" context="#pop" char=";" />
+		</context>
+	</contexts>
+	<itemDatas>
+		<itemData name="Normal Text"		defStyleNum="dsNormal"/>
+		<itemData name="Keyword" 		defStyleNum="dsKeyword"/>
+		<itemData name="Function"		defStyleNum="dsFunction"/>
+		<itemData name="Function Definition"	defStyleNum="dsFunction"/>
+		<itemData name="Class"			defStyleNum="dsKeyword"/>
+		<itemData name="Decimal"		defStyleNum="dsDecVal"/>
+		<itemData name="Float"			defStyleNum="dsFloat"/>
+		<itemData name="Char"			defStyleNum="dsChar"/>
+		<itemData name="String"			defStyleNum="dsString"/>
+		<itemData name="Constructor"		defStyleNum="dsOthers"/>
+		<itemData name="Comment"		defStyleNum="dsComment"/>
+		<itemData name="Data Constructor"	defStyleNum="dsKeyword"/>
+		<itemData name="Type Constructor"	defStyleNum="dsDataType"/>
+		<itemData name="Infix Operator"		defStyleNum="dsOthers"/>
+	</itemDatas>
+	</highlighting>
+	<general>
+		<comments>
+			<comment name="singleLine" start="--" />
+			<comment name="multiLine" start="{-" end="-}" />
+		</comments>
+		<keywords casesensitive="1" />
+	</general>
+</language>
diff --git a/xml/html.xml b/xml/html.xml
new file mode 100644
--- /dev/null
+++ b/xml/html.xml
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+	<!ENTITY name    "[A-Za-z_:][\w.:_-]*">
+	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
+]>
+<language name="HTML" version="1.99" kateversion="2.4" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm" mimetype="text/html"  author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+
+<highlighting>
+<contexts>
+  <context name="Start" attribute="Normal Text" lineEndContext="#stay">
+    <IncludeRules context="FindHTML" />
+  </context>
+
+  <context name="FindHTML" attribute="Normal Text" lineEndContext="#stay">
+    <DetectSpaces/>
+    <DetectIdentifier/>
+    <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
+    <StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
+    <RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" beginRegion="doctype" />
+    <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
+    <RegExpr attribute="Element" context="CSS" String="&lt;style\b" insensitive="TRUE" beginRegion="style" />
+    <RegExpr attribute="Element" context="JS" String="&lt;script\b" insensitive="TRUE" beginRegion="script" />
+    <RegExpr attribute="Element" context="El Open" String="&lt;pre\b" insensitive="TRUE" beginRegion="pre" />
+    <RegExpr attribute="Element" context="El Open" String="&lt;div\b" insensitive="TRUE" beginRegion="div" />
+    <RegExpr attribute="Element" context="El Open" String="&lt;table\b" insensitive="TRUE" beginRegion="table" />
+    <RegExpr attribute="Element" context="El Open" String="&lt;ul\b" insensitive="TRUE" beginRegion="ul" />
+    <RegExpr attribute="Element" context="El Open" String="&lt;ol\b" insensitive="TRUE" beginRegion="ol" />
+    <RegExpr attribute="Element" context="El Open" String="&lt;dl\b" insensitive="TRUE" beginRegion="dl" />
+    <RegExpr attribute="Element" context="El Open" String="&lt;&name;" />
+    <RegExpr attribute="Element" context="El Close" String="&lt;/pre\b" insensitive="TRUE" endRegion="pre" />
+    <RegExpr attribute="Element" context="El Close" String="&lt;/div\b" insensitive="TRUE" endRegion="div" />
+    <RegExpr attribute="Element" context="El Close" String="&lt;/table\b" insensitive="TRUE" endRegion="table" />
+    <RegExpr attribute="Element" context="El Close" String="&lt;/ul\b" insensitive="TRUE" endRegion="ul" />
+    <RegExpr attribute="Element" context="El Close" String="&lt;/ol\b" insensitive="TRUE" endRegion="ol" />
+    <RegExpr attribute="Element" context="El Close" String="&lt;/dl\b" insensitive="TRUE" endRegion="dl" />
+    <RegExpr attribute="Element" context="El Close" String="&lt;/&name;" />
+    <!-- as long as kde gives DTDs the text/html mimetype--><IncludeRules context="FindDTDRules" />
+    <IncludeRules context="FindEntityRefs" />
+  </context>
+
+  <context name="FindEntityRefs" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
+    <AnyChar attribute="Error" context="#stay" String="&amp;&lt;" />
+  </context>
+
+  <context name="FindPEntityRefs" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
+    <RegExpr attribute="PEntityRef" context="#stay" String="%&name;;" />
+    <AnyChar attribute="Error" context="#stay" String="&amp;%" />
+  </context>
+
+  <context name="FindAttributes" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="Attribute" context="#stay" String="&name;" column="0"/>
+    <RegExpr attribute="Attribute" context="#stay" String="\s+&name;" />
+    <DetectChar attribute="Attribute" context="Value" char="=" />
+  </context>
+
+  <context name="FindDTDRules" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="Doctype" context="Doctype Markupdecl" String="&lt;!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />
+  </context>
+
+
+  <context name="Comment" attribute="Comment" lineEndContext="#stay">
+    <DetectSpaces/>
+    <IncludeRules context="##Alerts" />
+    <DetectIdentifier/>
+    <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
+    <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />
+  </context>
+
+  <context name="CDATA" attribute="Normal Text" lineEndContext="#stay">
+    <DetectSpaces/>
+    <DetectIdentifier/>
+    <StringDetect attribute="CDATA" context="#pop" String="]]&gt;" endRegion="cdata" />
+    <StringDetect attribute="EntityRef" context="#stay" String="]]&amp;gt;" />
+  </context>
+
+  <context name="PI" attribute="Normal Text" lineEndContext="#stay">
+    <Detect2Chars attribute="Processing Instruction" context="#pop" char="?" char1="&gt;" endRegion="pi" />
+  </context>
+
+  <context name="Doctype" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Doctype" context="#pop" char="&gt;" endRegion="doctype" />
+    <DetectChar attribute="Doctype" context="Doctype Internal Subset" char="[" beginRegion="int_subset" />
+  </context>
+
+  <context name="Doctype Internal Subset" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Doctype" context="#pop" char="]" endRegion="int_subset" />
+    <IncludeRules context="FindDTDRules" />
+    <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
+    <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
+    <IncludeRules context="FindPEntityRefs" />
+  </context>
+
+  <context name="Doctype Markupdecl" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Doctype" context="#pop" char="&gt;" />
+    <DetectChar attribute="Value" context="Doctype Markupdecl DQ" char="&quot;" />
+    <DetectChar attribute="Value" context="Doctype Markupdecl SQ" char="&apos;" />
+  </context>
+
+  <context name="Doctype Markupdecl DQ" attribute="Value" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="#pop" char="&quot;" />
+    <IncludeRules context="FindPEntityRefs" />
+  </context>
+
+  <context name="Doctype Markupdecl SQ" attribute="Value" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="#pop" char="&apos;" />
+    <IncludeRules context="FindPEntityRefs" />
+  </context>
+
+  <context name="El Open" attribute="Normal Text" lineEndContext="#stay">
+    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" />
+    <DetectChar attribute="Element" context="#pop" char="&gt;" />
+    <IncludeRules context="FindAttributes" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="El Close" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Element" context="#pop" char="&gt;" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="El Close 2" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Element" context="#pop#pop#pop" char="&gt;" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="El Close 3" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Element" context="#pop#pop#pop#pop" char="&gt;" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="CSS" attribute="Normal Text" lineEndContext="#stay">
+    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="style" />
+    <DetectChar attribute="Element" context="CSS content" char="&gt;" />
+    <IncludeRules context="FindAttributes" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="CSS content" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="Element" context="El Close 2" String="&lt;/style\b" insensitive="TRUE" endRegion="style" />
+    <IncludeRules context="##CSS" includeAttrib="true"/>
+  </context>
+
+  <context name="JS" attribute="Normal Text" lineEndContext="#stay">
+    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="script" />
+    <DetectChar attribute="Element" context="JS content" char="&gt;" />
+    <IncludeRules context="FindAttributes" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="JS content" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="TRUE" endRegion="script" />
+    <RegExpr attribute="Comment" context="JS comment close" String="//(?=.*&lt;/script\b)" insensitive="TRUE" />
+    <IncludeRules context="##JavaScript" includeAttrib="true"/>
+  </context>
+
+  <context name="JS comment close" attribute="Comment" lineEndContext="#pop">
+    <RegExpr attribute="Element" context="El Close 3" String="&lt;/script\b" insensitive="TRUE" endRegion="script" />
+    <IncludeRules context="##Alerts" />
+  </context>
+
+  <context name="Value" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Value NQ">
+    <DetectChar attribute="Value" context="Value DQ" char="&quot;" />
+    <DetectChar attribute="Value" context="Value SQ" char="&apos;" />
+    <DetectSpaces />
+  </context>
+
+  <context name="Value NQ" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+    <IncludeRules context="FindEntityRefs" />
+    <RegExpr attribute="Value" context="#stay" String="/(?!&gt;)" />
+    <RegExpr attribute="Value" context="#stay" String="[^/&gt;&lt;&quot;&apos;\s]" />
+  </context>
+
+  <context name="Value DQ" attribute="Value" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="#pop#pop" char="&quot;" />
+    <IncludeRules context="FindEntityRefs" />
+  </context>
+
+  <context name="Value SQ" attribute="Value" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="#pop#pop" char="&apos;" />
+    <IncludeRules context="FindEntityRefs" />
+  </context>
+
+</contexts>
+<itemDatas>
+  <itemData name="Normal Text" defStyleNum="dsNormal" />
+  <itemData name="Comment" defStyleNum="dsComment" />
+  <itemData name="CDATA" defStyleNum="dsBaseN" bold="1" />
+  <itemData name="Processing Instruction" defStyleNum="dsKeyword" />
+  <itemData name="Doctype" defStyleNum="dsDataType" bold="1" />
+  <itemData name="Element" defStyleNum="dsKeyword" />
+  <itemData name="Attribute" defStyleNum="dsOthers" />
+  <itemData name="Value" defStyleNum="dsString" color="#a00" />
+  <itemData name="EntityRef" defStyleNum="dsDecVal" />
+  <itemData name="PEntityRef" defStyleNum="dsDecVal" />
+  <itemData name="Error" defStyleNum="dsError" />
+</itemDatas>
+
+</highlighting>
+<general>
+  <comments>
+    <comment name="multiLine" start="&lt;!--" end="--&gt;" />
+  </comments>
+</general>
+</language>
diff --git a/xml/java.xml b/xml/java.xml
new file mode 100644
--- /dev/null
+++ b/xml/java.xml
@@ -0,0 +1,3864 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="Java" version="1.19" kateversion="2.4" section="Sources" extensions="*.java" mimetype="text/x-java" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
+	<highlighting>
+		<list name="java15">
+			<item> ACTIVE </item>
+			<item> ACTIVITY_COMPLETED </item>
+			<item> ACTIVITY_REQUIRED </item>
+			<item> ARG_IN </item>
+			<item> ARG_INOUT </item>
+			<item> ARG_OUT </item>
+			<item> AWTError </item>
+			<item> AWTEvent </item>
+			<item> AWTEventListener </item>
+			<item> AWTEventListenerProxy </item>
+			<item> AWTEventMulticaster </item>
+			<item> AWTException </item>
+			<item> AWTKeyStroke </item>
+			<item> AWTPermission </item>
+			<item> AbstractAction </item>
+			<item> AbstractBorder </item>
+			<item> AbstractButton </item>
+			<item> AbstractCellEditor </item>
+			<item> AbstractCollection </item>
+			<item> AbstractColorChooserPanel </item>
+			<item> AbstractDocument </item>
+			<item> AbstractDocument.AttributeContext </item>
+			<item> AbstractDocument.Content </item>
+			<item> AbstractDocument.ElementEdit </item>
+			<item> AbstractExecutorService </item>
+			<item> AbstractInterruptibleChannel </item>
+			<item> AbstractLayoutCache </item>
+			<item> AbstractLayoutCache.NodeDimensions </item>
+			<item> AbstractList </item>
+			<item> AbstractListModel </item>
+			<item> AbstractMap </item>
+			<item> AbstractMethodError </item>
+			<item> AbstractPreferences </item>
+			<item> AbstractQueue </item>
+			<item> AbstractQueuedSynchronizer </item>
+			<item> AbstractSelectableChannel </item>
+			<item> AbstractSelectionKey </item>
+			<item> AbstractSelector </item>
+			<item> AbstractSequentialList </item>
+			<item> AbstractSet </item>
+			<item> AbstractSpinnerModel </item>
+			<item> AbstractTableModel </item>
+			<item> AbstractUndoableEdit </item>
+			<item> AbstractWriter </item>
+			<item> AccessControlContext </item>
+			<item> AccessControlException </item>
+			<item> AccessController </item>
+			<item> AccessException </item>
+			<item> Accessible </item>
+			<item> AccessibleAction </item>
+			<item> AccessibleAttributeSequence </item>
+			<item> AccessibleBundle </item>
+			<item> AccessibleComponent </item>
+			<item> AccessibleContext </item>
+			<item> AccessibleEditableText </item>
+			<item> AccessibleExtendedComponent </item>
+			<item> AccessibleExtendedTable </item>
+			<item> AccessibleExtendedText </item>
+			<item> AccessibleHyperlink </item>
+			<item> AccessibleHypertext </item>
+			<item> AccessibleIcon </item>
+			<item> AccessibleKeyBinding </item>
+			<item> AccessibleObject </item>
+			<item> AccessibleRelation </item>
+			<item> AccessibleRelationSet </item>
+			<item> AccessibleResourceBundle </item>
+			<item> AccessibleRole </item>
+			<item> AccessibleSelection </item>
+			<item> AccessibleState </item>
+			<item> AccessibleStateSet </item>
+			<item> AccessibleStreamable </item>
+			<item> AccessibleTable </item>
+			<item> AccessibleTableModelChange </item>
+			<item> AccessibleText </item>
+			<item> AccessibleTextSequence </item>
+			<item> AccessibleValue </item>
+			<item> AccountException </item>
+			<item> AccountExpiredException </item>
+			<item> AccountLockedException </item>
+			<item> AccountNotFoundException </item>
+			<item> Acl </item>
+			<item> AclEntry </item>
+			<item> AclNotFoundException </item>
+			<item> Action </item>
+			<item> ActionEvent </item>
+			<item> ActionListener </item>
+			<item> ActionMap </item>
+			<item> ActionMapUIResource </item>
+			<item> Activatable </item>
+			<item> ActivateFailedException </item>
+			<item> ActivationDesc </item>
+			<item> ActivationException </item>
+			<item> ActivationGroup </item>
+			<item> ActivationGroupDesc </item>
+			<item> ActivationGroupDesc.CommandEnvironment </item>
+			<item> ActivationGroupID </item>
+			<item> ActivationGroup_Stub </item>
+			<item> ActivationID </item>
+			<item> ActivationInstantiator </item>
+			<item> ActivationMonitor </item>
+			<item> ActivationSystem </item>
+			<item> Activator </item>
+			<item> ActiveEvent </item>
+			<item> ActivityCompletedException </item>
+			<item> ActivityRequiredException </item>
+			<item> AdapterActivator </item>
+			<item> AdapterActivatorOperations </item>
+			<item> AdapterAlreadyExists </item>
+			<item> AdapterAlreadyExistsHelper </item>
+			<item> AdapterInactive </item>
+			<item> AdapterInactiveHelper </item>
+			<item> AdapterManagerIdHelper </item>
+			<item> AdapterNameHelper </item>
+			<item> AdapterNonExistent </item>
+			<item> AdapterNonExistentHelper </item>
+			<item> AdapterStateHelper </item>
+			<item> AddressHelper </item>
+			<item> Adjustable </item>
+			<item> AdjustmentEvent </item>
+			<item> AdjustmentListener </item>
+			<item> Adler32 </item>
+			<item> AffineTransform </item>
+			<item> AffineTransformOp </item>
+			<item> AlgorithmParameterGenerator </item>
+			<item> AlgorithmParameterGeneratorSpi </item>
+			<item> AlgorithmParameterSpec </item>
+			<item> AlgorithmParameters </item>
+			<item> AlgorithmParametersSpi </item>
+			<item> AllPermission </item>
+			<item> AlphaComposite </item>
+			<item> AlreadyBound </item>
+			<item> AlreadyBoundException </item>
+			<item> AlreadyBoundHelper </item>
+			<item> AlreadyBoundHolder </item>
+			<item> AlreadyConnectedException </item>
+			<item> AncestorEvent </item>
+			<item> AncestorListener </item>
+			<item> AnnotatedElement </item>
+			<item> Annotation </item>
+			<item> Annotation </item>
+			<item> AnnotationFormatError </item>
+			<item> AnnotationTypeMismatchException </item>
+			<item> Any </item>
+			<item> AnyHolder </item>
+			<item> AnySeqHelper </item>
+			<item> AnySeqHelper </item>
+			<item> AnySeqHolder </item>
+			<item> AppConfigurationEntry </item>
+			<item> AppConfigurationEntry.LoginModuleControlFlag </item>
+			<item> Appendable </item>
+			<item> Applet </item>
+			<item> AppletContext </item>
+			<item> AppletInitializer </item>
+			<item> AppletStub </item>
+			<item> ApplicationException </item>
+			<item> Arc2D </item>
+			<item> Arc2D.Double </item>
+			<item> Arc2D.Float </item>
+			<item> Area </item>
+			<item> AreaAveragingScaleFilter </item>
+			<item> ArithmeticException </item>
+			<item> Array </item>
+			<item> Array </item>
+			<item> ArrayBlockingQueue </item>
+			<item> ArrayIndexOutOfBoundsException </item>
+			<item> ArrayList </item>
+			<item> ArrayStoreException </item>
+			<item> ArrayType </item>
+			<item> Arrays </item>
+			<item> AssertionError </item>
+			<item> AsyncBoxView </item>
+			<item> AsynchronousCloseException </item>
+			<item> AtomicBoolean </item>
+			<item> AtomicInteger </item>
+			<item> AtomicIntegerArray </item>
+			<item> AtomicIntegerFieldUpdater </item>
+			<item> AtomicLong </item>
+			<item> AtomicLongArray </item>
+			<item> AtomicLongFieldUpdater </item>
+			<item> AtomicMarkableReference </item>
+			<item> AtomicReference </item>
+			<item> AtomicReferenceArray </item>
+			<item> AtomicReferenceFieldUpdater </item>
+			<item> AtomicStampedReference </item>
+			<item> Attr </item>
+			<item> Attribute </item>
+			<item> Attribute </item>
+			<item> Attribute </item>
+			<item> AttributeChangeNotification </item>
+			<item> AttributeChangeNotificationFilter </item>
+			<item> AttributeException </item>
+			<item> AttributeInUseException </item>
+			<item> AttributeList </item>
+			<item> AttributeList </item>
+			<item> AttributeList </item>
+			<item> AttributeListImpl </item>
+			<item> AttributeModificationException </item>
+			<item> AttributeNotFoundException </item>
+			<item> AttributeSet </item>
+			<item> AttributeSet </item>
+			<item> AttributeSet.CharacterAttribute </item>
+			<item> AttributeSet.ColorAttribute </item>
+			<item> AttributeSet.FontAttribute </item>
+			<item> AttributeSet.ParagraphAttribute </item>
+			<item> AttributeSetUtilities </item>
+			<item> AttributeValueExp </item>
+			<item> AttributedCharacterIterator </item>
+			<item> AttributedCharacterIterator.Attribute </item>
+			<item> AttributedString </item>
+			<item> Attributes </item>
+			<item> Attributes </item>
+			<item> Attributes </item>
+			<item> Attributes.Name </item>
+			<item> Attributes2 </item>
+			<item> Attributes2Impl </item>
+			<item> AttributesImpl </item>
+			<item> AudioClip </item>
+			<item> AudioFileFormat </item>
+			<item> AudioFileFormat.Type </item>
+			<item> AudioFileReader </item>
+			<item> AudioFileWriter </item>
+			<item> AudioFormat </item>
+			<item> AudioFormat.Encoding </item>
+			<item> AudioInputStream </item>
+			<item> AudioPermission </item>
+			<item> AudioSystem </item>
+			<item> AuthPermission </item>
+			<item> AuthProvider </item>
+			<item> AuthenticationException </item>
+			<item> AuthenticationException </item>
+			<item> AuthenticationNotSupportedException </item>
+			<item> Authenticator </item>
+			<item> Authenticator.RequestorType </item>
+			<item> AuthorizeCallback </item>
+			<item> Autoscroll </item>
+			<item> BAD_CONTEXT </item>
+			<item> BAD_INV_ORDER </item>
+			<item> BAD_OPERATION </item>
+			<item> BAD_PARAM </item>
+			<item> BAD_POLICY </item>
+			<item> BAD_POLICY_TYPE </item>
+			<item> BAD_POLICY_VALUE </item>
+			<item> BAD_QOS </item>
+			<item> BAD_TYPECODE </item>
+			<item> BMPImageWriteParam </item>
+			<item> BackingStoreException </item>
+			<item> BadAttributeValueExpException </item>
+			<item> BadBinaryOpValueExpException </item>
+			<item> BadKind </item>
+			<item> BadLocationException </item>
+			<item> BadPaddingException </item>
+			<item> BadStringOperationException </item>
+			<item> BandCombineOp </item>
+			<item> BandedSampleModel </item>
+			<item> BaseRowSet </item>
+			<item> BasicArrowButton </item>
+			<item> BasicAttribute </item>
+			<item> BasicAttributes </item>
+			<item> BasicBorders </item>
+			<item> BasicBorders.ButtonBorder </item>
+			<item> BasicBorders.FieldBorder </item>
+			<item> BasicBorders.MarginBorder </item>
+			<item> BasicBorders.MenuBarBorder </item>
+			<item> BasicBorders.RadioButtonBorder </item>
+			<item> BasicBorders.RolloverButtonBorder </item>
+			<item> BasicBorders.SplitPaneBorder </item>
+			<item> BasicBorders.ToggleButtonBorder </item>
+			<item> BasicButtonListener </item>
+			<item> BasicButtonUI </item>
+			<item> BasicCheckBoxMenuItemUI </item>
+			<item> BasicCheckBoxUI </item>
+			<item> BasicColorChooserUI </item>
+			<item> BasicComboBoxEditor </item>
+			<item> BasicComboBoxEditor.UIResource </item>
+			<item> BasicComboBoxRenderer </item>
+			<item> BasicComboBoxRenderer.UIResource </item>
+			<item> BasicComboBoxUI </item>
+			<item> BasicComboPopup </item>
+			<item> BasicControl </item>
+			<item> BasicDesktopIconUI </item>
+			<item> BasicDesktopPaneUI </item>
+			<item> BasicDirectoryModel </item>
+			<item> BasicEditorPaneUI </item>
+			<item> BasicFileChooserUI </item>
+			<item> BasicFormattedTextFieldUI </item>
+			<item> BasicGraphicsUtils </item>
+			<item> BasicHTML </item>
+			<item> BasicIconFactory </item>
+			<item> BasicInternalFrameTitlePane </item>
+			<item> BasicInternalFrameUI </item>
+			<item> BasicLabelUI </item>
+			<item> BasicListUI </item>
+			<item> BasicLookAndFeel </item>
+			<item> BasicMenuBarUI </item>
+			<item> BasicMenuItemUI </item>
+			<item> BasicMenuUI </item>
+			<item> BasicOptionPaneUI </item>
+			<item> BasicOptionPaneUI.ButtonAreaLayout </item>
+			<item> BasicPanelUI </item>
+			<item> BasicPasswordFieldUI </item>
+			<item> BasicPermission </item>
+			<item> BasicPopupMenuSeparatorUI </item>
+			<item> BasicPopupMenuUI </item>
+			<item> BasicProgressBarUI </item>
+			<item> BasicRadioButtonMenuItemUI </item>
+			<item> BasicRadioButtonUI </item>
+			<item> BasicRootPaneUI </item>
+			<item> BasicScrollBarUI </item>
+			<item> BasicScrollPaneUI </item>
+			<item> BasicSeparatorUI </item>
+			<item> BasicSliderUI </item>
+			<item> BasicSpinnerUI </item>
+			<item> BasicSplitPaneDivider </item>
+			<item> BasicSplitPaneUI </item>
+			<item> BasicStroke </item>
+			<item> BasicTabbedPaneUI </item>
+			<item> BasicTableHeaderUI </item>
+			<item> BasicTableUI </item>
+			<item> BasicTextAreaUI </item>
+			<item> BasicTextFieldUI </item>
+			<item> BasicTextPaneUI </item>
+			<item> BasicTextUI </item>
+			<item> BasicTextUI.BasicCaret </item>
+			<item> BasicTextUI.BasicHighlighter </item>
+			<item> BasicToggleButtonUI </item>
+			<item> BasicToolBarSeparatorUI </item>
+			<item> BasicToolBarUI </item>
+			<item> BasicToolTipUI </item>
+			<item> BasicTreeUI </item>
+			<item> BasicViewportUI </item>
+			<item> BatchUpdateException </item>
+			<item> BeanContext </item>
+			<item> BeanContextChild </item>
+			<item> BeanContextChildComponentProxy </item>
+			<item> BeanContextChildSupport </item>
+			<item> BeanContextContainerProxy </item>
+			<item> BeanContextEvent </item>
+			<item> BeanContextMembershipEvent </item>
+			<item> BeanContextMembershipListener </item>
+			<item> BeanContextProxy </item>
+			<item> BeanContextServiceAvailableEvent </item>
+			<item> BeanContextServiceProvider </item>
+			<item> BeanContextServiceProviderBeanInfo </item>
+			<item> BeanContextServiceRevokedEvent </item>
+			<item> BeanContextServiceRevokedListener </item>
+			<item> BeanContextServices </item>
+			<item> BeanContextServicesListener </item>
+			<item> BeanContextServicesSupport </item>
+			<item> BeanContextServicesSupport.BCSSServiceProvider </item>
+			<item> BeanContextSupport </item>
+			<item> BeanContextSupport.BCSIterator </item>
+			<item> BeanDescriptor </item>
+			<item> BeanInfo </item>
+			<item> Beans </item>
+			<item> BevelBorder </item>
+			<item> Bidi </item>
+			<item> BigDecimal </item>
+			<item> BigInteger </item>
+			<item> BinaryRefAddr </item>
+			<item> BindException </item>
+			<item> Binding </item>
+			<item> Binding </item>
+			<item> BindingHelper </item>
+			<item> BindingHolder </item>
+			<item> BindingIterator </item>
+			<item> BindingIteratorHelper </item>
+			<item> BindingIteratorHolder </item>
+			<item> BindingIteratorOperations </item>
+			<item> BindingIteratorPOA </item>
+			<item> BindingListHelper </item>
+			<item> BindingListHolder </item>
+			<item> BindingType </item>
+			<item> BindingTypeHelper </item>
+			<item> BindingTypeHolder </item>
+			<item> BitSet </item>
+			<item> Blob </item>
+			<item> BlockView </item>
+			<item> BlockingQueue </item>
+			<item> Book </item>
+			<item> Boolean </item>
+			<item> BooleanControl </item>
+			<item> BooleanControl.Type </item>
+			<item> BooleanHolder </item>
+			<item> BooleanSeqHelper </item>
+			<item> BooleanSeqHolder </item>
+			<item> Border </item>
+			<item> BorderFactory </item>
+			<item> BorderLayout </item>
+			<item> BorderUIResource </item>
+			<item> BorderUIResource.BevelBorderUIResource </item>
+			<item> BorderUIResource.CompoundBorderUIResource </item>
+			<item> BorderUIResource.EmptyBorderUIResource </item>
+			<item> BorderUIResource.EtchedBorderUIResource </item>
+			<item> BorderUIResource.LineBorderUIResource </item>
+			<item> BorderUIResource.MatteBorderUIResource </item>
+			<item> BorderUIResource.TitledBorderUIResource </item>
+			<item> BoundedRangeModel </item>
+			<item> Bounds </item>
+			<item> Bounds </item>
+			<item> Box </item>
+			<item> Box.Filler </item>
+			<item> BoxLayout </item>
+			<item> BoxView </item>
+			<item> BoxedValueHelper </item>
+			<item> BreakIterator </item>
+			<item> BrokenBarrierException </item>
+			<item> Buffer </item>
+			<item> BufferCapabilities </item>
+			<item> BufferCapabilities.FlipContents </item>
+			<item> BufferOverflowException </item>
+			<item> BufferStrategy </item>
+			<item> BufferUnderflowException </item>
+			<item> BufferedImage </item>
+			<item> BufferedImageFilter </item>
+			<item> BufferedImageOp </item>
+			<item> BufferedInputStream </item>
+			<item> BufferedOutputStream </item>
+			<item> BufferedReader </item>
+			<item> BufferedWriter </item>
+			<item> Button </item>
+			<item> ButtonGroup </item>
+			<item> ButtonModel </item>
+			<item> ButtonUI </item>
+			<item> Byte </item>
+			<item> ByteArrayInputStream </item>
+			<item> ByteArrayOutputStream </item>
+			<item> ByteBuffer </item>
+			<item> ByteChannel </item>
+			<item> ByteHolder </item>
+			<item> ByteLookupTable </item>
+			<item> ByteOrder </item>
+			<item> CDATASection </item>
+			<item> CMMException </item>
+			<item> CODESET_INCOMPATIBLE </item>
+			<item> COMM_FAILURE </item>
+			<item> CRC32 </item>
+			<item> CRL </item>
+			<item> CRLException </item>
+			<item> CRLSelector </item>
+			<item> CSS </item>
+			<item> CSS.Attribute </item>
+			<item> CTX_RESTRICT_SCOPE </item>
+			<item> CacheRequest </item>
+			<item> CacheResponse </item>
+			<item> CachedRowSet </item>
+			<item> Calendar </item>
+			<item> Callable </item>
+			<item> CallableStatement </item>
+			<item> Callback </item>
+			<item> CallbackHandler </item>
+			<item> CancelablePrintJob </item>
+			<item> CancellationException </item>
+			<item> CancelledKeyException </item>
+			<item> CannotProceed </item>
+			<item> CannotProceedException </item>
+			<item> CannotProceedHelper </item>
+			<item> CannotProceedHolder </item>
+			<item> CannotRedoException </item>
+			<item> CannotUndoException </item>
+			<item> Canvas </item>
+			<item> CardLayout </item>
+			<item> Caret </item>
+			<item> CaretEvent </item>
+			<item> CaretListener </item>
+			<item> CellEditor </item>
+			<item> CellEditorListener </item>
+			<item> CellRendererPane </item>
+			<item> CertPath </item>
+			<item> CertPath.CertPathRep </item>
+			<item> CertPathBuilder </item>
+			<item> CertPathBuilderException </item>
+			<item> CertPathBuilderResult </item>
+			<item> CertPathBuilderSpi </item>
+			<item> CertPathParameters </item>
+			<item> CertPathTrustManagerParameters </item>
+			<item> CertPathValidator </item>
+			<item> CertPathValidatorException </item>
+			<item> CertPathValidatorResult </item>
+			<item> CertPathValidatorSpi </item>
+			<item> CertSelector </item>
+			<item> CertStore </item>
+			<item> CertStoreException </item>
+			<item> CertStoreParameters </item>
+			<item> CertStoreSpi </item>
+			<item> Certificate </item>
+			<item> Certificate </item>
+			<item> Certificate </item>
+			<item> Certificate.CertificateRep </item>
+			<item> CertificateEncodingException </item>
+			<item> CertificateEncodingException </item>
+			<item> CertificateException </item>
+			<item> CertificateException </item>
+			<item> CertificateExpiredException </item>
+			<item> CertificateExpiredException </item>
+			<item> CertificateFactory </item>
+			<item> CertificateFactorySpi </item>
+			<item> CertificateNotYetValidException </item>
+			<item> CertificateNotYetValidException </item>
+			<item> CertificateParsingException </item>
+			<item> CertificateParsingException </item>
+			<item> ChangeEvent </item>
+			<item> ChangeListener </item>
+			<item> ChangedCharSetException </item>
+			<item> Channel </item>
+			<item> ChannelBinding </item>
+			<item> Channels </item>
+			<item> CharArrayReader </item>
+			<item> CharArrayWriter </item>
+			<item> CharBuffer </item>
+			<item> CharConversionException </item>
+			<item> CharHolder </item>
+			<item> CharSeqHelper </item>
+			<item> CharSeqHolder </item>
+			<item> CharSequence </item>
+			<item> Character </item>
+			<item> Character.Subset </item>
+			<item> Character.UnicodeBlock </item>
+			<item> CharacterCodingException </item>
+			<item> CharacterData </item>
+			<item> CharacterIterator </item>
+			<item> Charset </item>
+			<item> CharsetDecoder </item>
+			<item> CharsetEncoder </item>
+			<item> CharsetProvider </item>
+			<item> Checkbox </item>
+			<item> CheckboxGroup </item>
+			<item> CheckboxMenuItem </item>
+			<item> CheckedInputStream </item>
+			<item> CheckedOutputStream </item>
+			<item> Checksum </item>
+			<item> Choice </item>
+			<item> ChoiceCallback </item>
+			<item> ChoiceFormat </item>
+			<item> Chromaticity </item>
+			<item> Cipher </item>
+			<item> CipherInputStream </item>
+			<item> CipherOutputStream </item>
+			<item> CipherSpi </item>
+			<item> Class </item>
+			<item> ClassCastException </item>
+			<item> ClassCircularityError </item>
+			<item> ClassDefinition </item>
+			<item> ClassDesc </item>
+			<item> ClassFileTransformer </item>
+			<item> ClassFormatError </item>
+			<item> ClassLoader </item>
+			<item> ClassLoaderRepository </item>
+			<item> ClassLoadingMXBean </item>
+			<item> ClassNotFoundException </item>
+			<item> ClientRequestInfo </item>
+			<item> ClientRequestInfoOperations </item>
+			<item> ClientRequestInterceptor </item>
+			<item> ClientRequestInterceptorOperations </item>
+			<item> Clip </item>
+			<item> Clipboard </item>
+			<item> ClipboardOwner </item>
+			<item> Clob </item>
+			<item> CloneNotSupportedException </item>
+			<item> Cloneable </item>
+			<item> Closeable </item>
+			<item> ClosedByInterruptException </item>
+			<item> ClosedChannelException </item>
+			<item> ClosedSelectorException </item>
+			<item> CodeSets </item>
+			<item> CodeSigner </item>
+			<item> CodeSource </item>
+			<item> Codec </item>
+			<item> CodecFactory </item>
+			<item> CodecFactoryHelper </item>
+			<item> CodecFactoryOperations </item>
+			<item> CodecOperations </item>
+			<item> CoderMalfunctionError </item>
+			<item> CoderResult </item>
+			<item> CodingErrorAction </item>
+			<item> CollationElementIterator </item>
+			<item> CollationKey </item>
+			<item> Collator </item>
+			<item> Collection </item>
+			<item> CollectionCertStoreParameters </item>
+			<item> Collections </item>
+			<item> Color </item>
+			<item> ColorChooserComponentFactory </item>
+			<item> ColorChooserUI </item>
+			<item> ColorConvertOp </item>
+			<item> ColorModel </item>
+			<item> ColorSelectionModel </item>
+			<item> ColorSpace </item>
+			<item> ColorSupported </item>
+			<item> ColorType </item>
+			<item> ColorUIResource </item>
+			<item> ComboBoxEditor </item>
+			<item> ComboBoxModel </item>
+			<item> ComboBoxUI </item>
+			<item> ComboPopup </item>
+			<item> Comment </item>
+			<item> CommunicationException </item>
+			<item> Comparable </item>
+			<item> Comparator </item>
+			<item> CompilationMXBean </item>
+			<item> Compiler </item>
+			<item> CompletionService </item>
+			<item> CompletionStatus </item>
+			<item> CompletionStatusHelper </item>
+			<item> Component </item>
+			<item> ComponentAdapter </item>
+			<item> ComponentColorModel </item>
+			<item> ComponentEvent </item>
+			<item> ComponentIdHelper </item>
+			<item> ComponentInputMap </item>
+			<item> ComponentInputMapUIResource </item>
+			<item> ComponentListener </item>
+			<item> ComponentOrientation </item>
+			<item> ComponentSampleModel </item>
+			<item> ComponentUI </item>
+			<item> ComponentView </item>
+			<item> Composite </item>
+			<item> CompositeContext </item>
+			<item> CompositeData </item>
+			<item> CompositeDataSupport </item>
+			<item> CompositeName </item>
+			<item> CompositeType </item>
+			<item> CompositeView </item>
+			<item> CompoundBorder </item>
+			<item> CompoundControl </item>
+			<item> CompoundControl.Type </item>
+			<item> CompoundEdit </item>
+			<item> CompoundName </item>
+			<item> Compression </item>
+			<item> ConcurrentHashMap </item>
+			<item> ConcurrentLinkedQueue </item>
+			<item> ConcurrentMap </item>
+			<item> ConcurrentModificationException </item>
+			<item> Condition </item>
+			<item> Configuration </item>
+			<item> ConfigurationException </item>
+			<item> ConfirmationCallback </item>
+			<item> ConnectException </item>
+			<item> ConnectException </item>
+			<item> ConnectIOException </item>
+			<item> Connection </item>
+			<item> ConnectionEvent </item>
+			<item> ConnectionEventListener </item>
+			<item> ConnectionPendingException </item>
+			<item> ConnectionPoolDataSource </item>
+			<item> ConsoleHandler </item>
+			<item> Constructor </item>
+			<item> Container </item>
+			<item> ContainerAdapter </item>
+			<item> ContainerEvent </item>
+			<item> ContainerListener </item>
+			<item> ContainerOrderFocusTraversalPolicy </item>
+			<item> ContentHandler </item>
+			<item> ContentHandler </item>
+			<item> ContentHandlerFactory </item>
+			<item> ContentModel </item>
+			<item> Context </item>
+			<item> Context </item>
+			<item> ContextList </item>
+			<item> ContextNotEmptyException </item>
+			<item> ContextualRenderedImageFactory </item>
+			<item> Control </item>
+			<item> Control </item>
+			<item> Control.Type </item>
+			<item> ControlFactory </item>
+			<item> ControllerEventListener </item>
+			<item> ConvolveOp </item>
+			<item> CookieHandler </item>
+			<item> CookieHolder </item>
+			<item> Copies </item>
+			<item> CopiesSupported </item>
+			<item> CopyOnWriteArrayList </item>
+			<item> CopyOnWriteArraySet </item>
+			<item> CountDownLatch </item>
+			<item> CounterMonitor </item>
+			<item> CounterMonitorMBean </item>
+			<item> CredentialException </item>
+			<item> CredentialExpiredException </item>
+			<item> CredentialNotFoundException </item>
+			<item> CropImageFilter </item>
+			<item> CubicCurve2D </item>
+			<item> CubicCurve2D.Double </item>
+			<item> CubicCurve2D.Float </item>
+			<item> Currency </item>
+			<item> Current </item>
+			<item> Current </item>
+			<item> Current </item>
+			<item> CurrentHelper </item>
+			<item> CurrentHelper </item>
+			<item> CurrentHelper </item>
+			<item> CurrentHolder </item>
+			<item> CurrentOperations </item>
+			<item> CurrentOperations </item>
+			<item> CurrentOperations </item>
+			<item> Cursor </item>
+			<item> CustomMarshal </item>
+			<item> CustomValue </item>
+			<item> Customizer </item>
+			<item> CyclicBarrier </item>
+			<item> DATA_CONVERSION </item>
+			<item> DESKeySpec </item>
+			<item> DESedeKeySpec </item>
+			<item> DGC </item>
+			<item> DHGenParameterSpec </item>
+			<item> DHKey </item>
+			<item> DHParameterSpec </item>
+			<item> DHPrivateKey </item>
+			<item> DHPrivateKeySpec </item>
+			<item> DHPublicKey </item>
+			<item> DHPublicKeySpec </item>
+			<item> DISCARDING </item>
+			<item> DOMConfiguration </item>
+			<item> DOMError </item>
+			<item> DOMErrorHandler </item>
+			<item> DOMException </item>
+			<item> DOMImplementation </item>
+			<item> DOMImplementationLS </item>
+			<item> DOMImplementationList </item>
+			<item> DOMImplementationRegistry </item>
+			<item> DOMImplementationSource </item>
+			<item> DOMLocator </item>
+			<item> DOMLocator </item>
+			<item> DOMResult </item>
+			<item> DOMSource </item>
+			<item> DOMStringList </item>
+			<item> DSAKey </item>
+			<item> DSAKeyPairGenerator </item>
+			<item> DSAParameterSpec </item>
+			<item> DSAParams </item>
+			<item> DSAPrivateKey </item>
+			<item> DSAPrivateKeySpec </item>
+			<item> DSAPublicKey </item>
+			<item> DSAPublicKeySpec </item>
+			<item> DTD </item>
+			<item> DTDConstants </item>
+			<item> DTDHandler </item>
+			<item> DataBuffer </item>
+			<item> DataBufferByte </item>
+			<item> DataBufferDouble </item>
+			<item> DataBufferFloat </item>
+			<item> DataBufferInt </item>
+			<item> DataBufferShort </item>
+			<item> DataBufferUShort </item>
+			<item> DataFlavor </item>
+			<item> DataFormatException </item>
+			<item> DataInput </item>
+			<item> DataInputStream </item>
+			<item> DataInputStream </item>
+			<item> DataLine </item>
+			<item> DataLine.Info </item>
+			<item> DataOutput </item>
+			<item> DataOutputStream </item>
+			<item> DataOutputStream </item>
+			<item> DataSource </item>
+			<item> DataTruncation </item>
+			<item> DatabaseMetaData </item>
+			<item> DatagramChannel </item>
+			<item> DatagramPacket </item>
+			<item> DatagramSocket </item>
+			<item> DatagramSocketImpl </item>
+			<item> DatagramSocketImplFactory </item>
+			<item> DatatypeConfigurationException </item>
+			<item> DatatypeConstants </item>
+			<item> DatatypeConstants.Field </item>
+			<item> DatatypeFactory </item>
+			<item> Date </item>
+			<item> Date </item>
+			<item> DateFormat </item>
+			<item> DateFormat.Field </item>
+			<item> DateFormatSymbols </item>
+			<item> DateFormatter </item>
+			<item> DateTimeAtCompleted </item>
+			<item> DateTimeAtCreation </item>
+			<item> DateTimeAtProcessing </item>
+			<item> DateTimeSyntax </item>
+			<item> DebugGraphics </item>
+			<item> DecimalFormat </item>
+			<item> DecimalFormatSymbols </item>
+			<item> DeclHandler </item>
+			<item> DefaultBoundedRangeModel </item>
+			<item> DefaultButtonModel </item>
+			<item> DefaultCaret </item>
+			<item> DefaultCellEditor </item>
+			<item> DefaultColorSelectionModel </item>
+			<item> DefaultComboBoxModel </item>
+			<item> DefaultDesktopManager </item>
+			<item> DefaultEditorKit </item>
+			<item> DefaultEditorKit.BeepAction </item>
+			<item> DefaultEditorKit.CopyAction </item>
+			<item> DefaultEditorKit.CutAction </item>
+			<item> DefaultEditorKit.DefaultKeyTypedAction </item>
+			<item> DefaultEditorKit.InsertBreakAction </item>
+			<item> DefaultEditorKit.InsertContentAction </item>
+			<item> DefaultEditorKit.InsertTabAction </item>
+			<item> DefaultEditorKit.PasteAction </item>
+			<item> DefaultFocusManager </item>
+			<item> DefaultFocusTraversalPolicy </item>
+			<item> DefaultFormatter </item>
+			<item> DefaultFormatterFactory </item>
+			<item> DefaultHandler </item>
+			<item> DefaultHandler2 </item>
+			<item> DefaultHighlighter </item>
+			<item> DefaultHighlighter.DefaultHighlightPainter </item>
+			<item> DefaultKeyboardFocusManager </item>
+			<item> DefaultListCellRenderer </item>
+			<item> DefaultListCellRenderer.UIResource </item>
+			<item> DefaultListModel </item>
+			<item> DefaultListSelectionModel </item>
+			<item> DefaultLoaderRepository </item>
+			<item> DefaultLoaderRepository </item>
+			<item> DefaultMenuLayout </item>
+			<item> DefaultMetalTheme </item>
+			<item> DefaultMutableTreeNode </item>
+			<item> DefaultPersistenceDelegate </item>
+			<item> DefaultSingleSelectionModel </item>
+			<item> DefaultStyledDocument </item>
+			<item> DefaultStyledDocument.AttributeUndoableEdit </item>
+			<item> DefaultStyledDocument.ElementSpec </item>
+			<item> DefaultTableCellRenderer </item>
+			<item> DefaultTableCellRenderer.UIResource </item>
+			<item> DefaultTableColumnModel </item>
+			<item> DefaultTableModel </item>
+			<item> DefaultTextUI </item>
+			<item> DefaultTreeCellEditor </item>
+			<item> DefaultTreeCellRenderer </item>
+			<item> DefaultTreeModel </item>
+			<item> DefaultTreeSelectionModel </item>
+			<item> DefinitionKind </item>
+			<item> DefinitionKindHelper </item>
+			<item> Deflater </item>
+			<item> DeflaterOutputStream </item>
+			<item> DelayQueue </item>
+			<item> Delayed </item>
+			<item> Delegate </item>
+			<item> Delegate </item>
+			<item> Delegate </item>
+			<item> DelegationPermission </item>
+			<item> Deprecated </item>
+			<item> Descriptor </item>
+			<item> DescriptorAccess </item>
+			<item> DescriptorSupport </item>
+			<item> DesignMode </item>
+			<item> DesktopIconUI </item>
+			<item> DesktopManager </item>
+			<item> DesktopPaneUI </item>
+			<item> Destination </item>
+			<item> DestroyFailedException </item>
+			<item> Destroyable </item>
+			<item> Dialog </item>
+			<item> Dictionary </item>
+			<item> DigestException </item>
+			<item> DigestInputStream </item>
+			<item> DigestOutputStream </item>
+			<item> Dimension </item>
+			<item> Dimension2D </item>
+			<item> DimensionUIResource </item>
+			<item> DirContext </item>
+			<item> DirObjectFactory </item>
+			<item> DirStateFactory </item>
+			<item> DirStateFactory.Result </item>
+			<item> DirectColorModel </item>
+			<item> DirectoryManager </item>
+			<item> DisplayMode </item>
+			<item> DnDConstants </item>
+			<item> Doc </item>
+			<item> DocAttribute </item>
+			<item> DocAttributeSet </item>
+			<item> DocFlavor </item>
+			<item> DocFlavor.BYTE_ARRAY </item>
+			<item> DocFlavor.CHAR_ARRAY </item>
+			<item> DocFlavor.INPUT_STREAM </item>
+			<item> DocFlavor.READER </item>
+			<item> DocFlavor.SERVICE_FORMATTED </item>
+			<item> DocFlavor.STRING </item>
+			<item> DocFlavor.URL </item>
+			<item> DocPrintJob </item>
+			<item> Document </item>
+			<item> Document </item>
+			<item> DocumentBuilder </item>
+			<item> DocumentBuilderFactory </item>
+			<item> DocumentEvent </item>
+			<item> DocumentEvent.ElementChange </item>
+			<item> DocumentEvent.EventType </item>
+			<item> DocumentFilter </item>
+			<item> DocumentFilter.FilterBypass </item>
+			<item> DocumentFragment </item>
+			<item> DocumentHandler </item>
+			<item> DocumentListener </item>
+			<item> DocumentName </item>
+			<item> DocumentParser </item>
+			<item> DocumentType </item>
+			<item> Documented </item>
+			<item> DomainCombiner </item>
+			<item> DomainManager </item>
+			<item> DomainManagerOperations </item>
+			<item> Double </item>
+			<item> DoubleBuffer </item>
+			<item> DoubleHolder </item>
+			<item> DoubleSeqHelper </item>
+			<item> DoubleSeqHolder </item>
+			<item> DragGestureEvent </item>
+			<item> DragGestureListener </item>
+			<item> DragGestureRecognizer </item>
+			<item> DragSource </item>
+			<item> DragSourceAdapter </item>
+			<item> DragSourceContext </item>
+			<item> DragSourceDragEvent </item>
+			<item> DragSourceDropEvent </item>
+			<item> DragSourceEvent </item>
+			<item> DragSourceListener </item>
+			<item> DragSourceMotionListener </item>
+			<item> Driver </item>
+			<item> DriverManager </item>
+			<item> DriverPropertyInfo </item>
+			<item> DropTarget </item>
+			<item> DropTarget.DropTargetAutoScroller </item>
+			<item> DropTargetAdapter </item>
+			<item> DropTargetContext </item>
+			<item> DropTargetDragEvent </item>
+			<item> DropTargetDropEvent </item>
+			<item> DropTargetEvent </item>
+			<item> DropTargetListener </item>
+			<item> DuplicateFormatFlagsException </item>
+			<item> DuplicateName </item>
+			<item> DuplicateNameHelper </item>
+			<item> Duration </item>
+			<item> DynAny </item>
+			<item> DynAny </item>
+			<item> DynAnyFactory </item>
+			<item> DynAnyFactoryHelper </item>
+			<item> DynAnyFactoryOperations </item>
+			<item> DynAnyHelper </item>
+			<item> DynAnyOperations </item>
+			<item> DynAnySeqHelper </item>
+			<item> DynArray </item>
+			<item> DynArray </item>
+			<item> DynArrayHelper </item>
+			<item> DynArrayOperations </item>
+			<item> DynEnum </item>
+			<item> DynEnum </item>
+			<item> DynEnumHelper </item>
+			<item> DynEnumOperations </item>
+			<item> DynFixed </item>
+			<item> DynFixed </item>
+			<item> DynFixedHelper </item>
+			<item> DynFixedOperations </item>
+			<item> DynSequence </item>
+			<item> DynSequence </item>
+			<item> DynSequenceHelper </item>
+			<item> DynSequenceOperations </item>
+			<item> DynStruct </item>
+			<item> DynStruct </item>
+			<item> DynStructHelper </item>
+			<item> DynStructOperations </item>
+			<item> DynUnion </item>
+			<item> DynUnion </item>
+			<item> DynUnionHelper </item>
+			<item> DynUnionOperations </item>
+			<item> DynValue </item>
+			<item> DynValue </item>
+			<item> DynValueBox </item>
+			<item> DynValueBoxOperations </item>
+			<item> DynValueCommon </item>
+			<item> DynValueCommonOperations </item>
+			<item> DynValueHelper </item>
+			<item> DynValueOperations </item>
+			<item> DynamicImplementation </item>
+			<item> DynamicImplementation </item>
+			<item> DynamicMBean </item>
+			<item> ECField </item>
+			<item> ECFieldF2m </item>
+			<item> ECFieldFp </item>
+			<item> ECGenParameterSpec </item>
+			<item> ECKey </item>
+			<item> ECParameterSpec </item>
+			<item> ECPoint </item>
+			<item> ECPrivateKey </item>
+			<item> ECPrivateKeySpec </item>
+			<item> ECPublicKey </item>
+			<item> ECPublicKeySpec </item>
+			<item> ENCODING_CDR_ENCAPS </item>
+			<item> EOFException </item>
+			<item> EditorKit </item>
+			<item> Element </item>
+			<item> Element </item>
+			<item> Element </item>
+			<item> ElementIterator </item>
+			<item> ElementType </item>
+			<item> Ellipse2D </item>
+			<item> Ellipse2D.Double </item>
+			<item> Ellipse2D.Float </item>
+			<item> EllipticCurve </item>
+			<item> EmptyBorder </item>
+			<item> EmptyStackException </item>
+			<item> EncodedKeySpec </item>
+			<item> Encoder </item>
+			<item> Encoding </item>
+			<item> EncryptedPrivateKeyInfo </item>
+			<item> Entity </item>
+			<item> Entity </item>
+			<item> EntityReference </item>
+			<item> EntityResolver </item>
+			<item> EntityResolver2 </item>
+			<item> Enum </item>
+			<item> EnumConstantNotPresentException </item>
+			<item> EnumControl </item>
+			<item> EnumControl.Type </item>
+			<item> EnumMap </item>
+			<item> EnumSet </item>
+			<item> EnumSyntax </item>
+			<item> Enumeration </item>
+			<item> Environment </item>
+			<item> Error </item>
+			<item> ErrorHandler </item>
+			<item> ErrorListener </item>
+			<item> ErrorManager </item>
+			<item> EtchedBorder </item>
+			<item> Event </item>
+			<item> EventContext </item>
+			<item> EventDirContext </item>
+			<item> EventHandler </item>
+			<item> EventListener </item>
+			<item> EventListenerList </item>
+			<item> EventListenerProxy </item>
+			<item> EventObject </item>
+			<item> EventQueue </item>
+			<item> EventSetDescriptor </item>
+			<item> Exception </item>
+			<item> ExceptionDetailMessage </item>
+			<item> ExceptionInInitializerError </item>
+			<item> ExceptionList </item>
+			<item> ExceptionListener </item>
+			<item> Exchanger </item>
+			<item> ExecutionException </item>
+			<item> Executor </item>
+			<item> ExecutorCompletionService </item>
+			<item> ExecutorService </item>
+			<item> Executors </item>
+			<item> ExemptionMechanism </item>
+			<item> ExemptionMechanismException </item>
+			<item> ExemptionMechanismSpi </item>
+			<item> ExpandVetoException </item>
+			<item> ExportException </item>
+			<item> Expression </item>
+			<item> ExtendedRequest </item>
+			<item> ExtendedResponse </item>
+			<item> Externalizable </item>
+			<item> FREE_MEM </item>
+			<item> FactoryConfigurationError </item>
+			<item> FailedLoginException </item>
+			<item> FeatureDescriptor </item>
+			<item> Fidelity </item>
+			<item> Field </item>
+			<item> FieldNameHelper </item>
+			<item> FieldNameHelper </item>
+			<item> FieldPosition </item>
+			<item> FieldView </item>
+			<item> File </item>
+			<item> FileCacheImageInputStream </item>
+			<item> FileCacheImageOutputStream </item>
+			<item> FileChannel </item>
+			<item> FileChannel.MapMode </item>
+			<item> FileChooserUI </item>
+			<item> FileDescriptor </item>
+			<item> FileDialog </item>
+			<item> FileFilter </item>
+			<item> FileFilter </item>
+			<item> FileHandler </item>
+			<item> FileImageInputStream </item>
+			<item> FileImageOutputStream </item>
+			<item> FileInputStream </item>
+			<item> FileLock </item>
+			<item> FileLockInterruptionException </item>
+			<item> FileNameMap </item>
+			<item> FileNotFoundException </item>
+			<item> FileOutputStream </item>
+			<item> FilePermission </item>
+			<item> FileReader </item>
+			<item> FileSystemView </item>
+			<item> FileView </item>
+			<item> FileWriter </item>
+			<item> FilenameFilter </item>
+			<item> Filter </item>
+			<item> FilterInputStream </item>
+			<item> FilterOutputStream </item>
+			<item> FilterReader </item>
+			<item> FilterWriter </item>
+			<item> FilteredImageSource </item>
+			<item> FilteredRowSet </item>
+			<item> Finishings </item>
+			<item> FixedHeightLayoutCache </item>
+			<item> FixedHolder </item>
+			<item> FlatteningPathIterator </item>
+			<item> FlavorEvent </item>
+			<item> FlavorException </item>
+			<item> FlavorListener </item>
+			<item> FlavorMap </item>
+			<item> FlavorTable </item>
+			<item> Float </item>
+			<item> FloatBuffer </item>
+			<item> FloatControl </item>
+			<item> FloatControl.Type </item>
+			<item> FloatHolder </item>
+			<item> FloatSeqHelper </item>
+			<item> FloatSeqHolder </item>
+			<item> FlowLayout </item>
+			<item> FlowView </item>
+			<item> FlowView.FlowStrategy </item>
+			<item> Flushable </item>
+			<item> FocusAdapter </item>
+			<item> FocusEvent </item>
+			<item> FocusListener </item>
+			<item> FocusManager </item>
+			<item> FocusTraversalPolicy </item>
+			<item> Font </item>
+			<item> FontFormatException </item>
+			<item> FontMetrics </item>
+			<item> FontRenderContext </item>
+			<item> FontUIResource </item>
+			<item> FormSubmitEvent </item>
+			<item> FormSubmitEvent.MethodType </item>
+			<item> FormView </item>
+			<item> Format </item>
+			<item> Format.Field </item>
+			<item> FormatConversionProvider </item>
+			<item> FormatFlagsConversionMismatchException </item>
+			<item> FormatMismatch </item>
+			<item> FormatMismatchHelper </item>
+			<item> Formattable </item>
+			<item> FormattableFlags </item>
+			<item> Formatter </item>
+			<item> Formatter </item>
+			<item> FormatterClosedException </item>
+			<item> ForwardRequest </item>
+			<item> ForwardRequest </item>
+			<item> ForwardRequestHelper </item>
+			<item> ForwardRequestHelper </item>
+			<item> Frame </item>
+			<item> Future </item>
+			<item> FutureTask </item>
+			<item> GSSContext </item>
+			<item> GSSCredential </item>
+			<item> GSSException </item>
+			<item> GSSManager </item>
+			<item> GSSName </item>
+			<item> GZIPInputStream </item>
+			<item> GZIPOutputStream </item>
+			<item> GapContent </item>
+			<item> GarbageCollectorMXBean </item>
+			<item> GatheringByteChannel </item>
+			<item> GaugeMonitor </item>
+			<item> GaugeMonitorMBean </item>
+			<item> GeneralPath </item>
+			<item> GeneralSecurityException </item>
+			<item> GenericArrayType </item>
+			<item> GenericDeclaration </item>
+			<item> GenericSignatureFormatError </item>
+			<item> GlyphJustificationInfo </item>
+			<item> GlyphMetrics </item>
+			<item> GlyphVector </item>
+			<item> GlyphView </item>
+			<item> GlyphView.GlyphPainter </item>
+			<item> GradientPaint </item>
+			<item> GraphicAttribute </item>
+			<item> Graphics </item>
+			<item> Graphics2D </item>
+			<item> GraphicsConfigTemplate </item>
+			<item> GraphicsConfiguration </item>
+			<item> GraphicsDevice </item>
+			<item> GraphicsEnvironment </item>
+			<item> GrayFilter </item>
+			<item> GregorianCalendar </item>
+			<item> GridBagConstraints </item>
+			<item> GridBagLayout </item>
+			<item> GridLayout </item>
+			<item> Group </item>
+			<item> Guard </item>
+			<item> GuardedObject </item>
+			<item> HOLDING </item>
+			<item> HTML </item>
+			<item> HTML.Attribute </item>
+			<item> HTML.Tag </item>
+			<item> HTML.UnknownTag </item>
+			<item> HTMLDocument </item>
+			<item> HTMLDocument.Iterator </item>
+			<item> HTMLEditorKit </item>
+			<item> HTMLEditorKit.HTMLFactory </item>
+			<item> HTMLEditorKit.HTMLTextAction </item>
+			<item> HTMLEditorKit.InsertHTMLTextAction </item>
+			<item> HTMLEditorKit.LinkController </item>
+			<item> HTMLEditorKit.Parser </item>
+			<item> HTMLEditorKit.ParserCallback </item>
+			<item> HTMLFrameHyperlinkEvent </item>
+			<item> HTMLWriter </item>
+			<item> Handler </item>
+			<item> HandlerBase </item>
+			<item> HandshakeCompletedEvent </item>
+			<item> HandshakeCompletedListener </item>
+			<item> HasControls </item>
+			<item> HashAttributeSet </item>
+			<item> HashDocAttributeSet </item>
+			<item> HashMap </item>
+			<item> HashPrintJobAttributeSet </item>
+			<item> HashPrintRequestAttributeSet </item>
+			<item> HashPrintServiceAttributeSet </item>
+			<item> HashSet </item>
+			<item> Hashtable </item>
+			<item> HeadlessException </item>
+			<item> HierarchyBoundsAdapter </item>
+			<item> HierarchyBoundsListener </item>
+			<item> HierarchyEvent </item>
+			<item> HierarchyListener </item>
+			<item> Highlighter </item>
+			<item> Highlighter.Highlight </item>
+			<item> Highlighter.HighlightPainter </item>
+			<item> HostnameVerifier </item>
+			<item> HttpRetryException </item>
+			<item> HttpURLConnection </item>
+			<item> HttpsURLConnection </item>
+			<item> HyperlinkEvent </item>
+			<item> HyperlinkEvent.EventType </item>
+			<item> HyperlinkListener </item>
+			<item> ICC_ColorSpace </item>
+			<item> ICC_Profile </item>
+			<item> ICC_ProfileGray </item>
+			<item> ICC_ProfileRGB </item>
+			<item> IDLEntity </item>
+			<item> IDLType </item>
+			<item> IDLTypeHelper </item>
+			<item> IDLTypeOperations </item>
+			<item> ID_ASSIGNMENT_POLICY_ID </item>
+			<item> ID_UNIQUENESS_POLICY_ID </item>
+			<item> IIOByteBuffer </item>
+			<item> IIOException </item>
+			<item> IIOImage </item>
+			<item> IIOInvalidTreeException </item>
+			<item> IIOMetadata </item>
+			<item> IIOMetadataController </item>
+			<item> IIOMetadataFormat </item>
+			<item> IIOMetadataFormatImpl </item>
+			<item> IIOMetadataNode </item>
+			<item> IIOParam </item>
+			<item> IIOParamController </item>
+			<item> IIOReadProgressListener </item>
+			<item> IIOReadUpdateListener </item>
+			<item> IIOReadWarningListener </item>
+			<item> IIORegistry </item>
+			<item> IIOServiceProvider </item>
+			<item> IIOWriteProgressListener </item>
+			<item> IIOWriteWarningListener </item>
+			<item> IMPLICIT_ACTIVATION_POLICY_ID </item>
+			<item> IMP_LIMIT </item>
+			<item> INACTIVE </item>
+			<item> INITIALIZE </item>
+			<item> INTERNAL </item>
+			<item> INTF_REPOS </item>
+			<item> INVALID_ACTIVITY </item>
+			<item> INVALID_TRANSACTION </item>
+			<item> INV_FLAG </item>
+			<item> INV_IDENT </item>
+			<item> INV_OBJREF </item>
+			<item> INV_POLICY </item>
+			<item> IOException </item>
+			<item> IOR </item>
+			<item> IORHelper </item>
+			<item> IORHolder </item>
+			<item> IORInfo </item>
+			<item> IORInfoOperations </item>
+			<item> IORInterceptor </item>
+			<item> IORInterceptorOperations </item>
+			<item> IORInterceptor_3_0 </item>
+			<item> IORInterceptor_3_0Helper </item>
+			<item> IORInterceptor_3_0Holder </item>
+			<item> IORInterceptor_3_0Operations </item>
+			<item> IRObject </item>
+			<item> IRObjectOperations </item>
+			<item> Icon </item>
+			<item> IconUIResource </item>
+			<item> IconView </item>
+			<item> IdAssignmentPolicy </item>
+			<item> IdAssignmentPolicyOperations </item>
+			<item> IdAssignmentPolicyValue </item>
+			<item> IdUniquenessPolicy </item>
+			<item> IdUniquenessPolicyOperations </item>
+			<item> IdUniquenessPolicyValue </item>
+			<item> IdentifierHelper </item>
+			<item> Identity </item>
+			<item> IdentityHashMap </item>
+			<item> IdentityScope </item>
+			<item> IllegalAccessError </item>
+			<item> IllegalAccessException </item>
+			<item> IllegalArgumentException </item>
+			<item> IllegalBlockSizeException </item>
+			<item> IllegalBlockingModeException </item>
+			<item> IllegalCharsetNameException </item>
+			<item> IllegalClassFormatException </item>
+			<item> IllegalComponentStateException </item>
+			<item> IllegalFormatCodePointException </item>
+			<item> IllegalFormatConversionException </item>
+			<item> IllegalFormatException </item>
+			<item> IllegalFormatFlagsException </item>
+			<item> IllegalFormatPrecisionException </item>
+			<item> IllegalFormatWidthException </item>
+			<item> IllegalMonitorStateException </item>
+			<item> IllegalPathStateException </item>
+			<item> IllegalSelectorException </item>
+			<item> IllegalStateException </item>
+			<item> IllegalThreadStateException </item>
+			<item> Image </item>
+			<item> ImageCapabilities </item>
+			<item> ImageConsumer </item>
+			<item> ImageFilter </item>
+			<item> ImageGraphicAttribute </item>
+			<item> ImageIO </item>
+			<item> ImageIcon </item>
+			<item> ImageInputStream </item>
+			<item> ImageInputStreamImpl </item>
+			<item> ImageInputStreamSpi </item>
+			<item> ImageObserver </item>
+			<item> ImageOutputStream </item>
+			<item> ImageOutputStreamImpl </item>
+			<item> ImageOutputStreamSpi </item>
+			<item> ImageProducer </item>
+			<item> ImageReadParam </item>
+			<item> ImageReader </item>
+			<item> ImageReaderSpi </item>
+			<item> ImageReaderWriterSpi </item>
+			<item> ImageTranscoder </item>
+			<item> ImageTranscoderSpi </item>
+			<item> ImageTypeSpecifier </item>
+			<item> ImageView </item>
+			<item> ImageWriteParam </item>
+			<item> ImageWriter </item>
+			<item> ImageWriterSpi </item>
+			<item> ImagingOpException </item>
+			<item> ImplicitActivationPolicy </item>
+			<item> ImplicitActivationPolicyOperations </item>
+			<item> ImplicitActivationPolicyValue </item>
+			<item> IncompatibleClassChangeError </item>
+			<item> IncompleteAnnotationException </item>
+			<item> InconsistentTypeCode </item>
+			<item> InconsistentTypeCode </item>
+			<item> InconsistentTypeCodeHelper </item>
+			<item> IndexColorModel </item>
+			<item> IndexOutOfBoundsException </item>
+			<item> IndexedPropertyChangeEvent </item>
+			<item> IndexedPropertyDescriptor </item>
+			<item> IndirectionException </item>
+			<item> Inet4Address </item>
+			<item> Inet6Address </item>
+			<item> InetAddress </item>
+			<item> InetSocketAddress </item>
+			<item> Inflater </item>
+			<item> InflaterInputStream </item>
+			<item> InheritableThreadLocal </item>
+			<item> Inherited </item>
+			<item> InitialContext </item>
+			<item> InitialContextFactory </item>
+			<item> InitialContextFactoryBuilder </item>
+			<item> InitialDirContext </item>
+			<item> InitialLdapContext </item>
+			<item> InlineView </item>
+			<item> InputContext </item>
+			<item> InputEvent </item>
+			<item> InputMap </item>
+			<item> InputMapUIResource </item>
+			<item> InputMethod </item>
+			<item> InputMethodContext </item>
+			<item> InputMethodDescriptor </item>
+			<item> InputMethodEvent </item>
+			<item> InputMethodHighlight </item>
+			<item> InputMethodListener </item>
+			<item> InputMethodRequests </item>
+			<item> InputMismatchException </item>
+			<item> InputSource </item>
+			<item> InputStream </item>
+			<item> InputStream </item>
+			<item> InputStream </item>
+			<item> InputStreamReader </item>
+			<item> InputSubset </item>
+			<item> InputVerifier </item>
+			<item> Insets </item>
+			<item> InsetsUIResource </item>
+			<item> InstanceAlreadyExistsException </item>
+			<item> InstanceNotFoundException </item>
+			<item> InstantiationError </item>
+			<item> InstantiationException </item>
+			<item> Instrument </item>
+			<item> Instrumentation </item>
+			<item> InsufficientResourcesException </item>
+			<item> IntBuffer </item>
+			<item> IntHolder </item>
+			<item> Integer </item>
+			<item> IntegerSyntax </item>
+			<item> Interceptor </item>
+			<item> InterceptorOperations </item>
+			<item> InternalError </item>
+			<item> InternalFrameAdapter </item>
+			<item> InternalFrameEvent </item>
+			<item> InternalFrameFocusTraversalPolicy </item>
+			<item> InternalFrameListener </item>
+			<item> InternalFrameUI </item>
+			<item> InternationalFormatter </item>
+			<item> InterruptedException </item>
+			<item> InterruptedIOException </item>
+			<item> InterruptedNamingException </item>
+			<item> InterruptibleChannel </item>
+			<item> IntrospectionException </item>
+			<item> IntrospectionException </item>
+			<item> Introspector </item>
+			<item> Invalid </item>
+			<item> InvalidActivityException </item>
+			<item> InvalidAddress </item>
+			<item> InvalidAddressHelper </item>
+			<item> InvalidAddressHolder </item>
+			<item> InvalidAlgorithmParameterException </item>
+			<item> InvalidApplicationException </item>
+			<item> InvalidAttributeIdentifierException </item>
+			<item> InvalidAttributeValueException </item>
+			<item> InvalidAttributeValueException </item>
+			<item> InvalidAttributesException </item>
+			<item> InvalidClassException </item>
+			<item> InvalidDnDOperationException </item>
+			<item> InvalidKeyException </item>
+			<item> InvalidKeyException </item>
+			<item> InvalidKeySpecException </item>
+			<item> InvalidMarkException </item>
+			<item> InvalidMidiDataException </item>
+			<item> InvalidName </item>
+			<item> InvalidName </item>
+			<item> InvalidName </item>
+			<item> InvalidNameException </item>
+			<item> InvalidNameHelper </item>
+			<item> InvalidNameHelper </item>
+			<item> InvalidNameHolder </item>
+			<item> InvalidObjectException </item>
+			<item> InvalidOpenTypeException </item>
+			<item> InvalidParameterException </item>
+			<item> InvalidParameterSpecException </item>
+			<item> InvalidPolicy </item>
+			<item> InvalidPolicyHelper </item>
+			<item> InvalidPreferencesFormatException </item>
+			<item> InvalidPropertiesFormatException </item>
+			<item> InvalidRelationIdException </item>
+			<item> InvalidRelationServiceException </item>
+			<item> InvalidRelationTypeException </item>
+			<item> InvalidRoleInfoException </item>
+			<item> InvalidRoleValueException </item>
+			<item> InvalidSearchControlsException </item>
+			<item> InvalidSearchFilterException </item>
+			<item> InvalidSeq </item>
+			<item> InvalidSlot </item>
+			<item> InvalidSlotHelper </item>
+			<item> InvalidTargetObjectTypeException </item>
+			<item> InvalidTransactionException </item>
+			<item> InvalidTypeForEncoding </item>
+			<item> InvalidTypeForEncodingHelper </item>
+			<item> InvalidValue </item>
+			<item> InvalidValue </item>
+			<item> InvalidValueHelper </item>
+			<item> InvocationEvent </item>
+			<item> InvocationHandler </item>
+			<item> InvocationTargetException </item>
+			<item> InvokeHandler </item>
+			<item> IstringHelper </item>
+			<item> ItemEvent </item>
+			<item> ItemListener </item>
+			<item> ItemSelectable </item>
+			<item> Iterable </item>
+			<item> Iterator </item>
+			<item> IvParameterSpec </item>
+			<item> JApplet </item>
+			<item> JButton </item>
+			<item> JCheckBox </item>
+			<item> JCheckBoxMenuItem </item>
+			<item> JColorChooser </item>
+			<item> JComboBox </item>
+			<item> JComboBox.KeySelectionManager </item>
+			<item> JComponent </item>
+			<item> JDesktopPane </item>
+			<item> JDialog </item>
+			<item> JEditorPane </item>
+			<item> JFileChooser </item>
+			<item> JFormattedTextField </item>
+			<item> JFormattedTextField.AbstractFormatter </item>
+			<item> JFormattedTextField.AbstractFormatterFactory </item>
+			<item> JFrame </item>
+			<item> JInternalFrame </item>
+			<item> JInternalFrame.JDesktopIcon </item>
+			<item> JLabel </item>
+			<item> JLayeredPane </item>
+			<item> JList </item>
+			<item> JMException </item>
+			<item> JMRuntimeException </item>
+			<item> JMXAuthenticator </item>
+			<item> JMXConnectionNotification </item>
+			<item> JMXConnector </item>
+			<item> JMXConnectorFactory </item>
+			<item> JMXConnectorProvider </item>
+			<item> JMXConnectorServer </item>
+			<item> JMXConnectorServerFactory </item>
+			<item> JMXConnectorServerMBean </item>
+			<item> JMXConnectorServerProvider </item>
+			<item> JMXPrincipal </item>
+			<item> JMXProviderException </item>
+			<item> JMXServerErrorException </item>
+			<item> JMXServiceURL </item>
+			<item> JMenu </item>
+			<item> JMenuBar </item>
+			<item> JMenuItem </item>
+			<item> JOptionPane </item>
+			<item> JPEGHuffmanTable </item>
+			<item> JPEGImageReadParam </item>
+			<item> JPEGImageWriteParam </item>
+			<item> JPEGQTable </item>
+			<item> JPanel </item>
+			<item> JPasswordField </item>
+			<item> JPopupMenu </item>
+			<item> JPopupMenu.Separator </item>
+			<item> JProgressBar </item>
+			<item> JRadioButton </item>
+			<item> JRadioButtonMenuItem </item>
+			<item> JRootPane </item>
+			<item> JScrollBar </item>
+			<item> JScrollPane </item>
+			<item> JSeparator </item>
+			<item> JSlider </item>
+			<item> JSpinner </item>
+			<item> JSpinner.DateEditor </item>
+			<item> JSpinner.DefaultEditor </item>
+			<item> JSpinner.ListEditor </item>
+			<item> JSpinner.NumberEditor </item>
+			<item> JSplitPane </item>
+			<item> JTabbedPane </item>
+			<item> JTable </item>
+			<item> JTable.PrintMode </item>
+			<item> JTableHeader </item>
+			<item> JTextArea </item>
+			<item> JTextComponent </item>
+			<item> JTextComponent.KeyBinding </item>
+			<item> JTextField </item>
+			<item> JTextPane </item>
+			<item> JToggleButton </item>
+			<item> JToggleButton.ToggleButtonModel </item>
+			<item> JToolBar </item>
+			<item> JToolBar.Separator </item>
+			<item> JToolTip </item>
+			<item> JTree </item>
+			<item> JTree.DynamicUtilTreeNode </item>
+			<item> JTree.EmptySelectionModel </item>
+			<item> JViewport </item>
+			<item> JWindow </item>
+			<item> JarEntry </item>
+			<item> JarException </item>
+			<item> JarFile </item>
+			<item> JarInputStream </item>
+			<item> JarOutputStream </item>
+			<item> JarURLConnection </item>
+			<item> JdbcRowSet </item>
+			<item> JobAttributes </item>
+			<item> JobAttributes.DefaultSelectionType </item>
+			<item> JobAttributes.DestinationType </item>
+			<item> JobAttributes.DialogType </item>
+			<item> JobAttributes.MultipleDocumentHandlingType </item>
+			<item> JobAttributes.SidesType </item>
+			<item> JobHoldUntil </item>
+			<item> JobImpressions </item>
+			<item> JobImpressionsCompleted </item>
+			<item> JobImpressionsSupported </item>
+			<item> JobKOctets </item>
+			<item> JobKOctetsProcessed </item>
+			<item> JobKOctetsSupported </item>
+			<item> JobMediaSheets </item>
+			<item> JobMediaSheetsCompleted </item>
+			<item> JobMediaSheetsSupported </item>
+			<item> JobMessageFromOperator </item>
+			<item> JobName </item>
+			<item> JobOriginatingUserName </item>
+			<item> JobPriority </item>
+			<item> JobPrioritySupported </item>
+			<item> JobSheets </item>
+			<item> JobState </item>
+			<item> JobStateReason </item>
+			<item> JobStateReasons </item>
+			<item> JoinRowSet </item>
+			<item> Joinable </item>
+			<item> KerberosKey </item>
+			<item> KerberosPrincipal </item>
+			<item> KerberosTicket </item>
+			<item> Kernel </item>
+			<item> Key </item>
+			<item> KeyAdapter </item>
+			<item> KeyAgreement </item>
+			<item> KeyAgreementSpi </item>
+			<item> KeyAlreadyExistsException </item>
+			<item> KeyEvent </item>
+			<item> KeyEventDispatcher </item>
+			<item> KeyEventPostProcessor </item>
+			<item> KeyException </item>
+			<item> KeyFactory </item>
+			<item> KeyFactorySpi </item>
+			<item> KeyGenerator </item>
+			<item> KeyGeneratorSpi </item>
+			<item> KeyListener </item>
+			<item> KeyManagementException </item>
+			<item> KeyManager </item>
+			<item> KeyManagerFactory </item>
+			<item> KeyManagerFactorySpi </item>
+			<item> KeyPair </item>
+			<item> KeyPairGenerator </item>
+			<item> KeyPairGeneratorSpi </item>
+			<item> KeyRep </item>
+			<item> KeyRep.Type </item>
+			<item> KeySpec </item>
+			<item> KeyStore </item>
+			<item> KeyStore.Builder </item>
+			<item> KeyStore.CallbackHandlerProtection </item>
+			<item> KeyStore.Entry </item>
+			<item> KeyStore.LoadStoreParameter </item>
+			<item> KeyStore.PasswordProtection </item>
+			<item> KeyStore.PrivateKeyEntry </item>
+			<item> KeyStore.ProtectionParameter </item>
+			<item> KeyStore.SecretKeyEntry </item>
+			<item> KeyStore.TrustedCertificateEntry </item>
+			<item> KeyStoreBuilderParameters </item>
+			<item> KeyStoreException </item>
+			<item> KeyStoreSpi </item>
+			<item> KeyStroke </item>
+			<item> KeyboardFocusManager </item>
+			<item> Keymap </item>
+			<item> LDAPCertStoreParameters </item>
+			<item> LIFESPAN_POLICY_ID </item>
+			<item> LOCATION_FORWARD </item>
+			<item> LSException </item>
+			<item> LSInput </item>
+			<item> LSLoadEvent </item>
+			<item> LSOutput </item>
+			<item> LSParser </item>
+			<item> LSParserFilter </item>
+			<item> LSProgressEvent </item>
+			<item> LSResourceResolver </item>
+			<item> LSSerializer </item>
+			<item> LSSerializerFilter </item>
+			<item> Label </item>
+			<item> LabelUI </item>
+			<item> LabelView </item>
+			<item> LanguageCallback </item>
+			<item> LastOwnerException </item>
+			<item> LayeredHighlighter </item>
+			<item> LayeredHighlighter.LayerPainter </item>
+			<item> LayoutFocusTraversalPolicy </item>
+			<item> LayoutManager </item>
+			<item> LayoutManager2 </item>
+			<item> LayoutQueue </item>
+			<item> LdapContext </item>
+			<item> LdapName </item>
+			<item> LdapReferralException </item>
+			<item> Lease </item>
+			<item> Level </item>
+			<item> LexicalHandler </item>
+			<item> LifespanPolicy </item>
+			<item> LifespanPolicyOperations </item>
+			<item> LifespanPolicyValue </item>
+			<item> LimitExceededException </item>
+			<item> Line </item>
+			<item> Line.Info </item>
+			<item> Line2D </item>
+			<item> Line2D.Double </item>
+			<item> Line2D.Float </item>
+			<item> LineBorder </item>
+			<item> LineBreakMeasurer </item>
+			<item> LineEvent </item>
+			<item> LineEvent.Type </item>
+			<item> LineListener </item>
+			<item> LineMetrics </item>
+			<item> LineNumberInputStream </item>
+			<item> LineNumberReader </item>
+			<item> LineUnavailableException </item>
+			<item> LinkException </item>
+			<item> LinkLoopException </item>
+			<item> LinkRef </item>
+			<item> LinkageError </item>
+			<item> LinkedBlockingQueue </item>
+			<item> LinkedHashMap </item>
+			<item> LinkedHashSet </item>
+			<item> LinkedList </item>
+			<item> List </item>
+			<item> List </item>
+			<item> ListCellRenderer </item>
+			<item> ListDataEvent </item>
+			<item> ListDataListener </item>
+			<item> ListIterator </item>
+			<item> ListModel </item>
+			<item> ListResourceBundle </item>
+			<item> ListSelectionEvent </item>
+			<item> ListSelectionListener </item>
+			<item> ListSelectionModel </item>
+			<item> ListUI </item>
+			<item> ListView </item>
+			<item> ListenerNotFoundException </item>
+			<item> LoaderHandler </item>
+			<item> LocalObject </item>
+			<item> Locale </item>
+			<item> LocateRegistry </item>
+			<item> Locator </item>
+			<item> Locator2 </item>
+			<item> Locator2Impl </item>
+			<item> LocatorImpl </item>
+			<item> Lock </item>
+			<item> LockSupport </item>
+			<item> LogManager </item>
+			<item> LogRecord </item>
+			<item> LogStream </item>
+			<item> Logger </item>
+			<item> LoggingMXBean </item>
+			<item> LoggingPermission </item>
+			<item> LoginContext </item>
+			<item> LoginException </item>
+			<item> LoginModule </item>
+			<item> Long </item>
+			<item> LongBuffer </item>
+			<item> LongHolder </item>
+			<item> LongLongSeqHelper </item>
+			<item> LongLongSeqHolder </item>
+			<item> LongSeqHelper </item>
+			<item> LongSeqHolder </item>
+			<item> LookAndFeel </item>
+			<item> LookupOp </item>
+			<item> LookupTable </item>
+			<item> MARSHAL </item>
+			<item> MBeanAttributeInfo </item>
+			<item> MBeanConstructorInfo </item>
+			<item> MBeanException </item>
+			<item> MBeanFeatureInfo </item>
+			<item> MBeanInfo </item>
+			<item> MBeanNotificationInfo </item>
+			<item> MBeanOperationInfo </item>
+			<item> MBeanParameterInfo </item>
+			<item> MBeanPermission </item>
+			<item> MBeanRegistration </item>
+			<item> MBeanRegistrationException </item>
+			<item> MBeanServer </item>
+			<item> MBeanServerBuilder </item>
+			<item> MBeanServerConnection </item>
+			<item> MBeanServerDelegate </item>
+			<item> MBeanServerDelegateMBean </item>
+			<item> MBeanServerFactory </item>
+			<item> MBeanServerForwarder </item>
+			<item> MBeanServerInvocationHandler </item>
+			<item> MBeanServerNotification </item>
+			<item> MBeanServerNotificationFilter </item>
+			<item> MBeanServerPermission </item>
+			<item> MBeanTrustPermission </item>
+			<item> MGF1ParameterSpec </item>
+			<item> MLet </item>
+			<item> MLetMBean </item>
+			<item> Mac </item>
+			<item> MacSpi </item>
+			<item> MalformedInputException </item>
+			<item> MalformedLinkException </item>
+			<item> MalformedObjectNameException </item>
+			<item> MalformedParameterizedTypeException </item>
+			<item> MalformedURLException </item>
+			<item> ManageReferralControl </item>
+			<item> ManagementFactory </item>
+			<item> ManagementPermission </item>
+			<item> ManagerFactoryParameters </item>
+			<item> Manifest </item>
+			<item> Map </item>
+			<item> Map.Entry </item>
+			<item> MappedByteBuffer </item>
+			<item> MarshalException </item>
+			<item> MarshalledObject </item>
+			<item> MaskFormatter </item>
+			<item> MatchResult </item>
+			<item> Matcher </item>
+			<item> Math </item>
+			<item> MathContext </item>
+			<item> MatteBorder </item>
+			<item> Media </item>
+			<item> MediaName </item>
+			<item> MediaPrintableArea </item>
+			<item> MediaSize </item>
+			<item> MediaSize.Engineering </item>
+			<item> MediaSize.ISO </item>
+			<item> MediaSize.JIS </item>
+			<item> MediaSize.NA </item>
+			<item> MediaSize.Other </item>
+			<item> MediaSizeName </item>
+			<item> MediaTracker </item>
+			<item> MediaTray </item>
+			<item> Member </item>
+			<item> MemoryCacheImageInputStream </item>
+			<item> MemoryCacheImageOutputStream </item>
+			<item> MemoryHandler </item>
+			<item> MemoryImageSource </item>
+			<item> MemoryMXBean </item>
+			<item> MemoryManagerMXBean </item>
+			<item> MemoryNotificationInfo </item>
+			<item> MemoryPoolMXBean </item>
+			<item> MemoryType </item>
+			<item> MemoryUsage </item>
+			<item> Menu </item>
+			<item> MenuBar </item>
+			<item> MenuBarUI </item>
+			<item> MenuComponent </item>
+			<item> MenuContainer </item>
+			<item> MenuDragMouseEvent </item>
+			<item> MenuDragMouseListener </item>
+			<item> MenuElement </item>
+			<item> MenuEvent </item>
+			<item> MenuItem </item>
+			<item> MenuItemUI </item>
+			<item> MenuKeyEvent </item>
+			<item> MenuKeyListener </item>
+			<item> MenuListener </item>
+			<item> MenuSelectionManager </item>
+			<item> MenuShortcut </item>
+			<item> MessageDigest </item>
+			<item> MessageDigestSpi </item>
+			<item> MessageFormat </item>
+			<item> MessageFormat.Field </item>
+			<item> MessageProp </item>
+			<item> MetaEventListener </item>
+			<item> MetaMessage </item>
+			<item> MetalBorders </item>
+			<item> MetalBorders.ButtonBorder </item>
+			<item> MetalBorders.Flush3DBorder </item>
+			<item> MetalBorders.InternalFrameBorder </item>
+			<item> MetalBorders.MenuBarBorder </item>
+			<item> MetalBorders.MenuItemBorder </item>
+			<item> MetalBorders.OptionDialogBorder </item>
+			<item> MetalBorders.PaletteBorder </item>
+			<item> MetalBorders.PopupMenuBorder </item>
+			<item> MetalBorders.RolloverButtonBorder </item>
+			<item> MetalBorders.ScrollPaneBorder </item>
+			<item> MetalBorders.TableHeaderBorder </item>
+			<item> MetalBorders.TextFieldBorder </item>
+			<item> MetalBorders.ToggleButtonBorder </item>
+			<item> MetalBorders.ToolBarBorder </item>
+			<item> MetalButtonUI </item>
+			<item> MetalCheckBoxIcon </item>
+			<item> MetalCheckBoxUI </item>
+			<item> MetalComboBoxButton </item>
+			<item> MetalComboBoxEditor </item>
+			<item> MetalComboBoxEditor.UIResource </item>
+			<item> MetalComboBoxIcon </item>
+			<item> MetalComboBoxUI </item>
+			<item> MetalDesktopIconUI </item>
+			<item> MetalFileChooserUI </item>
+			<item> MetalIconFactory </item>
+			<item> MetalIconFactory.FileIcon16 </item>
+			<item> MetalIconFactory.FolderIcon16 </item>
+			<item> MetalIconFactory.PaletteCloseIcon </item>
+			<item> MetalIconFactory.TreeControlIcon </item>
+			<item> MetalIconFactory.TreeFolderIcon </item>
+			<item> MetalIconFactory.TreeLeafIcon </item>
+			<item> MetalInternalFrameTitlePane </item>
+			<item> MetalInternalFrameUI </item>
+			<item> MetalLabelUI </item>
+			<item> MetalLookAndFeel </item>
+			<item> MetalMenuBarUI </item>
+			<item> MetalPopupMenuSeparatorUI </item>
+			<item> MetalProgressBarUI </item>
+			<item> MetalRadioButtonUI </item>
+			<item> MetalRootPaneUI </item>
+			<item> MetalScrollBarUI </item>
+			<item> MetalScrollButton </item>
+			<item> MetalScrollPaneUI </item>
+			<item> MetalSeparatorUI </item>
+			<item> MetalSliderUI </item>
+			<item> MetalSplitPaneUI </item>
+			<item> MetalTabbedPaneUI </item>
+			<item> MetalTextFieldUI </item>
+			<item> MetalTheme </item>
+			<item> MetalToggleButtonUI </item>
+			<item> MetalToolBarUI </item>
+			<item> MetalToolTipUI </item>
+			<item> MetalTreeUI </item>
+			<item> Method </item>
+			<item> MethodDescriptor </item>
+			<item> MidiChannel </item>
+			<item> MidiDevice </item>
+			<item> MidiDevice.Info </item>
+			<item> MidiDeviceProvider </item>
+			<item> MidiEvent </item>
+			<item> MidiFileFormat </item>
+			<item> MidiFileReader </item>
+			<item> MidiFileWriter </item>
+			<item> MidiMessage </item>
+			<item> MidiSystem </item>
+			<item> MidiUnavailableException </item>
+			<item> MimeTypeParseException </item>
+			<item> MinimalHTMLWriter </item>
+			<item> MissingFormatArgumentException </item>
+			<item> MissingFormatWidthException </item>
+			<item> MissingResourceException </item>
+			<item> Mixer </item>
+			<item> Mixer.Info </item>
+			<item> MixerProvider </item>
+			<item> ModelMBean </item>
+			<item> ModelMBeanAttributeInfo </item>
+			<item> ModelMBeanConstructorInfo </item>
+			<item> ModelMBeanInfo </item>
+			<item> ModelMBeanInfoSupport </item>
+			<item> ModelMBeanNotificationBroadcaster </item>
+			<item> ModelMBeanNotificationInfo </item>
+			<item> ModelMBeanOperationInfo </item>
+			<item> ModificationItem </item>
+			<item> Modifier </item>
+			<item> Monitor </item>
+			<item> MonitorMBean </item>
+			<item> MonitorNotification </item>
+			<item> MonitorSettingException </item>
+			<item> MouseAdapter </item>
+			<item> MouseDragGestureRecognizer </item>
+			<item> MouseEvent </item>
+			<item> MouseInfo </item>
+			<item> MouseInputAdapter </item>
+			<item> MouseInputListener </item>
+			<item> MouseListener </item>
+			<item> MouseMotionAdapter </item>
+			<item> MouseMotionListener </item>
+			<item> MouseWheelEvent </item>
+			<item> MouseWheelListener </item>
+			<item> MultiButtonUI </item>
+			<item> MultiColorChooserUI </item>
+			<item> MultiComboBoxUI </item>
+			<item> MultiDesktopIconUI </item>
+			<item> MultiDesktopPaneUI </item>
+			<item> MultiDoc </item>
+			<item> MultiDocPrintJob </item>
+			<item> MultiDocPrintService </item>
+			<item> MultiFileChooserUI </item>
+			<item> MultiInternalFrameUI </item>
+			<item> MultiLabelUI </item>
+			<item> MultiListUI </item>
+			<item> MultiLookAndFeel </item>
+			<item> MultiMenuBarUI </item>
+			<item> MultiMenuItemUI </item>
+			<item> MultiOptionPaneUI </item>
+			<item> MultiPanelUI </item>
+			<item> MultiPixelPackedSampleModel </item>
+			<item> MultiPopupMenuUI </item>
+			<item> MultiProgressBarUI </item>
+			<item> MultiRootPaneUI </item>
+			<item> MultiScrollBarUI </item>
+			<item> MultiScrollPaneUI </item>
+			<item> MultiSeparatorUI </item>
+			<item> MultiSliderUI </item>
+			<item> MultiSpinnerUI </item>
+			<item> MultiSplitPaneUI </item>
+			<item> MultiTabbedPaneUI </item>
+			<item> MultiTableHeaderUI </item>
+			<item> MultiTableUI </item>
+			<item> MultiTextUI </item>
+			<item> MultiToolBarUI </item>
+			<item> MultiToolTipUI </item>
+			<item> MultiTreeUI </item>
+			<item> MultiViewportUI </item>
+			<item> MulticastSocket </item>
+			<item> MultipleComponentProfileHelper </item>
+			<item> MultipleComponentProfileHolder </item>
+			<item> MultipleDocumentHandling </item>
+			<item> MultipleMaster </item>
+			<item> MutableAttributeSet </item>
+			<item> MutableComboBoxModel </item>
+			<item> MutableTreeNode </item>
+			<item> NON_EXISTENT </item>
+			<item> NO_IMPLEMENT </item>
+			<item> NO_MEMORY </item>
+			<item> NO_PERMISSION </item>
+			<item> NO_RESOURCES </item>
+			<item> NO_RESPONSE </item>
+			<item> NVList </item>
+			<item> Name </item>
+			<item> NameAlreadyBoundException </item>
+			<item> NameCallback </item>
+			<item> NameClassPair </item>
+			<item> NameComponent </item>
+			<item> NameComponentHelper </item>
+			<item> NameComponentHolder </item>
+			<item> NameDynAnyPair </item>
+			<item> NameDynAnyPairHelper </item>
+			<item> NameDynAnyPairSeqHelper </item>
+			<item> NameHelper </item>
+			<item> NameHolder </item>
+			<item> NameList </item>
+			<item> NameNotFoundException </item>
+			<item> NameParser </item>
+			<item> NameValuePair </item>
+			<item> NameValuePair </item>
+			<item> NameValuePairHelper </item>
+			<item> NameValuePairHelper </item>
+			<item> NameValuePairSeqHelper </item>
+			<item> NamedNodeMap </item>
+			<item> NamedValue </item>
+			<item> NamespaceChangeListener </item>
+			<item> NamespaceContext </item>
+			<item> NamespaceSupport </item>
+			<item> Naming </item>
+			<item> NamingContext </item>
+			<item> NamingContextExt </item>
+			<item> NamingContextExtHelper </item>
+			<item> NamingContextExtHolder </item>
+			<item> NamingContextExtOperations </item>
+			<item> NamingContextExtPOA </item>
+			<item> NamingContextHelper </item>
+			<item> NamingContextHolder </item>
+			<item> NamingContextOperations </item>
+			<item> NamingContextPOA </item>
+			<item> NamingEnumeration </item>
+			<item> NamingEvent </item>
+			<item> NamingException </item>
+			<item> NamingExceptionEvent </item>
+			<item> NamingListener </item>
+			<item> NamingManager </item>
+			<item> NamingSecurityException </item>
+			<item> NavigationFilter </item>
+			<item> NavigationFilter.FilterBypass </item>
+			<item> NegativeArraySizeException </item>
+			<item> NetPermission </item>
+			<item> NetworkInterface </item>
+			<item> NoClassDefFoundError </item>
+			<item> NoConnectionPendingException </item>
+			<item> NoContext </item>
+			<item> NoContextHelper </item>
+			<item> NoInitialContextException </item>
+			<item> NoPermissionException </item>
+			<item> NoRouteToHostException </item>
+			<item> NoServant </item>
+			<item> NoServantHelper </item>
+			<item> NoSuchAlgorithmException </item>
+			<item> NoSuchAttributeException </item>
+			<item> NoSuchElementException </item>
+			<item> NoSuchFieldError </item>
+			<item> NoSuchFieldException </item>
+			<item> NoSuchMethodError </item>
+			<item> NoSuchMethodException </item>
+			<item> NoSuchObjectException </item>
+			<item> NoSuchPaddingException </item>
+			<item> NoSuchProviderException </item>
+			<item> Node </item>
+			<item> NodeChangeEvent </item>
+			<item> NodeChangeListener </item>
+			<item> NodeList </item>
+			<item> NonReadableChannelException </item>
+			<item> NonWritableChannelException </item>
+			<item> NoninvertibleTransformException </item>
+			<item> NotActiveException </item>
+			<item> NotBoundException </item>
+			<item> NotCompliantMBeanException </item>
+			<item> NotContextException </item>
+			<item> NotEmpty </item>
+			<item> NotEmptyHelper </item>
+			<item> NotEmptyHolder </item>
+			<item> NotFound </item>
+			<item> NotFoundHelper </item>
+			<item> NotFoundHolder </item>
+			<item> NotFoundReason </item>
+			<item> NotFoundReasonHelper </item>
+			<item> NotFoundReasonHolder </item>
+			<item> NotOwnerException </item>
+			<item> NotSerializableException </item>
+			<item> NotYetBoundException </item>
+			<item> NotYetConnectedException </item>
+			<item> Notation </item>
+			<item> Notification </item>
+			<item> NotificationBroadcaster </item>
+			<item> NotificationBroadcasterSupport </item>
+			<item> NotificationEmitter </item>
+			<item> NotificationFilter </item>
+			<item> NotificationFilterSupport </item>
+			<item> NotificationListener </item>
+			<item> NotificationResult </item>
+			<item> NullCipher </item>
+			<item> NullPointerException </item>
+			<item> Number </item>
+			<item> NumberFormat </item>
+			<item> NumberFormat.Field </item>
+			<item> NumberFormatException </item>
+			<item> NumberFormatter </item>
+			<item> NumberOfDocuments </item>
+			<item> NumberOfInterveningJobs </item>
+			<item> NumberUp </item>
+			<item> NumberUpSupported </item>
+			<item> NumericShaper </item>
+			<item> OAEPParameterSpec </item>
+			<item> OBJECT_NOT_EXIST </item>
+			<item> OBJ_ADAPTER </item>
+			<item> OMGVMCID </item>
+			<item> ORB </item>
+			<item> ORB </item>
+			<item> ORBIdHelper </item>
+			<item> ORBInitInfo </item>
+			<item> ORBInitInfoOperations </item>
+			<item> ORBInitializer </item>
+			<item> ORBInitializerOperations </item>
+			<item> ObjID </item>
+			<item> Object </item>
+			<item> Object </item>
+			<item> ObjectAlreadyActive </item>
+			<item> ObjectAlreadyActiveHelper </item>
+			<item> ObjectChangeListener </item>
+			<item> ObjectFactory </item>
+			<item> ObjectFactoryBuilder </item>
+			<item> ObjectHelper </item>
+			<item> ObjectHolder </item>
+			<item> ObjectIdHelper </item>
+			<item> ObjectIdHelper </item>
+			<item> ObjectImpl </item>
+			<item> ObjectImpl </item>
+			<item> ObjectInput </item>
+			<item> ObjectInputStream </item>
+			<item> ObjectInputStream.GetField </item>
+			<item> ObjectInputValidation </item>
+			<item> ObjectInstance </item>
+			<item> ObjectName </item>
+			<item> ObjectNotActive </item>
+			<item> ObjectNotActiveHelper </item>
+			<item> ObjectOutput </item>
+			<item> ObjectOutputStream </item>
+			<item> ObjectOutputStream.PutField </item>
+			<item> ObjectReferenceFactory </item>
+			<item> ObjectReferenceFactoryHelper </item>
+			<item> ObjectReferenceFactoryHolder </item>
+			<item> ObjectReferenceTemplate </item>
+			<item> ObjectReferenceTemplateHelper </item>
+			<item> ObjectReferenceTemplateHolder </item>
+			<item> ObjectReferenceTemplateSeqHelper </item>
+			<item> ObjectReferenceTemplateSeqHolder </item>
+			<item> ObjectStreamClass </item>
+			<item> ObjectStreamConstants </item>
+			<item> ObjectStreamException </item>
+			<item> ObjectStreamField </item>
+			<item> ObjectView </item>
+			<item> Observable </item>
+			<item> Observer </item>
+			<item> OceanTheme </item>
+			<item> OctetSeqHelper </item>
+			<item> OctetSeqHolder </item>
+			<item> Oid </item>
+			<item> OpenDataException </item>
+			<item> OpenMBeanAttributeInfo </item>
+			<item> OpenMBeanAttributeInfoSupport </item>
+			<item> OpenMBeanConstructorInfo </item>
+			<item> OpenMBeanConstructorInfoSupport </item>
+			<item> OpenMBeanInfo </item>
+			<item> OpenMBeanInfoSupport </item>
+			<item> OpenMBeanOperationInfo </item>
+			<item> OpenMBeanOperationInfoSupport </item>
+			<item> OpenMBeanParameterInfo </item>
+			<item> OpenMBeanParameterInfoSupport </item>
+			<item> OpenType </item>
+			<item> OpenType </item>
+			<item> OperatingSystemMXBean </item>
+			<item> Operation </item>
+			<item> OperationNotSupportedException </item>
+			<item> OperationsException </item>
+			<item> Option </item>
+			<item> OptionPaneUI </item>
+			<item> OptionalDataException </item>
+			<item> OrientationRequested </item>
+			<item> OutOfMemoryError </item>
+			<item> OutputDeviceAssigned </item>
+			<item> OutputKeys </item>
+			<item> OutputStream </item>
+			<item> OutputStream </item>
+			<item> OutputStream </item>
+			<item> OutputStreamWriter </item>
+			<item> OverlappingFileLockException </item>
+			<item> OverlayLayout </item>
+			<item> Override </item>
+			<item> Owner </item>
+			<item> PBEKey </item>
+			<item> PBEKeySpec </item>
+			<item> PBEParameterSpec </item>
+			<item> PDLOverrideSupported </item>
+			<item> PERSIST_STORE </item>
+			<item> PKCS8EncodedKeySpec </item>
+			<item> PKIXBuilderParameters </item>
+			<item> PKIXCertPathBuilderResult </item>
+			<item> PKIXCertPathChecker </item>
+			<item> PKIXCertPathValidatorResult </item>
+			<item> PKIXParameters </item>
+			<item> POA </item>
+			<item> POAHelper </item>
+			<item> POAManager </item>
+			<item> POAManagerOperations </item>
+			<item> POAOperations </item>
+			<item> PRIVATE_MEMBER </item>
+			<item> PSSParameterSpec </item>
+			<item> PSource </item>
+			<item> PSource.PSpecified </item>
+			<item> PUBLIC_MEMBER </item>
+			<item> Pack200 </item>
+			<item> Pack200.Packer </item>
+			<item> Pack200.Unpacker </item>
+			<item> Package </item>
+			<item> PackedColorModel </item>
+			<item> PageAttributes </item>
+			<item> PageAttributes.ColorType </item>
+			<item> PageAttributes.MediaType </item>
+			<item> PageAttributes.OrientationRequestedType </item>
+			<item> PageAttributes.OriginType </item>
+			<item> PageAttributes.PrintQualityType </item>
+			<item> PageFormat </item>
+			<item> PageRanges </item>
+			<item> Pageable </item>
+			<item> PagedResultsControl </item>
+			<item> PagedResultsResponseControl </item>
+			<item> PagesPerMinute </item>
+			<item> PagesPerMinuteColor </item>
+			<item> Paint </item>
+			<item> PaintContext </item>
+			<item> PaintEvent </item>
+			<item> Panel </item>
+			<item> PanelUI </item>
+			<item> Paper </item>
+			<item> ParagraphView </item>
+			<item> ParagraphView </item>
+			<item> Parameter </item>
+			<item> ParameterBlock </item>
+			<item> ParameterDescriptor </item>
+			<item> ParameterMetaData </item>
+			<item> ParameterMode </item>
+			<item> ParameterModeHelper </item>
+			<item> ParameterModeHolder </item>
+			<item> ParameterizedType </item>
+			<item> ParseException </item>
+			<item> ParsePosition </item>
+			<item> Parser </item>
+			<item> Parser </item>
+			<item> ParserAdapter </item>
+			<item> ParserConfigurationException </item>
+			<item> ParserDelegator </item>
+			<item> ParserFactory </item>
+			<item> PartialResultException </item>
+			<item> PasswordAuthentication </item>
+			<item> PasswordCallback </item>
+			<item> PasswordView </item>
+			<item> Patch </item>
+			<item> PathIterator </item>
+			<item> Pattern </item>
+			<item> PatternSyntaxException </item>
+			<item> Permission </item>
+			<item> Permission </item>
+			<item> PermissionCollection </item>
+			<item> Permissions </item>
+			<item> PersistenceDelegate </item>
+			<item> PersistentMBean </item>
+			<item> PhantomReference </item>
+			<item> Pipe </item>
+			<item> Pipe.SinkChannel </item>
+			<item> Pipe.SourceChannel </item>
+			<item> PipedInputStream </item>
+			<item> PipedOutputStream </item>
+			<item> PipedReader </item>
+			<item> PipedWriter </item>
+			<item> PixelGrabber </item>
+			<item> PixelInterleavedSampleModel </item>
+			<item> PlainDocument </item>
+			<item> PlainView </item>
+			<item> Point </item>
+			<item> Point2D </item>
+			<item> Point2D.Double </item>
+			<item> Point2D.Float </item>
+			<item> PointerInfo </item>
+			<item> Policy </item>
+			<item> Policy </item>
+			<item> Policy </item>
+			<item> PolicyError </item>
+			<item> PolicyErrorCodeHelper </item>
+			<item> PolicyErrorHelper </item>
+			<item> PolicyErrorHolder </item>
+			<item> PolicyFactory </item>
+			<item> PolicyFactoryOperations </item>
+			<item> PolicyHelper </item>
+			<item> PolicyHolder </item>
+			<item> PolicyListHelper </item>
+			<item> PolicyListHolder </item>
+			<item> PolicyNode </item>
+			<item> PolicyOperations </item>
+			<item> PolicyQualifierInfo </item>
+			<item> PolicyTypeHelper </item>
+			<item> Polygon </item>
+			<item> PooledConnection </item>
+			<item> Popup </item>
+			<item> PopupFactory </item>
+			<item> PopupMenu </item>
+			<item> PopupMenuEvent </item>
+			<item> PopupMenuListener </item>
+			<item> PopupMenuUI </item>
+			<item> Port </item>
+			<item> Port.Info </item>
+			<item> PortUnreachableException </item>
+			<item> PortableRemoteObject </item>
+			<item> PortableRemoteObjectDelegate </item>
+			<item> Position </item>
+			<item> Position.Bias </item>
+			<item> Predicate </item>
+			<item> PreferenceChangeEvent </item>
+			<item> PreferenceChangeListener </item>
+			<item> Preferences </item>
+			<item> PreferencesFactory </item>
+			<item> PreparedStatement </item>
+			<item> PresentationDirection </item>
+			<item> Principal </item>
+			<item> Principal </item>
+			<item> PrincipalHolder </item>
+			<item> PrintEvent </item>
+			<item> PrintException </item>
+			<item> PrintGraphics </item>
+			<item> PrintJob </item>
+			<item> PrintJobAdapter </item>
+			<item> PrintJobAttribute </item>
+			<item> PrintJobAttributeEvent </item>
+			<item> PrintJobAttributeListener </item>
+			<item> PrintJobAttributeSet </item>
+			<item> PrintJobEvent </item>
+			<item> PrintJobListener </item>
+			<item> PrintQuality </item>
+			<item> PrintRequestAttribute </item>
+			<item> PrintRequestAttributeSet </item>
+			<item> PrintService </item>
+			<item> PrintServiceAttribute </item>
+			<item> PrintServiceAttributeEvent </item>
+			<item> PrintServiceAttributeListener </item>
+			<item> PrintServiceAttributeSet </item>
+			<item> PrintServiceLookup </item>
+			<item> PrintStream </item>
+			<item> PrintWriter </item>
+			<item> Printable </item>
+			<item> PrinterAbortException </item>
+			<item> PrinterException </item>
+			<item> PrinterGraphics </item>
+			<item> PrinterIOException </item>
+			<item> PrinterInfo </item>
+			<item> PrinterIsAcceptingJobs </item>
+			<item> PrinterJob </item>
+			<item> PrinterLocation </item>
+			<item> PrinterMakeAndModel </item>
+			<item> PrinterMessageFromOperator </item>
+			<item> PrinterMoreInfo </item>
+			<item> PrinterMoreInfoManufacturer </item>
+			<item> PrinterName </item>
+			<item> PrinterResolution </item>
+			<item> PrinterState </item>
+			<item> PrinterStateReason </item>
+			<item> PrinterStateReasons </item>
+			<item> PrinterURI </item>
+			<item> PriorityBlockingQueue </item>
+			<item> PriorityQueue </item>
+			<item> PrivateClassLoader </item>
+			<item> PrivateCredentialPermission </item>
+			<item> PrivateKey </item>
+			<item> PrivateMLet </item>
+			<item> PrivilegedAction </item>
+			<item> PrivilegedActionException </item>
+			<item> PrivilegedExceptionAction </item>
+			<item> Process </item>
+			<item> ProcessBuilder </item>
+			<item> ProcessingInstruction </item>
+			<item> ProfileDataException </item>
+			<item> ProfileIdHelper </item>
+			<item> ProgressBarUI </item>
+			<item> ProgressMonitor </item>
+			<item> ProgressMonitorInputStream </item>
+			<item> Properties </item>
+			<item> PropertyChangeEvent </item>
+			<item> PropertyChangeListener </item>
+			<item> PropertyChangeListenerProxy </item>
+			<item> PropertyChangeSupport </item>
+			<item> PropertyDescriptor </item>
+			<item> PropertyEditor </item>
+			<item> PropertyEditorManager </item>
+			<item> PropertyEditorSupport </item>
+			<item> PropertyPermission </item>
+			<item> PropertyResourceBundle </item>
+			<item> PropertyVetoException </item>
+			<item> ProtectionDomain </item>
+			<item> ProtocolException </item>
+			<item> Provider </item>
+			<item> Provider.Service </item>
+			<item> ProviderException </item>
+			<item> Proxy </item>
+			<item> Proxy </item>
+			<item> Proxy.Type </item>
+			<item> ProxySelector </item>
+			<item> PublicKey </item>
+			<item> PushbackInputStream </item>
+			<item> PushbackReader </item>
+			<item> QName </item>
+			<item> QuadCurve2D </item>
+			<item> QuadCurve2D.Double </item>
+			<item> QuadCurve2D.Float </item>
+			<item> Query </item>
+			<item> QueryEval </item>
+			<item> QueryExp </item>
+			<item> Queue </item>
+			<item> QueuedJobCount </item>
+			<item> RC2ParameterSpec </item>
+			<item> RC5ParameterSpec </item>
+			<item> REBIND </item>
+			<item> REQUEST_PROCESSING_POLICY_ID </item>
+			<item> RGBImageFilter </item>
+			<item> RMIClassLoader </item>
+			<item> RMIClassLoaderSpi </item>
+			<item> RMIClientSocketFactory </item>
+			<item> RMIConnection </item>
+			<item> RMIConnectionImpl </item>
+			<item> RMIConnectionImpl_Stub </item>
+			<item> RMIConnector </item>
+			<item> RMIConnectorServer </item>
+			<item> RMICustomMaxStreamFormat </item>
+			<item> RMIFailureHandler </item>
+			<item> RMIIIOPServerImpl </item>
+			<item> RMIJRMPServerImpl </item>
+			<item> RMISecurityException </item>
+			<item> RMISecurityManager </item>
+			<item> RMIServer </item>
+			<item> RMIServerImpl </item>
+			<item> RMIServerImpl_Stub </item>
+			<item> RMIServerSocketFactory </item>
+			<item> RMISocketFactory </item>
+			<item> RSAKey </item>
+			<item> RSAKeyGenParameterSpec </item>
+			<item> RSAMultiPrimePrivateCrtKey </item>
+			<item> RSAMultiPrimePrivateCrtKeySpec </item>
+			<item> RSAOtherPrimeInfo </item>
+			<item> RSAPrivateCrtKey </item>
+			<item> RSAPrivateCrtKeySpec </item>
+			<item> RSAPrivateKey </item>
+			<item> RSAPrivateKeySpec </item>
+			<item> RSAPublicKey </item>
+			<item> RSAPublicKeySpec </item>
+			<item> RTFEditorKit </item>
+			<item> Random </item>
+			<item> RandomAccess </item>
+			<item> RandomAccessFile </item>
+			<item> Raster </item>
+			<item> RasterFormatException </item>
+			<item> RasterOp </item>
+			<item> Rdn </item>
+			<item> ReadOnlyBufferException </item>
+			<item> ReadWriteLock </item>
+			<item> Readable </item>
+			<item> ReadableByteChannel </item>
+			<item> Reader </item>
+			<item> RealmCallback </item>
+			<item> RealmChoiceCallback </item>
+			<item> Receiver </item>
+			<item> Rectangle </item>
+			<item> Rectangle2D </item>
+			<item> Rectangle2D.Double </item>
+			<item> Rectangle2D.Float </item>
+			<item> RectangularShape </item>
+			<item> ReentrantLock </item>
+			<item> ReentrantReadWriteLock </item>
+			<item> ReentrantReadWriteLock.ReadLock </item>
+			<item> ReentrantReadWriteLock.WriteLock </item>
+			<item> Ref </item>
+			<item> RefAddr </item>
+			<item> Reference </item>
+			<item> Reference </item>
+			<item> ReferenceQueue </item>
+			<item> ReferenceUriSchemesSupported </item>
+			<item> Referenceable </item>
+			<item> ReferralException </item>
+			<item> ReflectPermission </item>
+			<item> ReflectionException </item>
+			<item> RefreshFailedException </item>
+			<item> Refreshable </item>
+			<item> Region </item>
+			<item> RegisterableService </item>
+			<item> Registry </item>
+			<item> RegistryHandler </item>
+			<item> RejectedExecutionException </item>
+			<item> RejectedExecutionHandler </item>
+			<item> Relation </item>
+			<item> RelationException </item>
+			<item> RelationNotFoundException </item>
+			<item> RelationNotification </item>
+			<item> RelationService </item>
+			<item> RelationServiceMBean </item>
+			<item> RelationServiceNotRegisteredException </item>
+			<item> RelationSupport </item>
+			<item> RelationSupportMBean </item>
+			<item> RelationType </item>
+			<item> RelationTypeNotFoundException </item>
+			<item> RelationTypeSupport </item>
+			<item> RemarshalException </item>
+			<item> Remote </item>
+			<item> RemoteCall </item>
+			<item> RemoteException </item>
+			<item> RemoteObject </item>
+			<item> RemoteObjectInvocationHandler </item>
+			<item> RemoteRef </item>
+			<item> RemoteServer </item>
+			<item> RemoteStub </item>
+			<item> RenderContext </item>
+			<item> RenderableImage </item>
+			<item> RenderableImageOp </item>
+			<item> RenderableImageProducer </item>
+			<item> RenderedImage </item>
+			<item> RenderedImageFactory </item>
+			<item> Renderer </item>
+			<item> RenderingHints </item>
+			<item> RenderingHints.Key </item>
+			<item> RepaintManager </item>
+			<item> ReplicateScaleFilter </item>
+			<item> RepositoryIdHelper </item>
+			<item> Request </item>
+			<item> RequestInfo </item>
+			<item> RequestInfoOperations </item>
+			<item> RequestProcessingPolicy </item>
+			<item> RequestProcessingPolicyOperations </item>
+			<item> RequestProcessingPolicyValue </item>
+			<item> RequestingUserName </item>
+			<item> RequiredModelMBean </item>
+			<item> RescaleOp </item>
+			<item> ResolutionSyntax </item>
+			<item> ResolveResult </item>
+			<item> Resolver </item>
+			<item> ResourceBundle </item>
+			<item> ResponseCache </item>
+			<item> ResponseHandler </item>
+			<item> Result </item>
+			<item> ResultSet </item>
+			<item> ResultSetMetaData </item>
+			<item> Retention </item>
+			<item> RetentionPolicy </item>
+			<item> ReverbType </item>
+			<item> Robot </item>
+			<item> Role </item>
+			<item> RoleInfo </item>
+			<item> RoleInfoNotFoundException </item>
+			<item> RoleList </item>
+			<item> RoleNotFoundException </item>
+			<item> RoleResult </item>
+			<item> RoleStatus </item>
+			<item> RoleUnresolved </item>
+			<item> RoleUnresolvedList </item>
+			<item> RootPaneContainer </item>
+			<item> RootPaneUI </item>
+			<item> RoundRectangle2D </item>
+			<item> RoundRectangle2D.Double </item>
+			<item> RoundRectangle2D.Float </item>
+			<item> RoundingMode </item>
+			<item> RowMapper </item>
+			<item> RowSet </item>
+			<item> RowSetEvent </item>
+			<item> RowSetInternal </item>
+			<item> RowSetListener </item>
+			<item> RowSetMetaData </item>
+			<item> RowSetMetaDataImpl </item>
+			<item> RowSetReader </item>
+			<item> RowSetWarning </item>
+			<item> RowSetWriter </item>
+			<item> RuleBasedCollator </item>
+			<item> RunTime </item>
+			<item> RunTimeOperations </item>
+			<item> Runnable </item>
+			<item> Runtime </item>
+			<item> RuntimeErrorException </item>
+			<item> RuntimeException </item>
+			<item> RuntimeMBeanException </item>
+			<item> RuntimeMXBean </item>
+			<item> RuntimeOperationsException </item>
+			<item> RuntimePermission </item>
+			<item> SAXException </item>
+			<item> SAXNotRecognizedException </item>
+			<item> SAXNotSupportedException </item>
+			<item> SAXParseException </item>
+			<item> SAXParser </item>
+			<item> SAXParserFactory </item>
+			<item> SAXResult </item>
+			<item> SAXSource </item>
+			<item> SAXTransformerFactory </item>
+			<item> SERVANT_RETENTION_POLICY_ID </item>
+			<item> SQLData </item>
+			<item> SQLException </item>
+			<item> SQLInput </item>
+			<item> SQLInputImpl </item>
+			<item> SQLOutput </item>
+			<item> SQLOutputImpl </item>
+			<item> SQLPermission </item>
+			<item> SQLWarning </item>
+			<item> SSLContext </item>
+			<item> SSLContextSpi </item>
+			<item> SSLEngine </item>
+			<item> SSLEngineResult </item>
+			<item> SSLEngineResult.HandshakeStatus </item>
+			<item> SSLEngineResult.Status </item>
+			<item> SSLException </item>
+			<item> SSLHandshakeException </item>
+			<item> SSLKeyException </item>
+			<item> SSLPeerUnverifiedException </item>
+			<item> SSLPermission </item>
+			<item> SSLProtocolException </item>
+			<item> SSLServerSocket </item>
+			<item> SSLServerSocketFactory </item>
+			<item> SSLSession </item>
+			<item> SSLSessionBindingEvent </item>
+			<item> SSLSessionBindingListener </item>
+			<item> SSLSessionContext </item>
+			<item> SSLSocket </item>
+			<item> SSLSocketFactory </item>
+			<item> SUCCESSFUL </item>
+			<item> SYNC_WITH_TRANSPORT </item>
+			<item> SYSTEM_EXCEPTION </item>
+			<item> SampleModel </item>
+			<item> Sasl </item>
+			<item> SaslClient </item>
+			<item> SaslClientFactory </item>
+			<item> SaslException </item>
+			<item> SaslServer </item>
+			<item> SaslServerFactory </item>
+			<item> Savepoint </item>
+			<item> Scanner </item>
+			<item> ScatteringByteChannel </item>
+			<item> ScheduledExecutorService </item>
+			<item> ScheduledFuture </item>
+			<item> ScheduledThreadPoolExecutor </item>
+			<item> Schema </item>
+			<item> SchemaFactory </item>
+			<item> SchemaFactoryLoader </item>
+			<item> SchemaViolationException </item>
+			<item> ScrollBarUI </item>
+			<item> ScrollPane </item>
+			<item> ScrollPaneAdjustable </item>
+			<item> ScrollPaneConstants </item>
+			<item> ScrollPaneLayout </item>
+			<item> ScrollPaneLayout.UIResource </item>
+			<item> ScrollPaneUI </item>
+			<item> Scrollable </item>
+			<item> Scrollbar </item>
+			<item> SealedObject </item>
+			<item> SearchControls </item>
+			<item> SearchResult </item>
+			<item> SecretKey </item>
+			<item> SecretKeyFactory </item>
+			<item> SecretKeyFactorySpi </item>
+			<item> SecretKeySpec </item>
+			<item> SecureCacheResponse </item>
+			<item> SecureClassLoader </item>
+			<item> SecureRandom </item>
+			<item> SecureRandomSpi </item>
+			<item> Security </item>
+			<item> SecurityException </item>
+			<item> SecurityManager </item>
+			<item> SecurityPermission </item>
+			<item> Segment </item>
+			<item> SelectableChannel </item>
+			<item> SelectionKey </item>
+			<item> Selector </item>
+			<item> SelectorProvider </item>
+			<item> Semaphore </item>
+			<item> SeparatorUI </item>
+			<item> Sequence </item>
+			<item> SequenceInputStream </item>
+			<item> Sequencer </item>
+			<item> Sequencer.SyncMode </item>
+			<item> SerialArray </item>
+			<item> SerialBlob </item>
+			<item> SerialClob </item>
+			<item> SerialDatalink </item>
+			<item> SerialException </item>
+			<item> SerialJavaObject </item>
+			<item> SerialRef </item>
+			<item> SerialStruct </item>
+			<item> Serializable </item>
+			<item> SerializablePermission </item>
+			<item> Servant </item>
+			<item> ServantActivator </item>
+			<item> ServantActivatorHelper </item>
+			<item> ServantActivatorOperations </item>
+			<item> ServantActivatorPOA </item>
+			<item> ServantAlreadyActive </item>
+			<item> ServantAlreadyActiveHelper </item>
+			<item> ServantLocator </item>
+			<item> ServantLocatorHelper </item>
+			<item> ServantLocatorOperations </item>
+			<item> ServantLocatorPOA </item>
+			<item> ServantManager </item>
+			<item> ServantManagerOperations </item>
+			<item> ServantNotActive </item>
+			<item> ServantNotActiveHelper </item>
+			<item> ServantObject </item>
+			<item> ServantRetentionPolicy </item>
+			<item> ServantRetentionPolicyOperations </item>
+			<item> ServantRetentionPolicyValue </item>
+			<item> ServerCloneException </item>
+			<item> ServerError </item>
+			<item> ServerException </item>
+			<item> ServerIdHelper </item>
+			<item> ServerNotActiveException </item>
+			<item> ServerRef </item>
+			<item> ServerRequest </item>
+			<item> ServerRequestInfo </item>
+			<item> ServerRequestInfoOperations </item>
+			<item> ServerRequestInterceptor </item>
+			<item> ServerRequestInterceptorOperations </item>
+			<item> ServerRuntimeException </item>
+			<item> ServerSocket </item>
+			<item> ServerSocketChannel </item>
+			<item> ServerSocketFactory </item>
+			<item> ServiceContext </item>
+			<item> ServiceContextHelper </item>
+			<item> ServiceContextHolder </item>
+			<item> ServiceContextListHelper </item>
+			<item> ServiceContextListHolder </item>
+			<item> ServiceDetail </item>
+			<item> ServiceDetailHelper </item>
+			<item> ServiceIdHelper </item>
+			<item> ServiceInformation </item>
+			<item> ServiceInformationHelper </item>
+			<item> ServiceInformationHolder </item>
+			<item> ServiceNotFoundException </item>
+			<item> ServicePermission </item>
+			<item> ServiceRegistry </item>
+			<item> ServiceRegistry.Filter </item>
+			<item> ServiceUI </item>
+			<item> ServiceUIFactory </item>
+			<item> ServiceUnavailableException </item>
+			<item> Set </item>
+			<item> SetOfIntegerSyntax </item>
+			<item> SetOverrideType </item>
+			<item> SetOverrideTypeHelper </item>
+			<item> Severity </item>
+			<item> Shape </item>
+			<item> ShapeGraphicAttribute </item>
+			<item> SheetCollate </item>
+			<item> Short </item>
+			<item> ShortBuffer </item>
+			<item> ShortBufferException </item>
+			<item> ShortHolder </item>
+			<item> ShortLookupTable </item>
+			<item> ShortMessage </item>
+			<item> ShortSeqHelper </item>
+			<item> ShortSeqHolder </item>
+			<item> Sides </item>
+			<item> Signature </item>
+			<item> SignatureException </item>
+			<item> SignatureSpi </item>
+			<item> SignedObject </item>
+			<item> Signer </item>
+			<item> SimpleAttributeSet </item>
+			<item> SimpleBeanInfo </item>
+			<item> SimpleDateFormat </item>
+			<item> SimpleDoc </item>
+			<item> SimpleFormatter </item>
+			<item> SimpleTimeZone </item>
+			<item> SimpleType </item>
+			<item> SinglePixelPackedSampleModel </item>
+			<item> SingleSelectionModel </item>
+			<item> Size2DSyntax </item>
+			<item> SizeLimitExceededException </item>
+			<item> SizeRequirements </item>
+			<item> SizeSequence </item>
+			<item> Skeleton </item>
+			<item> SkeletonMismatchException </item>
+			<item> SkeletonNotFoundException </item>
+			<item> SliderUI </item>
+			<item> Socket </item>
+			<item> SocketAddress </item>
+			<item> SocketChannel </item>
+			<item> SocketException </item>
+			<item> SocketFactory </item>
+			<item> SocketHandler </item>
+			<item> SocketImpl </item>
+			<item> SocketImplFactory </item>
+			<item> SocketOptions </item>
+			<item> SocketPermission </item>
+			<item> SocketSecurityException </item>
+			<item> SocketTimeoutException </item>
+			<item> SoftBevelBorder </item>
+			<item> SoftReference </item>
+			<item> SortControl </item>
+			<item> SortKey </item>
+			<item> SortResponseControl </item>
+			<item> SortedMap </item>
+			<item> SortedSet </item>
+			<item> SortingFocusTraversalPolicy </item>
+			<item> Soundbank </item>
+			<item> SoundbankReader </item>
+			<item> SoundbankResource </item>
+			<item> Source </item>
+			<item> SourceDataLine </item>
+			<item> SourceLocator </item>
+			<item> SpinnerDateModel </item>
+			<item> SpinnerListModel </item>
+			<item> SpinnerModel </item>
+			<item> SpinnerNumberModel </item>
+			<item> SpinnerUI </item>
+			<item> SplitPaneUI </item>
+			<item> Spring </item>
+			<item> SpringLayout </item>
+			<item> SpringLayout.Constraints </item>
+			<item> SslRMIClientSocketFactory </item>
+			<item> SslRMIServerSocketFactory </item>
+			<item> Stack </item>
+			<item> StackOverflowError </item>
+			<item> StackTraceElement </item>
+			<item> StandardMBean </item>
+			<item> StartTlsRequest </item>
+			<item> StartTlsResponse </item>
+			<item> State </item>
+			<item> StateEdit </item>
+			<item> StateEditable </item>
+			<item> StateFactory </item>
+			<item> Statement </item>
+			<item> Statement </item>
+			<item> StreamCorruptedException </item>
+			<item> StreamHandler </item>
+			<item> StreamPrintService </item>
+			<item> StreamPrintServiceFactory </item>
+			<item> StreamResult </item>
+			<item> StreamSource </item>
+			<item> StreamTokenizer </item>
+			<item> Streamable </item>
+			<item> StreamableValue </item>
+			<item> StrictMath </item>
+			<item> String </item>
+			<item> StringBuffer </item>
+			<item> StringBufferInputStream </item>
+			<item> StringBuilder </item>
+			<item> StringCharacterIterator </item>
+			<item> StringContent </item>
+			<item> StringHolder </item>
+			<item> StringIndexOutOfBoundsException </item>
+			<item> StringMonitor </item>
+			<item> StringMonitorMBean </item>
+			<item> StringNameHelper </item>
+			<item> StringReader </item>
+			<item> StringRefAddr </item>
+			<item> StringSelection </item>
+			<item> StringSeqHelper </item>
+			<item> StringSeqHolder </item>
+			<item> StringTokenizer </item>
+			<item> StringValueExp </item>
+			<item> StringValueHelper </item>
+			<item> StringWriter </item>
+			<item> Stroke </item>
+			<item> Struct </item>
+			<item> StructMember </item>
+			<item> StructMemberHelper </item>
+			<item> Stub </item>
+			<item> StubDelegate </item>
+			<item> StubNotFoundException </item>
+			<item> Style </item>
+			<item> StyleConstants </item>
+			<item> StyleConstants.CharacterConstants </item>
+			<item> StyleConstants.ColorConstants </item>
+			<item> StyleConstants.FontConstants </item>
+			<item> StyleConstants.ParagraphConstants </item>
+			<item> StyleContext </item>
+			<item> StyleSheet </item>
+			<item> StyleSheet.BoxPainter </item>
+			<item> StyleSheet.ListPainter </item>
+			<item> StyledDocument </item>
+			<item> StyledEditorKit </item>
+			<item> StyledEditorKit.AlignmentAction </item>
+			<item> StyledEditorKit.BoldAction </item>
+			<item> StyledEditorKit.FontFamilyAction </item>
+			<item> StyledEditorKit.FontSizeAction </item>
+			<item> StyledEditorKit.ForegroundAction </item>
+			<item> StyledEditorKit.ItalicAction </item>
+			<item> StyledEditorKit.StyledTextAction </item>
+			<item> StyledEditorKit.UnderlineAction </item>
+			<item> Subject </item>
+			<item> SubjectDelegationPermission </item>
+			<item> SubjectDomainCombiner </item>
+			<item> SupportedValuesAttribute </item>
+			<item> SuppressWarnings </item>
+			<item> SwingConstants </item>
+			<item> SwingPropertyChangeSupport </item>
+			<item> SwingUtilities </item>
+			<item> SyncFactory </item>
+			<item> SyncFactoryException </item>
+			<item> SyncFailedException </item>
+			<item> SyncProvider </item>
+			<item> SyncProviderException </item>
+			<item> SyncResolver </item>
+			<item> SyncScopeHelper </item>
+			<item> SynchronousQueue </item>
+			<item> SynthConstants </item>
+			<item> SynthContext </item>
+			<item> SynthGraphicsUtils </item>
+			<item> SynthLookAndFeel </item>
+			<item> SynthPainter </item>
+			<item> SynthStyle </item>
+			<item> SynthStyleFactory </item>
+			<item> Synthesizer </item>
+			<item> SysexMessage </item>
+			<item> System </item>
+			<item> SystemColor </item>
+			<item> SystemException </item>
+			<item> SystemFlavorMap </item>
+			<item> TAG_ALTERNATE_IIOP_ADDRESS </item>
+			<item> TAG_CODE_SETS </item>
+			<item> TAG_INTERNET_IOP </item>
+			<item> TAG_JAVA_CODEBASE </item>
+			<item> TAG_MULTIPLE_COMPONENTS </item>
+			<item> TAG_ORB_TYPE </item>
+			<item> TAG_POLICIES </item>
+			<item> TAG_RMI_CUSTOM_MAX_STREAM_FORMAT </item>
+			<item> TCKind </item>
+			<item> THREAD_POLICY_ID </item>
+			<item> TIMEOUT </item>
+			<item> TRANSACTION_MODE </item>
+			<item> TRANSACTION_REQUIRED </item>
+			<item> TRANSACTION_ROLLEDBACK </item>
+			<item> TRANSACTION_UNAVAILABLE </item>
+			<item> TRANSIENT </item>
+			<item> TRANSPORT_RETRY </item>
+			<item> TabExpander </item>
+			<item> TabSet </item>
+			<item> TabStop </item>
+			<item> TabableView </item>
+			<item> TabbedPaneUI </item>
+			<item> TableCellEditor </item>
+			<item> TableCellRenderer </item>
+			<item> TableColumn </item>
+			<item> TableColumnModel </item>
+			<item> TableColumnModelEvent </item>
+			<item> TableColumnModelListener </item>
+			<item> TableHeaderUI </item>
+			<item> TableModel </item>
+			<item> TableModelEvent </item>
+			<item> TableModelListener </item>
+			<item> TableUI </item>
+			<item> TableView </item>
+			<item> TabularData </item>
+			<item> TabularDataSupport </item>
+			<item> TabularType </item>
+			<item> TagElement </item>
+			<item> TaggedComponent </item>
+			<item> TaggedComponentHelper </item>
+			<item> TaggedComponentHolder </item>
+			<item> TaggedProfile </item>
+			<item> TaggedProfileHelper </item>
+			<item> TaggedProfileHolder </item>
+			<item> Target </item>
+			<item> TargetDataLine </item>
+			<item> TargetedNotification </item>
+			<item> Templates </item>
+			<item> TemplatesHandler </item>
+			<item> Text </item>
+			<item> TextAction </item>
+			<item> TextArea </item>
+			<item> TextAttribute </item>
+			<item> TextComponent </item>
+			<item> TextEvent </item>
+			<item> TextField </item>
+			<item> TextHitInfo </item>
+			<item> TextInputCallback </item>
+			<item> TextLayout </item>
+			<item> TextLayout.CaretPolicy </item>
+			<item> TextListener </item>
+			<item> TextMeasurer </item>
+			<item> TextOutputCallback </item>
+			<item> TextSyntax </item>
+			<item> TextUI </item>
+			<item> TexturePaint </item>
+			<item> Thread </item>
+			<item> Thread.State </item>
+			<item> Thread.UncaughtExceptionHandler </item>
+			<item> ThreadDeath </item>
+			<item> ThreadFactory </item>
+			<item> ThreadGroup </item>
+			<item> ThreadInfo </item>
+			<item> ThreadLocal </item>
+			<item> ThreadMXBean </item>
+			<item> ThreadPolicy </item>
+			<item> ThreadPolicyOperations </item>
+			<item> ThreadPolicyValue </item>
+			<item> ThreadPoolExecutor </item>
+			<item> ThreadPoolExecutor.AbortPolicy </item>
+			<item> ThreadPoolExecutor.CallerRunsPolicy </item>
+			<item> ThreadPoolExecutor.DiscardOldestPolicy </item>
+			<item> ThreadPoolExecutor.DiscardPolicy </item>
+			<item> Throwable </item>
+			<item> Tie </item>
+			<item> TileObserver </item>
+			<item> Time </item>
+			<item> TimeLimitExceededException </item>
+			<item> TimeUnit </item>
+			<item> TimeZone </item>
+			<item> TimeoutException </item>
+			<item> Timer </item>
+			<item> Timer </item>
+			<item> Timer </item>
+			<item> TimerAlarmClockNotification </item>
+			<item> TimerMBean </item>
+			<item> TimerNotification </item>
+			<item> TimerTask </item>
+			<item> Timestamp </item>
+			<item> Timestamp </item>
+			<item> TitledBorder </item>
+			<item> TooManyListenersException </item>
+			<item> ToolBarUI </item>
+			<item> ToolTipManager </item>
+			<item> ToolTipUI </item>
+			<item> Toolkit </item>
+			<item> Track </item>
+			<item> TransactionRequiredException </item>
+			<item> TransactionRolledbackException </item>
+			<item> TransactionService </item>
+			<item> TransactionalWriter </item>
+			<item> TransferHandler </item>
+			<item> Transferable </item>
+			<item> TransformAttribute </item>
+			<item> Transformer </item>
+			<item> TransformerConfigurationException </item>
+			<item> TransformerException </item>
+			<item> TransformerFactory </item>
+			<item> TransformerFactoryConfigurationError </item>
+			<item> TransformerHandler </item>
+			<item> Transmitter </item>
+			<item> Transparency </item>
+			<item> TreeCellEditor </item>
+			<item> TreeCellRenderer </item>
+			<item> TreeExpansionEvent </item>
+			<item> TreeExpansionListener </item>
+			<item> TreeMap </item>
+			<item> TreeModel </item>
+			<item> TreeModelEvent </item>
+			<item> TreeModelListener </item>
+			<item> TreeNode </item>
+			<item> TreePath </item>
+			<item> TreeSelectionEvent </item>
+			<item> TreeSelectionListener </item>
+			<item> TreeSelectionModel </item>
+			<item> TreeSet </item>
+			<item> TreeUI </item>
+			<item> TreeWillExpandListener </item>
+			<item> TrustAnchor </item>
+			<item> TrustManager </item>
+			<item> TrustManagerFactory </item>
+			<item> TrustManagerFactorySpi </item>
+			<item> Type </item>
+			<item> TypeCode </item>
+			<item> TypeCodeHolder </item>
+			<item> TypeInfo </item>
+			<item> TypeInfoProvider </item>
+			<item> TypeMismatch </item>
+			<item> TypeMismatch </item>
+			<item> TypeMismatch </item>
+			<item> TypeMismatchHelper </item>
+			<item> TypeMismatchHelper </item>
+			<item> TypeNotPresentException </item>
+			<item> TypeVariable </item>
+			<item> Types </item>
+			<item> UID </item>
+			<item> UIDefaults </item>
+			<item> UIDefaults.ActiveValue </item>
+			<item> UIDefaults.LazyInputMap </item>
+			<item> UIDefaults.LazyValue </item>
+			<item> UIDefaults.ProxyLazyValue </item>
+			<item> UIManager </item>
+			<item> UIManager.LookAndFeelInfo </item>
+			<item> UIResource </item>
+			<item> ULongLongSeqHelper </item>
+			<item> ULongLongSeqHolder </item>
+			<item> ULongSeqHelper </item>
+			<item> ULongSeqHolder </item>
+			<item> UNKNOWN </item>
+			<item> UNKNOWN </item>
+			<item> UNSUPPORTED_POLICY </item>
+			<item> UNSUPPORTED_POLICY_VALUE </item>
+			<item> URI </item>
+			<item> URIException </item>
+			<item> URIResolver </item>
+			<item> URISyntax </item>
+			<item> URISyntaxException </item>
+			<item> URL </item>
+			<item> URLClassLoader </item>
+			<item> URLConnection </item>
+			<item> URLDecoder </item>
+			<item> URLEncoder </item>
+			<item> URLStreamHandler </item>
+			<item> URLStreamHandlerFactory </item>
+			<item> URLStringHelper </item>
+			<item> USER_EXCEPTION </item>
+			<item> UShortSeqHelper </item>
+			<item> UShortSeqHolder </item>
+			<item> UTFDataFormatException </item>
+			<item> UUID </item>
+			<item> UndeclaredThrowableException </item>
+			<item> UndoManager </item>
+			<item> UndoableEdit </item>
+			<item> UndoableEditEvent </item>
+			<item> UndoableEditListener </item>
+			<item> UndoableEditSupport </item>
+			<item> UnexpectedException </item>
+			<item> UnicastRemoteObject </item>
+			<item> UnionMember </item>
+			<item> UnionMemberHelper </item>
+			<item> UnknownEncoding </item>
+			<item> UnknownEncodingHelper </item>
+			<item> UnknownError </item>
+			<item> UnknownException </item>
+			<item> UnknownFormatConversionException </item>
+			<item> UnknownFormatFlagsException </item>
+			<item> UnknownGroupException </item>
+			<item> UnknownHostException </item>
+			<item> UnknownHostException </item>
+			<item> UnknownObjectException </item>
+			<item> UnknownServiceException </item>
+			<item> UnknownUserException </item>
+			<item> UnknownUserExceptionHelper </item>
+			<item> UnknownUserExceptionHolder </item>
+			<item> UnmappableCharacterException </item>
+			<item> UnmarshalException </item>
+			<item> UnmodifiableClassException </item>
+			<item> UnmodifiableSetException </item>
+			<item> UnrecoverableEntryException </item>
+			<item> UnrecoverableKeyException </item>
+			<item> Unreferenced </item>
+			<item> UnresolvedAddressException </item>
+			<item> UnresolvedPermission </item>
+			<item> UnsatisfiedLinkError </item>
+			<item> UnsolicitedNotification </item>
+			<item> UnsolicitedNotificationEvent </item>
+			<item> UnsolicitedNotificationListener </item>
+			<item> UnsupportedAddressTypeException </item>
+			<item> UnsupportedAudioFileException </item>
+			<item> UnsupportedCallbackException </item>
+			<item> UnsupportedCharsetException </item>
+			<item> UnsupportedClassVersionError </item>
+			<item> UnsupportedEncodingException </item>
+			<item> UnsupportedFlavorException </item>
+			<item> UnsupportedLookAndFeelException </item>
+			<item> UnsupportedOperationException </item>
+			<item> UserDataHandler </item>
+			<item> UserException </item>
+			<item> Util </item>
+			<item> UtilDelegate </item>
+			<item> Utilities </item>
+			<item> VMID </item>
+			<item> VM_ABSTRACT </item>
+			<item> VM_CUSTOM </item>
+			<item> VM_NONE </item>
+			<item> VM_TRUNCATABLE </item>
+			<item> Validator </item>
+			<item> ValidatorHandler </item>
+			<item> ValueBase </item>
+			<item> ValueBaseHelper </item>
+			<item> ValueBaseHolder </item>
+			<item> ValueExp </item>
+			<item> ValueFactory </item>
+			<item> ValueHandler </item>
+			<item> ValueHandlerMultiFormat </item>
+			<item> ValueInputStream </item>
+			<item> ValueMember </item>
+			<item> ValueMemberHelper </item>
+			<item> ValueOutputStream </item>
+			<item> VariableHeightLayoutCache </item>
+			<item> Vector </item>
+			<item> VerifyError </item>
+			<item> VersionSpecHelper </item>
+			<item> VetoableChangeListener </item>
+			<item> VetoableChangeListenerProxy </item>
+			<item> VetoableChangeSupport </item>
+			<item> View </item>
+			<item> ViewFactory </item>
+			<item> ViewportLayout </item>
+			<item> ViewportUI </item>
+			<item> VirtualMachineError </item>
+			<item> Visibility </item>
+			<item> VisibilityHelper </item>
+			<item> VoiceStatus </item>
+			<item> Void </item>
+			<item> VolatileImage </item>
+			<item> WCharSeqHelper </item>
+			<item> WCharSeqHolder </item>
+			<item> WStringSeqHelper </item>
+			<item> WStringSeqHolder </item>
+			<item> WStringValueHelper </item>
+			<item> WeakHashMap </item>
+			<item> WeakReference </item>
+			<item> WebRowSet </item>
+			<item> WildcardType </item>
+			<item> Window </item>
+			<item> WindowAdapter </item>
+			<item> WindowConstants </item>
+			<item> WindowEvent </item>
+			<item> WindowFocusListener </item>
+			<item> WindowListener </item>
+			<item> WindowStateListener </item>
+			<item> WrappedPlainView </item>
+			<item> WritableByteChannel </item>
+			<item> WritableRaster </item>
+			<item> WritableRenderedImage </item>
+			<item> WriteAbortedException </item>
+			<item> Writer </item>
+			<item> WrongAdapter </item>
+			<item> WrongAdapterHelper </item>
+			<item> WrongPolicy </item>
+			<item> WrongPolicyHelper </item>
+			<item> WrongTransaction </item>
+			<item> WrongTransactionHelper </item>
+			<item> WrongTransactionHolder </item>
+			<item> X500Principal </item>
+			<item> X500PrivateCredential </item>
+			<item> X509CRL </item>
+			<item> X509CRLEntry </item>
+			<item> X509CRLSelector </item>
+			<item> X509CertSelector </item>
+			<item> X509Certificate </item>
+			<item> X509Certificate </item>
+			<item> X509EncodedKeySpec </item>
+			<item> X509ExtendedKeyManager </item>
+			<item> X509Extension </item>
+			<item> X509KeyManager </item>
+			<item> X509TrustManager </item>
+			<item> XAConnection </item>
+			<item> XADataSource </item>
+			<item> XAException </item>
+			<item> XAResource </item>
+			<item> XMLConstants </item>
+			<item> XMLDecoder </item>
+			<item> XMLEncoder </item>
+			<item> XMLFilter </item>
+			<item> XMLFilterImpl </item>
+			<item> XMLFormatter </item>
+			<item> XMLGregorianCalendar </item>
+			<item> XMLParseException </item>
+			<item> XMLReader </item>
+			<item> XMLReaderAdapter </item>
+			<item> XMLReaderFactory </item>
+			<item> XPath </item>
+			<item> XPathConstants </item>
+			<item> XPathException </item>
+			<item> XPathExpression </item>
+			<item> XPathExpressionException </item>
+			<item> XPathFactory </item>
+			<item> XPathFactoryConfigurationException </item>
+			<item> XPathFunction </item>
+			<item> XPathFunctionException </item>
+			<item> XPathFunctionResolver </item>
+			<item> XPathVariableResolver </item>
+			<item> Xid </item>
+			<item> XmlReader </item>
+			<item> XmlWriter </item>
+			<item> ZipEntry </item>
+			<item> ZipException </item>
+			<item> ZipFile </item>
+			<item> ZipInputStream </item>
+			<item> ZipOutputStream </item>
+			<item> ZoneView </item>
+			<item> _BindingIteratorImplBase </item>
+			<item> _BindingIteratorStub </item>
+			<item> _DynAnyFactoryStub </item>
+			<item> _DynAnyStub </item>
+			<item> _DynArrayStub </item>
+			<item> _DynEnumStub </item>
+			<item> _DynFixedStub </item>
+			<item> _DynSequenceStub </item>
+			<item> _DynStructStub </item>
+			<item> _DynUnionStub </item>
+			<item> _DynValueStub </item>
+			<item> _IDLTypeStub </item>
+			<item> _NamingContextExtStub </item>
+			<item> _NamingContextImplBase </item>
+			<item> _NamingContextStub </item>
+			<item> _PolicyStub </item>
+			<item> _Remote_Stub </item>
+			<item> _ServantActivatorStub </item>
+			<item> _ServantLocatorStub </item>
+			
+<!-- 			new classes of jdk 6.0 -->
+
+			<item> AbstractAnnotationValueVisitor6 </item>
+			<item> AbstractElementVisitor6 </item>
+			<item> AbstractMarshallerImpl </item>
+			<item> AbstractOwnableSynchronizer </item>
+			<item> AbstractProcessor </item>
+			<item> AbstractQueuedLongSynchronizer </item>
+			<item> AbstractScriptEngine </item>
+			<item> AbstractTypeVisitor6 </item>
+			<item> AbstractUnmarshallerImpl </item>
+			<item> ActivationDataFlavor </item>
+			<item> AlgorithmMethod </item>
+			<item> AnnotationMirror </item>
+			<item> AnnotationValue </item>
+			<item> AnnotationValueVisitor </item>
+			<item> ArrayDeque </item>
+			<item> AsyncHandler </item>
+			<item> AttachmentMarshaller </item>
+			<item> AttachmentPart </item>
+			<item> AttachmentUnmarshaller </item>
+			<item> Binder </item>
+			<item> BindingProvider </item>
+			<item> Bindings </item>
+			<item> BlockingDeque </item>
+			<item> BreakIteratorProvider </item>
+			<item> C14NMethodParameterSpec </item>
+			<item> CanonicalizationMethod </item>
+			<item> Characters </item>
+			<item> ClientInfoStatus </item>
+			<item> CollapsedStringAdapter </item>
+			<item> CollatorProvider </item>
+			<item> CommandInfo </item>
+			<item> CommandMap </item>
+			<item> CommandObject </item>
+			<item> CommonDataSource </item>
+			<item> Compilable </item>
+			<item> CompiledScript </item>
+			<item> Completion </item>
+			<item> Completions </item>
+			<item> CompositeDataInvocationHandler </item>
+			<item> CompositeDataView </item>
+			<item> ConcurrentNavigableMap </item>
+			<item> ConcurrentSkipListMap </item>
+			<item> ConcurrentSkipListSet </item>
+			<item> ConfigurationSpi </item>
+			<item> Console </item>
+			<item> ConstructorProperties </item>
+			<item> CookieManager </item>
+			<item> CookiePolicy </item>
+			<item> CookieStore </item>
+			<item> CurrencyNameProvider </item>
+			<item> Data </item>
+			<item> DataContentHandler </item>
+			<item> DataContentHandlerFactory </item>
+			<item> DataHandler </item>
+			<item> DatatypeConverter </item>
+			<item> DatatypeConverterInterface </item>
+			<item> DateFormatProvider </item>
+			<item> DateFormatSymbolsProvider </item>
+			<item> DecimalFormatSymbolsProvider </item>
+			<item> DeclaredType </item>
+			<item> DefaultRowSorter </item>
+			<item> DefaultValidationEventHandler </item>
+			<item> DeflaterInputStream </item>
+			<item> Deque </item>
+			<item> DescriptorKey </item>
+			<item> DescriptorRead </item>
+			<item> Desktop </item>
+			<item> Detail </item>
+			<item> DetailEntry </item>
+			<item> Diagnostic </item>
+			<item> DiagnosticCollector </item>
+			<item> DiagnosticListener </item>
+			<item> DigestMethod </item>
+			<item> DigestMethodParameterSpec </item>
+			<item> Dispatch </item>
+			<item> DOMCryptoContext </item>
+			<item> DomHandler </item>
+			<item> DOMSignContext </item>
+			<item> DOMStructure </item>
+			<item> DOMURIReference </item>
+			<item> DOMValidateContext </item>
+			<item> DropMode </item>
+			<item> ElementFilter </item>
+			<item> ElementKind </item>
+			<item> ElementKindVisitor6 </item>
+			<item> Elements </item>
+			<item> ElementScanner6 </item>
+			<item> ElementVisitor </item>
+			<item> EndDocument </item>
+			<item> EndElement </item>
+			<item> Endpoint </item>
+			<item> EntityDeclaration </item>
+			<item> ErrorType </item>
+			<item> EventException </item>
+			<item> EventFilter </item>
+			<item> EventReaderDelegate </item>
+			<item> EventTarget </item>
+			<item> ExcC14NParameterSpec </item>
+			<item> ExecutableElement </item>
+			<item> ExecutableType </item>
+			<item> FileDataSource </item>
+			<item> FileNameExtensionFilter </item>
+			<item> FileObject </item>
+			<item> Filer </item>
+			<item> FilerException </item>
+			<item> FileTypeMap </item>
+			<item> ForwardingFileObject </item>
+			<item> ForwardingJavaFileManager </item>
+			<item> ForwardingJavaFileObject </item>
+			<item> Generated </item>
+			<item> GridBagLayoutInfo </item>
+			<item> GroupLayout </item>
+			<item> HandlerChain </item>
+			<item> HandlerResolver </item>
+			<item> HexBinaryAdapter </item>
+			<item> HMACParameterSpec </item>
+			<item> Holder </item>
+			<item> HTTPBinding </item>
+			<item> HttpCookie </item>
+			<item> HTTPException </item>
+			<item> IDN </item>
+			<item> ImmutableDescriptor </item>
+			<item> InflaterOutputStream </item>
+			<item> InitParam </item>
+			<item> InterfaceAddress </item>
+			<item> Invocable </item>
+			<item> IOError </item>
+			<item> JavaCompiler </item>
+			<item> JavaFileManager </item>
+			<item> JavaFileObject </item>
+			<item> JAXBContext </item>
+			<item> JAXBElement </item>
+			<item> JAXBException </item>
+			<item> JAXBIntrospector </item>
+			<item> JAXBResult </item>
+			<item> JAXBSource </item>
+			<item> JMX </item>
+			<item> JMXAddressable </item>
+			<item> KeyInfo </item>
+			<item> KeyInfoFactory </item>
+			<item> KeyName </item>
+			<item> KeySelector </item>
+			<item> KeySelectorException </item>
+			<item> KeySelectorResult </item>
+			<item> KeyValue </item>
+			<item> LayoutPath </item>
+			<item> LayoutStyle </item>
+			<item> LinearGradientPaint </item>
+			<item> LinkedBlockingDeque </item>
+			<item> LocaleNameProvider </item>
+			<item> LocaleServiceProvider </item>
+			<item> Location </item>
+			<item> LockInfo </item>
+			<item> LogicalHandler </item>
+			<item> LogicalMessage </item>
+			<item> LogicalMessageContext </item>
+			<item> MailcapCommandMap </item>
+			<item> Marshaller </item>
+			<item> MessageContext </item>
+			<item> MessageFactory </item>
+			<item> Messager </item>
+			<item> MimeHeader </item>
+			<item> MimeHeaders </item>
+			<item> MimeType </item>
+			<item> MimeTypeParameterList </item>
+			<item> MimetypesFileTypeMap </item>
+			<item> MirroredTypeException </item>
+			<item> MirroredTypesException </item>
+			<item> MLetContent </item>
+			<item> MonitorInfo </item>
+			<item> MultipleGradientPaint </item>
+			<item> MutationEvent </item>
+			<item> MXBean </item>
+			<item> Namespace </item>
+			<item> NavigableMap </item>
+			<item> NavigableSet </item>
+			<item> NClob </item>
+			<item> NestingKind </item>
+			<item> NodeSetData </item>
+			<item> NormalizedStringAdapter </item>
+			<item> Normalizer </item>
+			<item> NoSuchMechanismException </item>
+			<item> NotationDeclaration </item>
+			<item> NotIdentifiableEvent </item>
+			<item> NotIdentifiableEventImpl </item>
+			<item> NoType </item>
+			<item> NullType </item>
+			<item> NumberFormatProvider </item>
+			<item> OctetStreamData </item>
+			<item> Oneway </item>
+			<item> OptionChecker </item>
+			<item> PackageElement </item>
+			<item> ParseConversionEvent </item>
+			<item> ParseConversionEventImpl </item>
+			<item> Path2D </item>
+			<item> PGPData </item>
+			<item> PolicySpi </item>
+			<item> PortInfo </item>
+			<item> PostConstruct </item>
+			<item> PreDestroy </item>
+			<item> PrimitiveType </item>
+			<item> PrintConversionEvent </item>
+			<item> PrintConversionEventImpl </item>
+			<item> ProcessingEnvironment </item>
+			<item> Processor </item>
+			<item> PropertyException </item>
+			<item> RadialGradientPaint </item>
+			<item> ReferenceType </item>
+			<item> RequestWrapper </item>
+			<item> Resource </item>
+			<item> Resources </item>
+			<item> Response </item>
+			<item> ResponseWrapper </item>
+			<item> RetrievalMethod </item>
+			<item> RoundEnvironment </item>
+			<item> RowFilter </item>
+			<item> RowId </item>
+			<item> RowIdLifetime </item>
+			<item> RowSorter </item>
+			<item> RowSorterEvent </item>
+			<item> RowSorterListener </item>
+			<item> RunnableFuture </item>
+			<item> RunnableScheduledFuture </item>
+			<item> SAAJMetaFactory </item>
+			<item> SAAJResult </item>
+			<item> SchemaOutputResolver </item>
+			<item> ScriptContext </item>
+			<item> ScriptEngine </item>
+			<item> ScriptEngineFactory </item>
+			<item> ScriptEngineManager </item>
+			<item> ScriptException </item>
+			<item> Service </item>
+			<item> ServiceConfigurationError </item>
+			<item> ServiceDelegate </item>
+			<item> ServiceLoader </item>
+			<item> ServiceMode </item>
+			<item> SignatureMethod </item>
+			<item> SignatureMethodParameterSpec </item>
+			<item> SignatureProperties </item>
+			<item> SignatureProperty </item>
+			<item> SignedInfo </item>
+			<item> SimpleAnnotationValueVisitor6 </item>
+			<item> SimpleBindings </item>
+			<item> SimpleElementVisitor6 </item>
+			<item> SimpleJavaFileObject </item>
+			<item> SimpleScriptContext </item>
+			<item> SimpleTypeVisitor6 </item>
+			<item> SOAPBinding </item>
+			<item> SOAPBinding </item>
+			<item> SOAPBody </item>
+			<item> SOAPBodyElement </item>
+			<item> SOAPConnection </item>
+			<item> SOAPConnectionFactory </item>
+			<item> SOAPConstants </item>
+			<item> SOAPElement </item>
+			<item> SOAPElementFactory </item>
+			<item> SOAPEnvelope </item>
+			<item> SOAPException </item>
+			<item> SOAPFactory </item>
+			<item> SOAPFault </item>
+			<item> SOAPFaultElement </item>
+			<item> SOAPFaultException </item>
+			<item> SOAPHandler </item>
+			<item> SOAPHeader </item>
+			<item> SOAPHeaderElement </item>
+			<item> SOAPMessage </item>
+			<item> SOAPMessageContext </item>
+			<item> SOAPMessageHandler </item>
+			<item> SOAPMessageHandlers </item>
+			<item> SOAPPart </item>
+			<item> SortOrder </item>
+			<item> SourceVersion </item>
+			<item> SplashScreen </item>
+			<item> SQLClientInfoException </item>
+			<item> SQLDataException </item>
+			<item> SQLFeatureNotSupportedException </item>
+			<item> SQLIntegrityConstraintViolationException </item>
+			<item> SQLInvalidAuthorizationSpecException </item>
+			<item> SQLNonTransientConnectionException </item>
+			<item> SQLNonTransientException </item>
+			<item> SQLRecoverableException </item>
+			<item> SQLSyntaxErrorException </item>
+			<item> SQLTimeoutException </item>
+			<item> SQLTransactionRollbackException </item>
+			<item> SQLTransientConnectionException </item>
+			<item> SQLTransientException </item>
+			<item> SQLXML </item>
+			<item> SSLParameters </item>
+			<item> StandardEmitterMBean </item>
+			<item> StandardJavaFileManager </item>
+			<item> StandardLocation </item>
+			<item> StartDocument </item>
+			<item> StartElement </item>
+			<item> StatementEvent </item>
+			<item> StatementEventListener </item>
+			<item> StAXResult </item>
+			<item> StAXSource </item>
+			<item> StreamFilter </item>
+			<item> StreamReaderDelegate </item>
+			<item> SupportedAnnotationTypes </item>
+			<item> SupportedOptions </item>
+			<item> SupportedSourceVersion </item>
+			<item> SwingWorker </item>
+			<item> SystemTray </item>
+			<item> TableRowSorter </item>
+			<item> TableStringConverter </item>
+			<item> TimeZoneNameProvider </item>
+			<item> Tool </item>
+			<item> ToolProvider </item>
+			<item> Transform </item>
+			<item> TransformException </item>
+			<item> TransformParameterSpec </item>
+			<item> TransformService </item>
+			<item> TrayIcon </item>
+			<item> TypeConstraintException </item>
+			<item> TypeElement </item>
+			<item> TypeKind </item>
+			<item> TypeKindVisitor6 </item>
+			<item> TypeMirror </item>
+			<item> TypeParameterElement </item>
+			<item> TypeVisitor </item>
+			<item> UIEvent </item>
+			<item> UnknownAnnotationValueException </item>
+			<item> UnknownElementException </item>
+			<item> UnknownTypeException </item>
+			<item> Unmarshaller </item>
+			<item> UnmarshallerHandler </item>
+			<item> UnsupportedDataTypeException </item>
+			<item> URIDereferencer </item>
+			<item> URIParameter </item>
+			<item> URIReference </item>
+			<item> URIReferenceException </item>
+			<item> URLDataSource </item>
+			<item> ValidationEvent </item>
+			<item> ValidationEventCollector </item>
+			<item> ValidationEventHandler </item>
+			<item> ValidationEventImpl </item>
+			<item> ValidationEventLocator </item>
+			<item> ValidationEventLocatorImpl </item>
+			<item> ValidationException </item>
+			<item> VariableElement </item>
+			<item> W3CDomHandler </item>
+			<item> WebEndpoint </item>
+			<item> WebFault </item>
+			<item> WebMethod </item>
+			<item> WebParam </item>
+			<item> WebResult </item>
+			<item> WebService </item>
+			<item> WebServiceClient </item>
+			<item> WebServiceContext </item>
+			<item> WebServiceException </item>
+			<item> WebServicePermission </item>
+			<item> WebServiceProvider </item>
+			<item> WebServiceRef </item>
+			<item> WebServiceRefs </item>
+			<item> Wrapper </item>
+			<item> X509Data </item>
+			<item> X509IssuerSerial </item>
+			<item> XmlAccessOrder </item>
+			<item> XmlAccessorOrder </item>
+			<item> XmlAccessorType </item>
+			<item> XmlAccessType </item>
+			<item> XmlAdapter </item>
+			<item> XmlAnyAttribute </item>
+			<item> XmlAnyElement </item>
+			<item> XmlAttachmentRef </item>
+			<item> XmlAttribute </item>
+			<item> XMLCryptoContext </item>
+			<item> XmlElement </item>
+			<item> XmlElementDecl </item>
+			<item> XmlElementRef </item>
+			<item> XmlElementRefs </item>
+			<item> XmlElements </item>
+			<item> XmlElementWrapper </item>
+			<item> XmlEnum </item>
+			<item> XmlEnumValue </item>
+			<item> XMLEvent </item>
+			<item> XMLEventAllocator </item>
+			<item> XMLEventConsumer </item>
+			<item> XMLEventFactory </item>
+			<item> XMLEventReader </item>
+			<item> XMLEventWriter </item>
+			<item> XmlID </item>
+			<item> XmlIDREF </item>
+			<item> XmlInlineBinaryData </item>
+			<item> XMLInputFactory </item>
+			<item> XmlJavaTypeAdapter </item>
+			<item> XmlJavaTypeAdapters </item>
+			<item> XmlList </item>
+			<item> XmlMimeType </item>
+			<item> XmlMixed </item>
+			<item> XmlNs </item>
+			<item> XmlNsForm </item>
+			<item> XMLObject </item>
+			<item> XMLOutputFactory </item>
+			<item> XmlRegistry </item>
+			<item> XMLReporter </item>
+			<item> XMLResolver </item>
+			<item> XmlRootElement </item>
+			<item> XmlSchema </item>
+			<item> XmlSchemaType </item>
+			<item> XmlSchemaTypes </item>
+			<item> XMLSignature </item>
+			<item> XMLSignatureException </item>
+			<item> XMLSignatureFactory </item>
+			<item> XMLSignContext </item>
+			<item> XMLStreamConstants </item>
+			<item> XMLStreamException </item>
+			<item> XMLStreamReader </item>
+			<item> XMLStreamWriter </item>
+			<item> XMLStructure </item>
+			<item> XmlTransient </item>
+			<item> XmlType </item>
+			<item> XMLValidateContext </item>
+			<item> XmlValue </item>
+			<item> XPathFilter2ParameterSpec </item>
+			<item> XPathFilterParameterSpec </item>
+			<item> XPathType </item>
+			<item> XSLTTransformParameterSpec </item>
+			<item> ZipError </item>
+			
+<!-- 			end new classes -->
+		</list>
+		<list name="keywords">
+			<item> abstract </item>
+			<item> break </item>
+			<item> case </item>
+			<item> catch </item>
+			<item> class </item>
+			<item> continue </item>
+			<item> default </item>
+			<item> do </item>
+			<item> else </item>
+			<item> enum </item>
+			<item> extends </item>
+			<item> false </item>
+			<item> finally </item>
+			<item> for </item>
+			<item> goto </item>
+			<item> if </item>
+			<item> implements </item>
+			<item> instanceof </item>
+			<item> @interface </item>
+			<item> interface </item>
+			<item> native </item>
+			<item> new </item>
+			<item> null </item>
+			<item> private </item>
+			<item> protected </item>
+			<item> public </item>
+			<item> return </item>
+			<item> super </item>
+			<item> strictfp </item>
+			<item> switch </item>
+			<item> synchronized </item>
+			<item> this </item>
+			<item> throws </item>
+			<item> throw </item>
+			<item> transient </item>
+			<item> true </item>
+			<item> try </item>
+			<item> volatile </item>
+			<item> while </item>
+		</list>
+		<list name="types">
+			<item> boolean </item>
+			<item> byte </item>
+			<item> char </item>
+			<item> const </item>
+			<item> double </item>
+			<item> final </item>
+			<item> float </item>
+			<item> int </item>
+			<item> long </item>
+			<item> short </item>
+			<item> static </item>
+			<item> void </item>
+		</list>
+		<contexts>
+			<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+				<!-- Comment next line if you don't use Javadoc tool -->
+				<IncludeRules context="##Javadoc"/>
+				<keyword attribute="Keyword" context="#stay" String="keywords"/>
+				<keyword attribute="Data Type" context="#stay" String="types"/>
+				<keyword attribute="Java15" context="#stay" String="java15"/>
+				<Float attribute="Float" context="#stay">
+					<AnyChar String="fF" attribute="Float" context="#stay"/>
+				</Float>
+				<HlCOct attribute="Octal" context="#stay"/>
+				<HlCHex attribute="Hex" context="#stay"/>
+				<Int attribute="Decimal" context="#stay">
+					<StringDetect attribute="Decimal" context="#stay" String="ULL" insensitive="TRUE"/>
+					<StringDetect attribute="Decimal" context="#stay" String="LUL" insensitive="TRUE"/>
+					<StringDetect attribute="Decimal" context="#stay" String="LLU" insensitive="TRUE"/>
+					<StringDetect attribute="Decimal" context="#stay" String="UL" insensitive="TRUE"/>
+					<StringDetect attribute="Decimal" context="#stay" String="LU" insensitive="TRUE"/>
+					<StringDetect attribute="Decimal" context="#stay" String="LL" insensitive="TRUE"/>
+					<StringDetect attribute="Decimal" context="#stay" String="U" insensitive="TRUE"/>
+					<StringDetect attribute="Decimal" context="#stay" String="L" insensitive="TRUE"/>
+				</Int>
+				<HlCChar attribute="Char" context="#stay"/>
+				<RegExpr attribute="Char" context="#stay" String="'\\u[0-9a-fA-F]{4}'"/>
+				<RegExpr attribute="Decimal" context="#stay" String="//\s*BEGIN.*$" beginRegion="Region1"/>
+				<RegExpr attribute="Decimal" context="#stay" String="//\s*END.*$" endRegion="Region1"/>
+				<DetectChar attribute="String" context="String" char="&quot;"/>
+				<RegExpr attribute="Function" context="EnterPrintf" String="\.(format|printf)\b"/>
+				<Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
+				<Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+				<DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1"/>
+				<DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1"/>
+				<RegExpr attribute="Keyword" context="#stay" String="\.{3,3}\s+" />
+				<RegExpr attribute="Keyword" context="StaticImports" String="\b(import\s+static)\b" />
+				<RegExpr attribute="Keyword" context="Imports" String="\b(package|import)\b" />
+				<RegExpr attribute="Function" context="#stay" String="\b[_\w][_\w\d]*(?=[\s]*(/\*\s*\d+\s*\*/\s*)?[(])" />
+				<RegExpr attribute="Symbol" context="Member" String="[.]{1,1}" />
+				<DetectChar attribute="Symbol" context="InFunctionCall" char="("/>
+				<AnyChar attribute="Symbol" context="#stay" String=":!%&amp;+,-/.*&lt;=&gt;?[]|~^&#59;"/>
+			</context>
+			<context attribute="Normal Text" lineEndContext="#stay" name="InFunctionCall">
+				<IncludeRules context="Normal"/>
+				<DetectChar attribute="Symbol" context="#pop" char=")"/>
+			</context>
+			<context attribute="String" lineEndContext="#pop" name="String">
+				<LineContinue attribute="String" context="#stay"/>
+				<HlCStringChar attribute="String Char" context="#stay"/>
+				<RegExpr attribute="String Char" context="#stay" String="\\u[0-9a-fA-F]{4}"/>
+				<DetectChar attribute="String" context="#pop" char="&quot;"/>
+			</context>
+			<context attribute="Normal Text" lineEndContext="#stay" name="EnterPrintf" fallthrough="true" fallthroughContext="#pop">
+				<DetectChar attribute="Symbol" context="Printf" char="("/>
+				<DetectSpaces attribute="Normal Text" context="#stay"/>
+			</context>
+			<context attribute="Printf" lineEndContext="#stay" name="Printf">
+				<DetectChar attribute="String" context="PrintfString" char="&quot;"/>
+				<IncludeRules context="InFunctionCall"/>
+			</context>
+			<context attribute="PrintfString" lineEndContext="#pop" name="PrintfString">
+				<LineContinue attribute="String" context="#stay"/>
+				<HlCStringChar attribute="String Char" context="#stay"/>
+				<DetectChar attribute="String" context="#pop" char="&quot;"/>
+				<RegExpr attribute="String Char" context="#stay" String="%(\d+\$)?(-|#|\+|\ |0|,|\()*\d*(\.\d+)?[a-hosxA-CEGHSX]" />
+				<RegExpr attribute="String Char" context="#stay" String="%(\d+\$)?(-|#|\+|\ |0|,|\()*\d*(t|T)(a|A|b|B|c|C|d|D|e|F|h|H|I|j|k|l|L|m|M|N|p|P|Q|r|R|s|S|T|y|Y|z|Z)" />
+				<RegExpr attribute="String Char" context="#stay" String="%(%|n)" />
+			</context>
+			<context attribute="Normal Text" lineEndContext="#pop" name="Member" fallthrough="true" fallthroughContext="#pop">
+				<RegExpr attribute="Function" context="#pop" String="\b[_a-zA-Z]\w*(?=[\s]*)" />
+			</context>
+			<context attribute="Normal Text" lineEndContext="#pop" name="StaticImports">
+				<RegExpr attribute="StaticImports" context="#pop" String="\s*.*;" />
+			</context>
+			<context attribute="Normal Text" lineEndContext="#pop" name="Imports">
+				<RegExpr attribute="Imports" context="#pop" String="\s*.*;" />
+			</context>
+			<context attribute="Comment" lineEndContext="#pop" name="Commentar 1"/>
+			<context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
+				<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+			</context>
+		</contexts>
+		<itemDatas>
+			<itemData name="Normal Text"  defStyleNum="dsNormal"/>
+			<itemData name="Keyword"      defStyleNum="dsKeyword"/>
+			<itemData name="Function"     defStyleNum="dsFunction"/>
+			<itemData name="StaticImports"      defStyleNum="dsKeyword" color="#800080" selColor="#FFFFFF" bold="0" italic="0"/>
+			<itemData name="Imports"      defStyleNum="dsKeyword" color="#808000" selColor="#FFFFFF" bold="0" italic="0"/>
+			<itemData name="Data Type"    defStyleNum="dsDataType"/>
+			<itemData name="Decimal"      defStyleNum="dsDecVal"/>
+			<itemData name="Octal"        defStyleNum="dsBaseN"/>
+			<itemData name="Hex"          defStyleNum="dsBaseN"/>
+			<itemData name="Float"        defStyleNum="dsFloat"/>
+			<itemData name="Char"         defStyleNum="dsChar"/>
+			<itemData name="String"       defStyleNum="dsString"/>
+			<itemData name="String Char"  defStyleNum="dsChar"/>
+			<itemData name="PrintfString" defStyleNum="dsString"/>
+			<itemData name="Comment"      defStyleNum="dsComment"/>
+			<itemData name="Symbol"       defStyleNum="dsNormal"/>
+			<itemData name="Java15"       defStyleNum="dsNormal" color="#0095FF" selColor="#FFFFFF" bold="1" italic="0"/>
+		</itemDatas>
+	</highlighting>
+	<general>
+		<comments>
+			<comment name="singleLine" start="//"/>
+			<comment name="multiLine" start="/*" end="*/"/>
+		</comments>
+		<keywords casesensitive="1"/>
+	</general>
+</language>
diff --git a/xml/javadoc.xml b/xml/javadoc.xml
new file mode 100644
--- /dev/null
+++ b/xml/javadoc.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="Javadoc" version="1.03" kateversion="2.4" section="Markup" extensions="" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
+	<highlighting>
+		<contexts>
+			<context name="Start" attribute="Normal Text" lineEndContext="#stay">
+				<IncludeRules context="FindJavadoc" />
+			</context>
+			<context name="FindJavadoc" attribute="Normal Text" lineEndContext="#stay">
+				<StringDetect attribute="JavadocFS" context="JavadocFSar" String="/**" beginRegion="Javadoc"/>
+			</context>
+			<context attribute="JavadocFS" lineEndContext="#stay" name="JavadocFSar">
+				<Detect2Chars attribute="JavadocFS" context="#pop" char="*" char1="/" endRegion="Javadoc"/>
+				<RegExpr attribute="JavadocFS" context="Javadocar" String="(!|\?)" />
+				<RegExpr attribute="JavadocFS" context="Javadocar" String="(\.\s*$)" />
+				<RegExpr attribute="JavadocFS" context="Javadocar" String="(\.\s)(?![\da-z])" />
+				<RegExpr attribute="JavadocFS" context="Javadocar" String="\**\s*(?=@(author|deprecated|exception|param|return|see|serial|serialData|serialField|since|throws|version)(\s|$))" firstNonSpace="true"/>
+				<StringDetect attribute="InlineTag" context="LiteralTagar" String="{@code " />
+				<StringDetect attribute="InlineTag" context="LiteralTagar" String="{@code&#009;" />
+				<StringDetect attribute="InlineTag" context="#stay" String="{@docRoot}" />
+				<StringDetect attribute="InlineTag" context="#stay" String="{@inheritDoc}" />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@link " />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@link&#009;" />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@linkplain " />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@linkplain&#009;" />
+				<StringDetect attribute="InlineTag" context="LiteralTagar" String="{@literal " />
+				<StringDetect attribute="InlineTag" context="LiteralTagar" String="{@literal&#009;" />
+				<StringDetect attribute="InlineTag" context="#stay" String="{@value}" />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@value " />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@value&#009;" />
+				<IncludeRules context="##HTML"/>
+			</context>
+			<context attribute="Javadoc" lineEndContext="#stay" name="Javadocar">
+				<Detect2Chars attribute="JavadocFS" context="#pop#pop" char="*" char1="/" endRegion="Javadoc"/>
+				<RegExpr attribute="JavadocFS" context="#stay" String="\*+(?!/)" firstNonSpace="true"/>
+				<StringDetect attribute="BlockTag" context="#stay" String="@author " />
+				<StringDetect attribute="BlockTag" context="#stay" String="@deprecated " />
+				<StringDetect attribute="BlockTag" context="JavadocParam" String="@exception " />
+				<StringDetect attribute="BlockTag" context="JavadocParam" String="@param " />
+				<StringDetect attribute="BlockTag" context="#stay" String="@return " />
+				<StringDetect attribute="BlockTag" context="SeeTag" String="@see "/>
+				<StringDetect attribute="BlockTag" context="#stay" String="@serial " />
+				<StringDetect attribute="BlockTag" context="#stay" String="@serialData " />
+				<StringDetect attribute="BlockTag" context="#stay" String="@serialField " />
+				<StringDetect attribute="BlockTag" context="#stay" String="@since " />
+				<StringDetect attribute="BlockTag" context="JavadocParam" String="@throws " />
+				<StringDetect attribute="BlockTag" context="#stay" String="@version " />
+				<StringDetect attribute="BlockTag" context="#stay" String="@author&#009;" />
+				<StringDetect attribute="BlockTag" context="#stay" String="@deprecated&#009;" />
+				<StringDetect attribute="BlockTag" context="JavadocParam" String="@exception&#009;" />
+				<StringDetect attribute="BlockTag" context="JavadocParam" String="@param&#009;" />
+				<StringDetect attribute="BlockTag" context="#stay" String="@return&#009;" />
+				<StringDetect attribute="BlockTag" context="SeeTag" String="@see&#009;" />
+				<StringDetect attribute="BlockTag" context="#stay" String="@serial&#009;" />
+				<StringDetect attribute="BlockTag" context="#stay" String="@serialData&#009;" />
+				<StringDetect attribute="BlockTag" context="#stay" String="@serialField&#009;" />
+				<StringDetect attribute="BlockTag" context="#stay" String="@since&#009;" />
+				<StringDetect attribute="BlockTag" context="JavadocParam" String="@throws&#009;" />
+				<StringDetect attribute="BlockTag" context="#stay" String="@version&#009;" />
+				<StringDetect attribute="InlineTag" context="LiteralTagar" String="{@code " />
+				<StringDetect attribute="InlineTag" context="LiteralTagar" String="{@code&#009;" />
+				<StringDetect attribute="InlineTag" context="#stay" String="{@docRoot}" />
+				<StringDetect attribute="InlineTag" context="#stay" String="{@inheritDoc}" />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@link " />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@link&#009;" />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@linkplain " />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@linkplain&#009;" />
+				<StringDetect attribute="InlineTag" context="LiteralTagar" String="{@literal " />
+				<StringDetect attribute="InlineTag" context="LiteralTagar" String="{@literal&#009;" />
+				<StringDetect attribute="InlineTag" context="#stay" String="{@value}" />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@value " />
+				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@value&#009;" />
+				<IncludeRules context="##HTML"/>
+			</context>
+			<context attribute="Javadoc" lineEndContext="#pop" name="JavadocParam">
+				<DetectSpaces />
+				<RegExpr attribute="JavadocParam" context="#pop#pop" String="\S*(?=\*/)" />
+				<RegExpr attribute="JavadocParam" context="#pop" String="\S*(\s|$)" />
+			</context>
+			<context attribute="InlineTag" lineEndContext="#pop" name="InlineTagar">
+				<DetectChar attribute="InlineTag" context="#pop" char="}" />
+				<Detect2Chars attribute="JavadocFS" context="#pop#pop#pop" char="*" char1="/" />
+				<IncludeRules context="##HTML"/>
+			</context>
+			<context attribute="InlineTag" lineEndContext="#pop" name="LiteralTagar">
+				<DetectChar attribute="InlineTag" context="#pop" char="}" />
+				<Detect2Chars attribute="JavadocFS" context="#pop#pop#pop" char="*" char1="/" />
+			</context>
+			<context attribute="SeeTag" lineEndContext="#pop" name="SeeTag">
+				<Detect2Chars attribute="JavadocFS" context="#pop#pop#pop" char="*" char1="/" />
+				<IncludeRules context="##HTML"/>
+			</context>
+		</contexts>
+		<itemDatas>
+			<itemData name="Normal Text"  defStyleNum="dsNormal"/>
+			<itemData name="BlockTag"     defStyleNum="dsKeyword" color="#808080" selColor="#FFFFFF" bold="1" italic="0"/>
+			<itemData name="InlineTag"    defStyleNum="dsKeyword" color="#808080" selColor="#FFFFFF" bold="0" italic="0"/>
+			<itemData name="JavadocParam" defStyleNum="dsKeyword" color="#008080" selColor="#FFFFFF" bold="0" italic="1"/>
+			<itemData name="SeeTag"       defStyleNum="dsKeyword" color="#008080" selColor="#FFFFFF" bold="0" italic="1"/>
+			<itemData name="JavadocFS"    defStyleNum="dsComment" color="#008000" selColor="#FFFFFF" bold="1" italic="0"/>
+			<itemData name="Javadoc"      defStyleNum="dsComment" color="#008000" selColor="#FFFFFF"/>
+		</itemDatas>
+	</highlighting>
+	<general>
+		<keywords casesensitive="1"/>
+	</general>
+</language>
diff --git a/xml/javascript.xml b/xml/javascript.xml
new file mode 100644
--- /dev/null
+++ b/xml/javascript.xml
@@ -0,0 +1,501 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!-- Author: Anders Lund <anders@alweb.dk> //-->
+<!-- Minor changes: Joseph Wenninger <jowenn@kde.org> //-->
+<!-- Full JavaScript 1.0 support by Whitehawk Stormchaser //-->
+<language name="JavaScript" version="1.11" kateversion="2.3" section="Scripts" extensions="*.js" mimetype="text/x-javascript;application/x-javascript" author="Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net)" license="">
+  <highlighting>
+    <list name="keywords">
+        <item> if </item>
+        <item> else </item>
+        <item> for </item>
+        <item> in </item>
+        <item> while </item>
+        <item> do </item>
+        <item> continue </item>
+        <item> break </item>
+        <item> with </item>
+        <item> try </item>
+        <item> catch </item>
+        <item> finally </item>
+        <item> switch </item>
+        <item> case </item>
+        <item> new </item>
+        <item> var </item>
+        <item> function </item>
+        <item> return </item>
+        <item> delete </item>
+        <item> true </item>
+        <item> false </item>
+        <item> void </item>
+        <item> throw </item>
+        <item> typeof </item>
+        <item> const </item>
+        <item> default </item>
+    </list>
+    <list name="functions">
+        <item> escape </item>
+        <item> isFinite </item>
+        <item> isNaN </item>
+        <item> Number </item>
+        <item> parseFloat </item>
+        <item> parseInt </item>
+        <item> reload </item>
+        <item> taint </item>
+        <item> unescape </item>
+        <item> untaint </item>
+        <item> write </item>
+        </list>
+    <list name="objects">
+        <item>Anchor</item>
+        <item>Applet</item>
+        <item>Area</item>
+        <item>Array</item>
+        <item>Boolean</item>
+        <item>Button</item>
+        <item>Checkbox</item>
+        <item>Date</item>
+        <item>document</item>
+        <item>window</item>
+        <item>Image</item>
+        <item>FileUpload</item>
+        <item>Form</item>
+        <item>Frame</item>
+        <item>Function</item>
+        <item>Hidden</item>
+        <item>Link</item>
+        <item>MimeType</item>
+        <item>Math</item>
+        <item>Max</item>
+        <item>Min</item>
+        <item>Layer</item>
+        <item>navigator</item>
+        <item>Object</item>
+        <item>Password</item>
+        <item>Plugin</item>
+        <item>Radio</item>
+        <item>RegExp</item>
+        <item>Reset</item>
+        <item>Screen</item>
+        <item>Select</item>
+        <item>String</item>
+        <item>Text</item>
+        <item>Textarea</item>
+        <item>this</item>
+        <item>Window</item>
+        </list>
+    <list name="math">
+        <item> abs </item>
+        <item> acos </item>
+        <item> asin </item>
+        <item> atan </item>
+        <item> atan2 </item>
+        <item> ceil </item>
+        <item> cos </item>
+        <item> ctg </item>
+        <item> E </item>
+        <item> exp </item>
+        <item> floor </item>
+        <item> LN2 </item>
+        <item> LN10 </item>
+        <item> log </item>
+        <item> LOG2E </item>
+        <item> LOG10E </item>
+        <item> PI </item>
+        <item> pow </item>
+        <item> round </item>
+        <item> sin </item>
+        <item> sqrt </item>
+        <item> SQRT1_2 </item>
+        <item> SQRT2 </item>
+        <item> tan </item>
+    </list>
+    <list name="events">
+         <item>onAbort</item>
+         <item>onBlur</item>
+         <item>onChange</item>
+         <item>onClick</item>
+         <item>onError</item>
+         <item>onFocus</item>
+         <item>onLoad</item>
+         <item>onMouseOut</item>
+         <item>onMouseOver</item>
+         <item>onReset</item>
+         <item>onSelect</item>
+         <item>onSubmit</item>
+         <item>onUnload</item>
+    </list>
+    <list name="methods">
+        <item>above</item>
+        <item>action</item>
+        <item>alinkColor</item>
+        <item>alert</item>
+        <item>anchor</item>
+        <item>anchors</item>
+        <item>appCodeName</item>
+        <item>applets</item>
+        <item>apply</item>
+        <item>appName</item>
+        <item>appVersion</item>
+        <item>argument</item>
+        <item>arguments</item>
+        <item>arity</item>
+        <item>availHeight</item>
+        <item>availWidth</item>
+        <item>back</item>
+        <item>background</item>
+        <item>below</item>
+        <item>bgColor</item>
+        <item>border</item>
+        <item>big</item>
+        <item>blink</item>
+        <item>blur</item>
+        <item>bold</item>
+        <item>border</item>
+        <item>call</item>
+        <item>caller</item>
+        <item>charAt</item>
+        <item>charCodeAt</item>
+        <item>checked</item>
+        <item>clearInterval</item>
+        <item>clearTimeout</item>
+        <item>click</item>
+        <item>clip</item>
+        <item>close</item>
+        <item>closed</item>
+        <item>colorDepth</item>
+        <item>complete</item>
+        <item>compile</item>
+        <item>constructor</item>
+        <item>confirm</item>
+        <item>cookie</item>
+        <item>current</item>
+        <item>cursor</item>
+        <item>data</item>
+        <item>defaultChecked</item>
+        <item>defaultSelected</item>
+        <item>defaultStatus</item>
+        <item>defaultValue</item>
+        <item>description</item>
+        <item>disableExternalCapture</item>
+        <item>domain</item>
+        <item>elements</item>
+        <item>embeds</item>
+        <item>enabledPlugin</item>
+        <item>enableExternalCapture</item>
+        <item>encoding</item>
+        <item>eval</item>
+        <item>exec</item>
+        <item>fgColor</item>
+        <item>filename</item>
+        <item>find</item>
+        <item>fixed</item>
+        <item>focus</item>
+        <item>fontcolor</item>
+        <item>fontsize</item>
+        <item>form</item>
+        <item>forms</item>
+        <item>formName</item>
+        <item>forward</item>
+        <item>frames</item>
+        <item>fromCharCode</item>
+        <item>getDate</item>
+        <item>getDay</item>
+        <item>getHours</item>
+        <item>getMiliseconds</item>
+        <item>getMinutes</item>
+        <item>getMonth</item>
+        <item>getSeconds</item>
+        <item>getSelection</item>
+        <item>getTime</item>
+        <item>getTimezoneOffset</item>
+        <item>getUTCDate</item>
+        <item>getUTCDay</item>
+        <item>getUTCFullYear</item>
+        <item>getUTCHours</item>
+        <item>getUTCMilliseconds</item>
+        <item>getUTCMinutes</item>
+        <item>getUTCMonth</item>
+        <item>getUTCSeconds</item>
+        <item>getYear</item>
+        <item>global</item>
+        <item>go</item>
+        <item>hash</item>
+        <item>height</item>
+        <item>history</item>
+        <item>home</item>
+        <item>host</item>
+        <item>hostname</item>
+        <item>href</item>
+        <item>hspace</item>
+        <item>ignoreCase</item>
+        <item>images</item>
+        <item>index</item>
+        <item>indexOf</item>
+        <item>innerHeight</item>
+        <item>innerWidth</item>
+        <item>input</item>
+        <item>italics</item>
+        <item>javaEnabled</item>
+        <item>join</item>
+        <item>language</item>
+        <item>lastIndex</item>
+        <item>lastIndexOf</item>
+        <item>lastModified</item>
+        <item>lastParen</item>
+        <item>layers</item>
+        <item>layerX</item>
+        <item>layerY</item>
+        <item>left</item>
+        <item>leftContext</item>
+        <item>length</item>
+        <item>link</item>
+        <item>linkColor</item>
+        <item>links</item>
+        <item>location</item>
+        <item>locationbar</item>
+        <item>load</item>
+        <item>lowsrc</item>
+        <item>match</item>
+        <item>MAX_VALUE</item>
+        <item>menubar</item>
+        <item>method</item>
+        <item>mimeTypes</item>
+        <item>MIN_VALUE</item>
+        <item>modifiers</item>
+        <item>moveAbove</item>
+        <item>moveBelow</item>
+        <item>moveBy</item>
+        <item>moveTo</item>
+        <item>moveToAbsolute</item>
+        <item>multiline</item>
+        <item>name</item>
+        <item>NaN</item>
+        <item>NEGATIVE_INFINITY</item>
+        <item>negative_infinity</item>
+        <item>next</item>
+        <item>open</item>
+        <item>opener</item>
+        <item>options</item>
+        <item>outerHeight</item>
+        <item>outerWidth</item>
+        <item>pageX</item>
+        <item>pageY</item>
+        <item>pageXoffset</item>
+        <item>pageYoffset</item>
+        <item>parent</item>
+        <item>parse</item>
+        <item>pathname</item>
+        <item>personalbar</item>
+        <item>pixelDepth</item>
+        <item>platform</item>
+        <item>plugins</item>
+        <item>pop</item>
+        <item>port</item>
+        <item>POSITIVE_INFINITY</item>
+        <item>positive_infinity</item>
+        <item>preference</item>
+        <item>previous</item>
+        <item>print</item>
+        <item>prompt</item>
+        <item>protocol</item>
+        <item>prototype</item>
+        <item>push</item>
+        <item>referrer</item>
+        <item>refresh</item>
+        <item>releaseEvents</item>
+        <item>reload</item>
+        <item>replace</item>
+        <item>reset</item>
+        <item>resizeBy</item>
+        <item>resizeTo</item>
+        <item>reverse</item>
+        <item>rightContext</item>
+        <item>screenX</item>
+        <item>screenY</item>
+        <item>scroll</item>
+        <item>scrollbar</item>
+        <item>scrollBy</item>
+        <item>scrollTo</item>
+        <item>search</item>
+        <item>select</item>
+        <item>selected</item>
+        <item>selectedIndex</item>
+        <item>self</item>
+        <item>setDate</item>
+        <item>setHours</item>
+        <item>setMinutes</item>
+        <item>setMonth</item>
+        <item>setSeconds</item>
+        <item>setTime</item>
+        <item>setTimeout</item>
+        <item>setUTCDate</item>
+        <item>setUTCDay</item>
+        <item>setUTCFullYear</item>
+        <item>setUTCHours</item>
+        <item>setUTCMilliseconds</item>
+        <item>setUTCMinutes</item>
+        <item>setUTCMonth</item>
+        <item>setUTCSeconds</item>
+        <item>setYear</item>
+        <item>shift</item>
+        <item>siblingAbove</item>
+        <item>siblingBelow</item>
+        <item>small</item>
+        <item>sort</item>
+        <item>source</item>
+        <item>splice</item>
+        <item>split</item>
+        <item>src</item>
+        <item>status</item>
+        <item>statusbar</item>
+        <item>strike</item>
+        <item>sub</item>
+        <item>submit</item>
+        <item>substr</item>
+        <item>substring</item>
+        <item>suffixes</item>
+        <item>sup</item>
+        <item>taintEnabled</item>
+        <item>target</item>
+        <item>test</item>
+        <item>text</item>
+        <item>title</item>
+        <item>toGMTString</item>
+        <item>toLocaleString</item>
+        <item>toLowerCase</item>
+        <item>toolbar</item>
+        <item>toSource</item>
+        <item>toString</item>
+        <item>top</item>
+        <item>toUpperCase</item>
+        <item>toUTCString</item>
+        <item>type</item>
+        <item>URL</item>
+        <item>unshift</item>
+        <item>unwatch</item>
+        <item>userAgent</item>
+        <item>UTC</item>
+        <item>value</item>
+        <item>valueOf</item>
+        <item>visibility</item>
+        <item>vlinkColor</item>
+        <item>vspace</item>
+        <item>width</item>
+        <item>watch</item>
+        <item>which</item>
+        <item>width</item>
+        <item>write</item>
+        <item>writeln</item>
+        <item>x</item>
+        <item>y</item>
+        <item>zIndex</item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+	<DetectSpaces/>
+        <StringDetect attribute="Region Marker" context="region_marker" String="//BEGIN" beginRegion="Region1"/>
+        <RegExpr attribute="Region Marker" context="region_marker" String="//END" endRegion="Region1"/>
+        <keyword attribute="Keyword" context="#stay" String="keywords" />
+        <keyword attribute="Function" context="#stay" String="functions" />
+        <keyword attribute="Objects" context="#stay" String="objects" />
+        <keyword attribute="Math" context="#stay" String="math" />
+        <keyword attribute="Events" context="#stay" String="events" />
+        <keyword attribute="Data Type" context="#stay" String="methods" />
+	<DetectIdentifier/>
+        <Float attribute="Float" context="#stay" />
+        <Int attribute="Decimal" context="#stay" />
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <DetectChar attribute="String" context="String 1" char="'"/>
+        <Detect2Chars attribute="Comment" context="Comment" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" beginRegion="Comment"/>
+        <RegExpr attribute="Normal Text" context="(Internal regex catch)" String="[=?:]" />
+        <RegExpr attribute="Normal Text" context="(Internal regex catch)" String="\(" />
+        <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
+        <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;+,-/.*&lt;=&gt;?[]|~^&#59;"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#pop" name="String">
+	<DetectIdentifier/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+      <context attribute="String Char" lineEndContext="#pop" name="String 1">
+	<DetectIdentifier/>
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <DetectChar attribute="String Char" context="#pop" char="'"/>
+      </context>
+
+      <context attribute="Comment" lineEndContext="#pop" name="Comment">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+      </context>
+      <context attribute="Comment" lineEndContext="#stay" name="Multi/inline Comment">
+        <IncludeRules context="##Alerts" />
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+      </context>
+
+      <context attribute="Regular Expression" lineEndContext="#stay" name="Regular Expression">
+        <RegExpr attribute="Regular Expression" context="#pop#pop#pop" String="/[ig]{0,2}" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\{[\d, ]+\}" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\\[bB]" />
+        <RegExpr attribute="Pattern Character Class" context="#stay" String="\\[nrtvfDdSsWw]" />
+        <DetectChar attribute="Pattern Character Class" context="(charclass caret first check)" char="[" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\\." />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=/)" />
+        <AnyChar attribute="Pattern Internal Operator" context="#stay" String="?+*()|" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="(Internal regex catch)" fallthrough="true" fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal Text" context="#stay" />
+        <RegExpr attribute="Regular Expression" context="#pop" String="//(?=;)" />
+        <Detect2Chars attribute="Comment" context="Comment" char="/" char1="/" />
+        <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" />
+        <DetectChar attribute="Regular Expression" context="(regex caret first check)" char="/" />
+      </context>
+      <context attribute="Pattern Character Class" lineEndContext="#stay" name="Regular Expression Character Class">
+        <RegExpr attribute="Pattern Character Class" context="#stay" String="\\[\[\]]" />
+        <DetectChar attribute="Pattern Character Class" context="#pop#pop" char="]" />
+      </context>
+      <context attribute="Pattern Internal Operator" lineEndContext="#pop" name="(regex caret first check)" fallthrough="true" fallthroughContext="Regular Expression">
+        <DetectChar attribute="Pattern Internal Operator" context="Regular Expression" char="^" />
+      </context>
+      <context attribute="Pattern Internal Operator" lineEndContext="#pop" name="(charclass caret first check)" fallthrough="true" fallthroughContext="Regular Expression Character Class">
+        <DetectChar attribute="Pattern Internal Operator" context="Regular Expression Character Class" char="^" />
+      </context>
+
+      <context name="region_marker" attribute="Region Marker" lineEndContext="#pop" >
+	<DetectIdentifier />
+	<DetectSpaces />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text"  defStyleNum="dsNormal"/>
+      <itemData name="Keyword"      defStyleNum="dsKeyword"/>
+      <itemData name="Function" defStyleNum="dsFunction"/>
+      <itemData name="Objects" defStyleNum="dsKeyword" color="#008000" selColor="#00ffff" bold="0" italic="0"/>
+      <itemData name="Math" defStyleNum="dsKeyword" color="#DBA716" selColor="#00ffff" bold="0" italic="0"/>
+      <itemData name="Events" defStyleNum="dsKeyword" color="#F766D5" selColor="#00ffff" bold="0" italic="0"/>
+      <itemData name="Data Type"    defStyleNum="dsDataType"/>
+      <itemData name="Decimal"      defStyleNum="dsDecVal"/>
+      <itemData name="Float"        defStyleNum="dsFloat"/>
+      <itemData name="Char"         defStyleNum="dsChar"/>
+      <itemData name="String"       defStyleNum="dsString"/>
+      <itemData name="String Char"  defStyleNum="dsChar"/>
+      <itemData name="Comment"      defStyleNum="dsComment"/>
+      <itemData name="Symbol"       defStyleNum="dsNormal"/>
+      <itemData name="Regular Expression" defStyleNum="dsOthers"   />
+      <itemData name="Pattern Internal Operator" defStyleNum="dsFloat" />
+      <itemData name="Pattern Character Class" defStyleNum="dsBaseN" />
+      <itemData name="Region Marker" defStyleNum="dsRegionMarker" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="//" />
+      <comment name="multiLine" start="/*" end="*/" />
+    </comments>
+    <keywords casesensitive="1" />
+  </general>
+</language>
diff --git a/xml/javascript.xml.bkp b/xml/javascript.xml.bkp
new file mode 100644
--- /dev/null
+++ b/xml/javascript.xml.bkp
@@ -0,0 +1,501 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!-- Author: Anders Lund <anders@alweb.dk> //-->
+<!-- Minor changes: Joseph Wenninger <jowenn@kde.org> //-->
+<!-- Full JavaScript 1.0 support by Whitehawk Stormchaser //-->
+<language name="JavaScript" version="1.11" kateversion="2.3" section="Scripts" extensions="*.js" mimetype="text/x-javascript;application/x-javascript" author="Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net)" license="">
+  <highlighting>
+    <list name="keywords">
+        <item> if </item>
+        <item> else </item>
+        <item> for </item>
+        <item> in </item>
+        <item> while </item>
+        <item> do </item>
+        <item> continue </item>
+        <item> break </item>
+        <item> with </item>
+        <item> try </item>
+        <item> catch </item>
+        <item> finally </item>
+        <item> switch </item>
+        <item> case </item>
+        <item> new </item>
+        <item> var </item>
+        <item> function </item>
+        <item> return </item>
+        <item> delete </item>
+        <item> true </item>
+        <item> false </item>
+        <item> void </item>
+        <item> throw </item>
+        <item> typeof </item>
+        <item> const </item>
+        <item> default </item>
+    </list>
+    <list name="functions">
+        <item> escape </item>
+        <item> isFinite </item>
+        <item> isNaN </item>
+        <item> Number </item>
+        <item> parseFloat </item>
+        <item> parseInt </item>
+        <item> reload </item>
+        <item> taint </item>
+        <item> unescape </item>
+        <item> untaint </item>
+        <item> write </item>
+        </list>
+    <list name="objects">
+        <item>Anchor</item>
+        <item>Applet</item>
+        <item>Area</item>
+        <item>Array</item>
+        <item>Boolean</item>
+        <item>Button</item>
+        <item>Checkbox</item>
+        <item>Date</item>
+        <item>document</item>
+        <item>window</item>
+        <item>Image</item>
+        <item>FileUpload</item>
+        <item>Form</item>
+        <item>Frame</item>
+        <item>Function</item>
+        <item>Hidden</item>
+        <item>Link</item>
+        <item>MimeType</item>
+        <item>Math</item>
+        <item>Max</item>
+        <item>Min</item>
+        <item>Layer</item>
+        <item>navigator</item>
+        <item>Object</item>
+        <item>Password</item>
+        <item>Plugin</item>
+        <item>Radio</item>
+        <item>RegExp</item>
+        <item>Reset</item>
+        <item>Screen</item>
+        <item>Select</item>
+        <item>String</item>
+        <item>Text</item>
+        <item>Textarea</item>
+        <item>this</item>
+        <item>Window</item>
+        </list>
+    <list name="math">
+        <item> abs </item>
+        <item> acos </item>
+        <item> asin </item>
+        <item> atan </item>
+        <item> atan2 </item>
+        <item> ceil </item>
+        <item> cos </item>
+        <item> ctg </item>
+        <item> E </item>
+        <item> exp </item>
+        <item> floor </item>
+        <item> LN2 </item>
+        <item> LN10 </item>
+        <item> log </item>
+        <item> LOG2E </item>
+        <item> LOG10E </item>
+        <item> PI </item>
+        <item> pow </item>
+        <item> round </item>
+        <item> sin </item>
+        <item> sqrt </item>
+        <item> SQRT1_2 </item>
+        <item> SQRT2 </item>
+        <item> tan </item>
+    </list>
+    <list name="events">
+         <item>onAbort</item>
+         <item>onBlur</item>
+         <item>onChange</item>
+         <item>onClick</item>
+         <item>onError</item>
+         <item>onFocus</item>
+         <item>onLoad</item>
+         <item>onMouseOut</item>
+         <item>onMouseOver</item>
+         <item>onReset</item>
+         <item>onSelect</item>
+         <item>onSubmit</item>
+         <item>onUnload</item>
+    </list>
+    <list name="methods">
+        <item>above</item>
+        <item>action</item>
+        <item>alinkColor</item>
+        <item>alert</item>
+        <item>anchor</item>
+        <item>anchors</item>
+        <item>appCodeName</item>
+        <item>applets</item>
+        <item>apply</item>
+        <item>appName</item>
+        <item>appVersion</item>
+        <item>argument</item>
+        <item>arguments</item>
+        <item>arity</item>
+        <item>availHeight</item>
+        <item>availWidth</item>
+        <item>back</item>
+        <item>background</item>
+        <item>below</item>
+        <item>bgColor</item>
+        <item>border</item>
+        <item>big</item>
+        <item>blink</item>
+        <item>blur</item>
+        <item>bold</item>
+        <item>border</item>
+        <item>call</item>
+        <item>caller</item>
+        <item>charAt</item>
+        <item>charCodeAt</item>
+        <item>checked</item>
+        <item>clearInterval</item>
+        <item>clearTimeout</item>
+        <item>click</item>
+        <item>clip</item>
+        <item>close</item>
+        <item>closed</item>
+        <item>colorDepth</item>
+        <item>complete</item>
+        <item>compile</item>
+        <item>constructor</item>
+        <item>confirm</item>
+        <item>cookie</item>
+        <item>current</item>
+        <item>cursor</item>
+        <item>data</item>
+        <item>defaultChecked</item>
+        <item>defaultSelected</item>
+        <item>defaultStatus</item>
+        <item>defaultValue</item>
+        <item>description</item>
+        <item>disableExternalCapture</item>
+        <item>domain</item>
+        <item>elements</item>
+        <item>embeds</item>
+        <item>enabledPlugin</item>
+        <item>enableExternalCapture</item>
+        <item>encoding</item>
+        <item>eval</item>
+        <item>exec</item>
+        <item>fgColor</item>
+        <item>filename</item>
+        <item>find</item>
+        <item>fixed</item>
+        <item>focus</item>
+        <item>fontcolor</item>
+        <item>fontsize</item>
+        <item>form</item>
+        <item>forms</item>
+        <item>formName</item>
+        <item>forward</item>
+        <item>frames</item>
+        <item>fromCharCode</item>
+        <item>getDate</item>
+        <item>getDay</item>
+        <item>getHours</item>
+        <item>getMiliseconds</item>
+        <item>getMinutes</item>
+        <item>getMonth</item>
+        <item>getSeconds</item>
+        <item>getSelection</item>
+        <item>getTime</item>
+        <item>getTimezoneOffset</item>
+        <item>getUTCDate</item>
+        <item>getUTCDay</item>
+        <item>getUTCFullYear</item>
+        <item>getUTCHours</item>
+        <item>getUTCMilliseconds</item>
+        <item>getUTCMinutes</item>
+        <item>getUTCMonth</item>
+        <item>getUTCSeconds</item>
+        <item>getYear</item>
+        <item>global</item>
+        <item>go</item>
+        <item>hash</item>
+        <item>height</item>
+        <item>history</item>
+        <item>home</item>
+        <item>host</item>
+        <item>hostname</item>
+        <item>href</item>
+        <item>hspace</item>
+        <item>ignoreCase</item>
+        <item>images</item>
+        <item>index</item>
+        <item>indexOf</item>
+        <item>innerHeight</item>
+        <item>innerWidth</item>
+        <item>input</item>
+        <item>italics</item>
+        <item>javaEnabled</item>
+        <item>join</item>
+        <item>language</item>
+        <item>lastIndex</item>
+        <item>lastIndexOf</item>
+        <item>lastModified</item>
+        <item>lastParen</item>
+        <item>layers</item>
+        <item>layerX</item>
+        <item>layerY</item>
+        <item>left</item>
+        <item>leftContext</item>
+        <item>length</item>
+        <item>link</item>
+        <item>linkColor</item>
+        <item>links</item>
+        <item>location</item>
+        <item>locationbar</item>
+        <item>load</item>
+        <item>lowsrc</item>
+        <item>match</item>
+        <item>MAX_VALUE</item>
+        <item>menubar</item>
+        <item>method</item>
+        <item>mimeTypes</item>
+        <item>MIN_VALUE</item>
+        <item>modifiers</item>
+        <item>moveAbove</item>
+        <item>moveBelow</item>
+        <item>moveBy</item>
+        <item>moveTo</item>
+        <item>moveToAbsolute</item>
+        <item>multiline</item>
+        <item>name</item>
+        <item>NaN</item>
+        <item>NEGATIVE_INFINITY</item>
+        <item>negative_infinity</item>
+        <item>next</item>
+        <item>open</item>
+        <item>opener</item>
+        <item>options</item>
+        <item>outerHeight</item>
+        <item>outerWidth</item>
+        <item>pageX</item>
+        <item>pageY</item>
+        <item>pageXoffset</item>
+        <item>pageYoffset</item>
+        <item>parent</item>
+        <item>parse</item>
+        <item>pathname</item>
+        <item>personalbar</item>
+        <item>pixelDepth</item>
+        <item>platform</item>
+        <item>plugins</item>
+        <item>pop</item>
+        <item>port</item>
+        <item>POSITIVE_INFINITY</item>
+        <item>positive_infinity</item>
+        <item>preference</item>
+        <item>previous</item>
+        <item>print</item>
+        <item>prompt</item>
+        <item>protocol</item>
+        <item>prototype</item>
+        <item>push</item>
+        <item>referrer</item>
+        <item>refresh</item>
+        <item>releaseEvents</item>
+        <item>reload</item>
+        <item>replace</item>
+        <item>reset</item>
+        <item>resizeBy</item>
+        <item>resizeTo</item>
+        <item>reverse</item>
+        <item>rightContext</item>
+        <item>screenX</item>
+        <item>screenY</item>
+        <item>scroll</item>
+        <item>scrollbar</item>
+        <item>scrollBy</item>
+        <item>scrollTo</item>
+        <item>search</item>
+        <item>select</item>
+        <item>selected</item>
+        <item>selectedIndex</item>
+        <item>self</item>
+        <item>setDate</item>
+        <item>setHours</item>
+        <item>setMinutes</item>
+        <item>setMonth</item>
+        <item>setSeconds</item>
+        <item>setTime</item>
+        <item>setTimeout</item>
+        <item>setUTCDate</item>
+        <item>setUTCDay</item>
+        <item>setUTCFullYear</item>
+        <item>setUTCHours</item>
+        <item>setUTCMilliseconds</item>
+        <item>setUTCMinutes</item>
+        <item>setUTCMonth</item>
+        <item>setUTCSeconds</item>
+        <item>setYear</item>
+        <item>shift</item>
+        <item>siblingAbove</item>
+        <item>siblingBelow</item>
+        <item>small</item>
+        <item>sort</item>
+        <item>source</item>
+        <item>splice</item>
+        <item>split</item>
+        <item>src</item>
+        <item>status</item>
+        <item>statusbar</item>
+        <item>strike</item>
+        <item>sub</item>
+        <item>submit</item>
+        <item>substr</item>
+        <item>substring</item>
+        <item>suffixes</item>
+        <item>sup</item>
+        <item>taintEnabled</item>
+        <item>target</item>
+        <item>test</item>
+        <item>text</item>
+        <item>title</item>
+        <item>toGMTString</item>
+        <item>toLocaleString</item>
+        <item>toLowerCase</item>
+        <item>toolbar</item>
+        <item>toSource</item>
+        <item>toString</item>
+        <item>top</item>
+        <item>toUpperCase</item>
+        <item>toUTCString</item>
+        <item>type</item>
+        <item>URL</item>
+        <item>unshift</item>
+        <item>unwatch</item>
+        <item>userAgent</item>
+        <item>UTC</item>
+        <item>value</item>
+        <item>valueOf</item>
+        <item>visibility</item>
+        <item>vlinkColor</item>
+        <item>vspace</item>
+        <item>width</item>
+        <item>watch</item>
+        <item>which</item>
+        <item>width</item>
+        <item>write</item>
+        <item>writeln</item>
+        <item>x</item>
+        <item>y</item>
+        <item>zIndex</item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+	<DetectSpaces/>
+        <StringDetect attribute="Region Marker" context="region_marker" String="//BEGIN" beginRegion="Region1"/>
+        <RegExpr attribute="Region Marker" context="region_marker" String="//END" endRegion="Region1"/>
+        <keyword attribute="Keyword" context="#stay" String="keywords" />
+        <keyword attribute="Function" context="#stay" String="functions" />
+        <keyword attribute="Objects" context="#stay" String="objects" />
+        <keyword attribute="Math" context="#stay" String="math" />
+        <keyword attribute="Events" context="#stay" String="events" />
+        <keyword attribute="Data Type" context="#stay" String="methods" />
+	<DetectIdentifier/>
+        <Float attribute="Float" context="#stay" />
+        <Int attribute="Decimal" context="#stay" />
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <DetectChar attribute="String" context="String 1" char="'"/>
+        <Detect2Chars attribute="Comment" context="Comment" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" beginRegion="Comment"/>
+        <RegExpr attribute="Normal Text" context="(Internal regex catch)" String="[=?:]" />
+        <RegExpr attribute="Normal Text" context="(Internal regex catch)" String="\(" />
+        <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
+        <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;+,-/.*&lt;=&gt;?[]|~^&#59;"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#pop" name="String">
+	<DetectIdentifier/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+      <context attribute="String Char" lineEndContext="#pop" name="String 1">
+	<DetectIdentifier/>
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <DetectChar attribute="String Char" context="#pop" char="'"/>
+      </context>
+
+      <context attribute="Comment" lineEndContext="#pop" name="Comment">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+      </context>
+      <context attribute="Comment" lineEndContext="#stay" name="Multi/inline Comment">
+        <IncludeRules context="##Alerts" />
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+      </context>
+
+      <context attribute="Regular Expression" lineEndContext="#stay" name="Regular Expression">
+        <RegExpr attribute="Regular Expression" context="#pop#pop#pop" String="/[ig]{0,2}" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\{[\d, ]+\}" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\\[bB]" />
+        <RegExpr attribute="Pattern Character Class" context="#stay" String="\\[nrtvfDdSsWw]" />
+        <DetectChar attribute="Pattern Character Class" context="(charclass caret first check)" char="[" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\\." />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=/)" />
+        <AnyChar attribute="Pattern Internal Operator" context="#stay" String="?+*()|" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="(Internal regex catch)" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="Normal Text" context="#stay" String="\s*" />
+        <RegExpr attribute="Regular Expression" context="#pop" String="//(?=;)" />
+        <Detect2Chars attribute="Comment" context="Comment" char="/" char1="/" />
+        <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" />
+        <DetectChar attribute="Regular Expression" context="(regex caret first check)" char="/" />
+      </context>
+      <context attribute="Pattern Character Class" lineEndContext="#stay" name="Regular Expression Character Class">
+        <RegExpr attribute="Pattern Character Class" context="#stay" String="\\[\[\]]" />
+        <DetectChar attribute="Pattern Character Class" context="#pop#pop" char="]" />
+      </context>
+      <context attribute="Pattern Internal Operator" lineEndContext="#pop" name="(regex caret first check)" fallthrough="true" fallthroughContext="Regular Expression">
+        <DetectChar attribute="Pattern Internal Operator" context="Regular Expression" char="^" />
+      </context>
+      <context attribute="Pattern Internal Operator" lineEndContext="#pop" name="(charclass caret first check)" fallthrough="true" fallthroughContext="Regular Expression Character Class">
+        <DetectChar attribute="Pattern Internal Operator" context="Regular Expression Character Class" char="^" />
+      </context>
+
+      <context name="region_marker" attribute="Region Marker" lineEndContext="#pop" >
+	<DetectIdentifier />
+	<DetectSpaces />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text"  defStyleNum="dsNormal"/>
+      <itemData name="Keyword"      defStyleNum="dsKeyword"/>
+      <itemData name="Function" defStyleNum="dsFunction"/>
+      <itemData name="Objects" defStyleNum="dsKeyword" color="#008000" selColor="#00ffff" bold="0" italic="0"/>
+      <itemData name="Math" defStyleNum="dsKeyword" color="#DBA716" selColor="#00ffff" bold="0" italic="0"/>
+      <itemData name="Events" defStyleNum="dsKeyword" color="#F766D5" selColor="#00ffff" bold="0" italic="0"/>
+      <itemData name="Data Type"    defStyleNum="dsDataType"/>
+      <itemData name="Decimal"      defStyleNum="dsDecVal"/>
+      <itemData name="Float"        defStyleNum="dsFloat"/>
+      <itemData name="Char"         defStyleNum="dsChar"/>
+      <itemData name="String"       defStyleNum="dsString"/>
+      <itemData name="String Char"  defStyleNum="dsChar"/>
+      <itemData name="Comment"      defStyleNum="dsComment"/>
+      <itemData name="Symbol"       defStyleNum="dsNormal"/>
+      <itemData name="Regular Expression" defStyleNum="dsOthers"   />
+      <itemData name="Pattern Internal Operator" defStyleNum="dsFloat" />
+      <itemData name="Pattern Character Class" defStyleNum="dsBaseN" />
+      <itemData name="Region Marker" defStyleNum="dsRegionMarker" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="//" />
+      <comment name="multiLine" start="/*" end="*/" />
+    </comments>
+    <keywords casesensitive="1" />
+  </general>
+</language>
diff --git a/xml/json.xml b/xml/json.xml
new file mode 100644
--- /dev/null
+++ b/xml/json.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!--
+ ***************************************************************************
+ ** Writing a Kate Highlighting XML File
+ ** http://kate-editor.org/article/writing_a_kate_highlighting_xml_file
+ **
+ ** Introducing JSON
+ ** http://www.json.org/
+ **
+ ** The application/json Media Type for JavaScript Object Notation (JSON)
+ ** http://tools.ietf.org/html/rfc4627
+ ***************************************************************************
+-->
+<language name="JSON" section="Markup" version="1.00" kateversion="2.3" extensions="*.json" mimetype="application/json" author="Sebastian Pipping (webmaster@hartwork.org)" license="GPL">
+  <highlighting>
+		<list name="Constants">
+      <item>null</item>
+      <item>true</item>
+      <item>false</item>
+    </list>
+
+    <contexts>
+      <context name="Normal" lineEndContext="#stay" attribute="Style_Error">
+        <DetectChar char="{"       context="Pair" beginRegion="Region_Object" attribute="Style_Seperator_Pair" />
+      </context>
+
+      <context name="Pair" lineEndContext="#stay" attribute="Style_Error">
+        <DetectChar char="&quot;"  context="String_Key" attribute="Style_String_Key" />
+        <DetectChar char=":"       context="Value" attribute="Style_Seperator_Pair" />
+        <DetectChar char="}"       context="#pop" endRegion="Region_Object" attribute="Style_Seperator_Pair" />
+        <DetectChar char=","       context="#stay" attribute="Style_Seperator_Pair" />
+
+        <DetectSpaces context="#stay" attribute="Style_Normal" />
+      </context>
+
+      <context name="String_Key" lineEndContext="#stay" attribute="Style_String_Key">
+        <DetectChar char="&quot;"  context="#pop" attribute="Style_String_Key" />
+        <RegExpr String="\\(?:[&quot;\\/bfnrt]|u[0-9a-fA-f]{4})" context="#stay" insensitive="false" minimal="false" attribute="Style_String_Key_Char" />
+      </context>
+
+      <context name="Value" lineEndContext="#stay" attribute="Style_Error" >
+        <DetectChar char="&quot;"  context="String_Value" attribute="Style_String_Value" />
+        <DetectChar char="{"       context="Pair" beginRegion="Region_Object" attribute="Style_Seperator_Pair" />
+        <DetectChar char="["       context="Array" beginRegion="Region_Array" attribute="Style_Seperator_Array" />
+        <DetectChar char="}"       context="#pop" lookAhead="true" />
+        <DetectChar char=","       context="#pop" lookAhead="true" />
+
+        <DetectSpaces context="#stay" attribute="Style_Normal" />
+
+        <keyword String="Constants" context="#stay" attribute="Style_Keyword" />
+
+        <RegExpr String="-?(?:[0-9]|[1-9][0-9]+)\.[0-9]+(?:[eE][+-]?[0-9]+)?" context="#stay" insensitive="false" minimal="false" attribute="Style_Float" />
+        <RegExpr String="-?(?:[0-9]|[1-9][0-9]+)(?:[eE][+-]?[0-9]+)?" context="#stay" insensitive="false" minimal="false" attribute="Style_Decimal" />
+      </context>
+
+      <context name="String_Value" lineEndContext="#stay" attribute="Style_String_Value">
+        <DetectChar char="&quot;"  context="#pop" attribute="Style_String_Value" />
+        <RegExpr String="\\(?:[&quot;\\/bfnrt]|u[0-9a-fA-f]{4})" context="#stay" insensitive="false" minimal="false" attribute="Style_String_Value_Char" />
+      </context>
+
+      <context name="Array" lineEndContext="#stay" attribute="Style_Error">
+        <DetectChar char=","       context="#stay" attribute="Style_Seperator_Array" />
+        <DetectChar char="]"       context="#pop" endRegion="Region_Array" attribute="Style_Seperator_Array" />
+
+        <DetectChar char="{"       context="Pair" beginRegion="Region_Object" attribute="Style_Seperator_Pair" />
+        <DetectChar char="&quot;"  context="String_Value" attribute="Style_String_Value" />
+
+        <DetectSpaces context="#stay" attribute="Style_Normal" />
+
+        <keyword String="Constants" context="#stay" attribute="Style_Keyword" />
+
+        <RegExpr String="-?(?:[0-9]|[1-9][0-9]+)\.[0-9]+(?:[eE][+-]?[0-9]+)?" context="#stay" insensitive="false" minimal="false" attribute="Style_Float" />
+        <RegExpr String="-?(?:[0-9]|[1-9][0-9]+)(?:[eE][+-]?[0-9]+)?" context="#stay" insensitive="false" minimal="false" attribute="Style_Decimal" />
+      </context>
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Style_Normal"             defStyleNum="dsNormal" />
+
+      <itemData name="Style_Seperator_Pair"     defStyleNum="dsNormal" bold="1" color="#EF0000" />
+      <itemData name="Style_Seperator_Array"    defStyleNum="dsNormal" bold="1" color="#0000AF" />
+
+      <itemData name="Style_Decimal"            defStyleNum="dsDecVal" />
+      <itemData name="Style_Float"              defStyleNum="dsFloat" />
+      <itemData name="Style_String_Key"         defStyleNum="dsDataType" />
+      <itemData name="Style_String_Value"       defStyleNum="dsString" color="#FF00FF" />
+      <itemData name="Style_String_Key_Char"    defStyleNum="dsDataType" underline="1" />
+      <itemData name="Style_String_Value_Char"  defStyleNum="dsString" color="#FF00FF" underline="1" />
+
+			<itemData name="Style_Keyword"            defStyleNum="dsDecVal" bold="1" />
+
+			<itemData name="Style_Error"              defStyleNum="dsError" />
+    </itemDatas>
+  </highlighting>
+</language>
+<!--
+// kate: space-indent on; indent-width 2; replace-tabs on;
+-->
+
diff --git a/xml/language.dtd b/xml/language.dtd
new file mode 100644
--- /dev/null
+++ b/xml/language.dtd
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd" [
+	<!ENTITY name    "[A-Za-z_:][\w.:_-]*">
+	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
+]>
+<language name="XML" version="1.97" kateversion="2.4" section="Markup" extensions="*.docbook;*.xml;*.rc;*.daml;*.rdf;*.rss;*.xspf" mimetype="text/xml;text/book;text/daml;text/rdf;application/rss+xml;application/xspf+xml" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
+
+<highlighting>
+<contexts>
+  <context name="Start" attribute="Normal Text" lineEndContext="#stay">
+    <IncludeRules context="FindXML"/>
+  </context>
+
+  <context name="FindXML" attribute="Normal Text" lineEndContext="#stay">
+    <DetectSpaces/>
+    <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment"/>
+    <StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata"/>
+    <RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" beginRegion="doctype"/>
+    <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:_-]*" beginRegion="pi"/>
+    <RegExpr attribute="Element" context="Element" String="&lt;[A-Za-z_:][\w.:_-]*" beginRegion="element"/>
+    <IncludeRules context="FindEntityRefs"/>
+    <DetectIdentifier/>
+  </context>
+
+  <context name="FindEntityRefs" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="EntityRef" context="#stay" String="&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|[A-Za-z_:][\w.:_-]*);"/>
+    <AnyChar attribute="Error" context="#stay" String="&amp;&lt;"/>
+  </context>
+
+  <context name="FindPEntityRefs" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="EntityRef" context="#stay" String="&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|[A-Za-z_:][\w.:_-]*);"/>
+    <RegExpr attribute="PEntityRef" context="#stay" String="%[A-Za-z_:][\w.:_-]*;"/>
+    <AnyChar attribute="Error" context="#stay" String="&amp;%"/>
+  </context>
+
+
+  <context name="Comment" attribute="Comment" lineEndContext="#stay">
+    <DetectSpaces/>
+    <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment"/>
+    <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+"/>
+    <IncludeRules context="##Alerts"/>
+    <DetectIdentifier/>
+  </context>
+
+  <context name="CDATA" attribute="Normal Text" lineEndContext="#stay">
+    <DetectSpaces/>
+    <DetectIdentifier/>
+    <StringDetect attribute="CDATA" context="#pop" String="]]&gt;" endRegion="cdata"/>
+    <StringDetect attribute="EntityRef" context="#stay" String="]]&amp;gt;"/>
+  </context>
+
+  <context name="PI" attribute="Normal Text" lineEndContext="#stay">
+    <Detect2Chars attribute="Processing Instruction" context="#pop" char="?" char1="&gt;" endRegion="pi"/>
+  </context>
+
+  <context name="Doctype" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Doctype" context="#pop" char="&gt;" endRegion="doctype"/>
+    <DetectChar attribute="Doctype" context="Doctype Internal Subset" char="[" beginRegion="int_subset"/>
+  </context>
+
+  <context name="Doctype Internal Subset" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Doctype" context="#pop" char="]" endRegion="int_subset"/>
+    <RegExpr attribute="Doctype" context="Doctype Markupdecl" String="&lt;!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b"/>
+    <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment"/>
+    <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:_-]*" beginRegion="pi"/>
+    <IncludeRules context="FindPEntityRefs"/>
+  </context>
+
+  <context name="Doctype Markupdecl" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Doctype" context="#pop" char="&gt;"/>
+    <DetectChar attribute="Value" context="Doctype Markupdecl DQ" char="&quot;"/>
+    <DetectChar attribute="Value" context="Doctype Markupdecl SQ" char="'"/>
+  </context>
+
+  <context name="Doctype Markupdecl DQ" attribute="Value" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="#pop" char="&quot;"/>
+    <IncludeRules context="FindPEntityRefs"/>
+  </context>
+
+  <context name="Doctype Markupdecl SQ" attribute="Value" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="#pop" char="'"/>
+    <IncludeRules context="FindPEntityRefs"/>
+  </context>
+
+  <context name="Element" attribute="Normal Text" lineEndContext="#stay">
+    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="element"/>
+    <DetectChar attribute="Element" context="El Content" char="&gt;"/>
+    <RegExpr attribute="Attribute" context="Attribute" String="^[A-Za-z_:][\w.:_-]*"/>
+    <RegExpr attribute="Attribute" context="Attribute" String="\s+[A-Za-z_:][\w.:_-]*"/>
+    <RegExpr attribute="Error" context="#stay" String="\S"/>
+  </context>
+
+  <context name="El Content" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="Element" context="El End" String="&lt;/[A-Za-z_:][\w.:_-]*"/>
+    <IncludeRules context="FindXML"/>
+  </context>
+
+  <context name="El End" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Element" context="#pop#pop#pop" char="&gt;" endRegion="element"/>
+    <RegExpr attribute="Error" context="#stay" String="\S"/>
+  </context>
+
+  <context name="Attribute" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Attribute" context="Value" char="="/>
+    <RegExpr attribute="Error" context="#stay" String="\S"/>
+  </context>
+
+  <context name="Value" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="Value DQ" char="&quot;"/>
+    <DetectChar attribute="Value" context="Value SQ" char="'"/>
+    <RegExpr attribute="Error" context="#stay" String="\S"/>
+  </context>
+
+  <context name="Value DQ" attribute="Value" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="#pop#pop#pop" char="&quot;"/>
+    <IncludeRules context="FindEntityRefs"/>
+  </context>
+
+  <context name="Value SQ" attribute="Value" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="#pop#pop#pop" char="'"/>
+    <IncludeRules context="FindEntityRefs"/>
+  </context>
+
+</contexts>
+<itemDatas>
+  <itemData name="Normal Text" defStyleNum="dsNormal"/>
+  <itemData name="Comment" defStyleNum="dsComment"/>
+  <itemData name="CDATA" defStyleNum="dsBaseN" bold="1"/>
+  <itemData name="Processing Instruction" defStyleNum="dsKeyword"/>
+  <itemData name="Doctype" defStyleNum="dsDataType" bold="1"/>
+  <itemData name="Element" defStyleNum="dsKeyword"/>
+  <itemData name="Attribute" defStyleNum="dsOthers"/>
+  <itemData name="Value" defStyleNum="dsString" color="#a00"/>
+  <itemData name="EntityRef" defStyleNum="dsDecVal"/>
+  <itemData name="PEntityRef" defStyleNum="dsDecVal"/>
+  <itemData name="Error" defStyleNum="dsError"/>
+</itemDatas>
+
+</highlighting>
+<general>
+  <comments>
+    <comment name="multiLine" start="&lt;!--" end="--&gt;"/>
+  </comments>
+  <indentation mode="xml"/>
+</general>
+</language>
diff --git a/xml/latex.xml b/xml/latex.xml
new file mode 100644
--- /dev/null
+++ b/xml/latex.xml
@@ -0,0 +1,332 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="LaTeX" version="1.26" section="Markup" kateversion="2.3" extensions="*.tex; *.ltx; *.dtx; *.sty; *.cls;" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net)" license="LGPL" >
+  <highlighting>
+    <contexts>
+      <!-- Normal text -->
+      <context name="Normal Text" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr String="\\begin(?=[^a-zA-Z])" attribute="Structure" context="FindEnvironment" beginRegion="block" />
+        <RegExpr String="\\end(?=[^a-zA-Z])" attribute="Structure" context="FindEnvironment" endRegion="block" />
+        <RegExpr String="\\(label|pageref|ref|vpageref|vref|cite)(?=[^a-zA-Z])" attribute="Structure" context="Label"/>
+        <RegExpr String="\\(part|chapter|section|subsection|subsubsection|paragraph|subparagraph)\*?\s*(?=[\{\[])" attribute="Structure" context="Sectioning"/>
+        <RegExpr String="\\(re)?newcommand(?=[^a-zA-Z])" attribute="Keyword" context="NewCommand"/>
+        <RegExpr String="\\(e|g|x)?def(?=[^a-zA-Z])" attribute="Keyword" context="DefCommand"/>
+        <StringDetect String="\(" attribute="Math" context="MathMode" beginRegion="mathMode" />
+        <StringDetect String="\[" attribute="Math" context="MathModeEquation" beginRegion="mathMode" />
+        <DetectChar char="\" attribute="Keyword" context="ContrSeq"/>
+        <StringDetect String="$$" attribute="Math" context="MathModeDisplay" beginRegion="mathMode" />
+        <DetectChar char="$" attribute="Math" context="MathMode" beginRegion="mathMode" />
+        <RegExpr String="%\s*BEGIN.*$" attribute="Region Marker" context="#stay" beginRegion="regionMarker" firstNonSpace="true" />
+        <RegExpr String="%\s*END.*$" attribute="Region Marker" context="#stay" endRegion="regionMarker" firstNonSpace="true" />
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+      </context>
+
+      <!-- LaTeX sectioning commands -->
+      <context name="Sectioning" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr String="\[[^\]]*\]" attribute="Normal Text" context="#stay"/>
+        <DetectChar char=" " attribute="Normal Text" context="#stay"/>
+        <DetectChar char="{" attribute="Normal Text" context="SectioningInside"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+      </context>
+      <context name="SectioningInside" attribute="Structure Text" lineEndContext="#stay">
+        <DetectChar char="{" attribute="Normal Text" context="SectioningInside"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
+        <StringDetect String="\(" attribute="Structure Math" context="SectioningMathMode" beginRegion="mathMode" />
+        <DetectChar char="\" attribute="Structure Keyword" context="SectioningContrSeq"/>
+        <DetectChar char="$" attribute="Structure Math" context="SectioningMathMode" beginRegion="mathMode" />
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+      </context>
+      <context name="SectioningContrSeq" attribute="Keyword" lineEndContext="#pop">
+         <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="[a-zA-Z]+(\+?|\*{0,3})" attribute="Structure Keyword" context="#pop"/>
+        <RegExpr String="[^a-zA-Z]" attribute="Structure Keyword" context="#pop" />
+      </context>
+      <context name="SectioningMathMode" attribute="Structure Math" lineEndContext="#stay">
+        <StringDetect String="$$" attribute="Error" context="#stay" />
+        <DetectChar char="$" attribute="Structure Math" context="#pop" endRegion="mathMode" />
+        <Detect2Chars char="\" char1=")" attribute="Structure Math" context="#pop" endRegion="mathMode" />
+        <Detect2Chars char="\" char1="]" attribute="Error" context="#stay" />
+        <DetectChar char="\" attribute="Structure Keyword Mathmode" context="SectioningMathContrSeq"/>
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+      </context>
+      <context name="SectioningMathContrSeq" attribute="Structure Keyword Mathmode" lineEndContext="#pop">
+        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="[a-zA-Z]+\*?" attribute="Structure Keyword Mathmode" context="#pop"/>
+        <RegExpr String="[^a-zA-Z]" attribute="Structure Keyword Mathmode" context="#pop" /> 
+      </context>
+
+      <!-- LaTeX commands \newcommand and \renewcommand -->
+      <context name="NewCommand" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr String="\s*\{\s*\\[a-zA-Z]+\s*\}(\[\d\](\[[^\]]+\])?)?\{" attribute="Normal Text" context="CommandParameterStart"/>
+        <DetectChar char="}" attribute="Error" context="#pop"/>
+      </context>
+
+      <!-- LaTeX command \def -->
+      <context name="DefCommand" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr String="\s*\\[a-zA-Z]+[^\{]*\{" attribute="Normal Text" context="CommandParameterStart"/>
+        <DetectChar char="}" attribute="Error" context="#pop"/>
+      </context>
+
+      <!-- parse command argument -->
+      <context name="CommandParameterStart" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="{" attribute="Normal Text" context="CommandParameter"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>
+        <RegExpr String="\\." attribute="Normal Text" context="#stay" />
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+      </context>
+      <context name="CommandParameter" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="{" attribute="Normal Text" context="CommandParameter"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
+        <RegExpr String="\\." attribute="Normal Text" context="#stay" />
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+      </context>
+
+      <!-- LaTeX command in text mode -->
+      <context name="ContrSeq" attribute="Keyword" lineEndContext="#pop">
+        <StringDetect String="verb*" attribute="Keyword" context="Verb"/>
+        <RegExpr String="verb(?=[^a-zA-Z])" attribute="Keyword" context="Verb"/>
+        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="[a-zA-Z]+(\+?|\*{0,3})" attribute="Keyword" context="#pop"/>
+        <RegExpr String="[^a-zA-Z]" attribute="Keyword" context="#pop" />
+      </context>
+      <context name="ToEndOfLine" attribute="Normal Text" lineEndContext="#pop">
+      </context>
+
+      <!-- verb command -->
+      <context name="Verb" attribute="Verbatim" lineEndContext="#pop#pop" >
+        <RegExpr String="(.)" attribute="Normal Text" dynamic="true" context="VerbEnd" />
+      </context>
+      <context name="VerbEnd" attribute="Verbatim" lineEndContext="#pop#pop#pop" dynamic="true" >
+        <StringDetect String="%1" attribute="Normal Text" context="#pop#pop#pop" dynamic="true" />
+        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="[^%1\xd7]*" attribute="Verbatim" context="#stay" dynamic="true" />
+      </context>
+
+      <!-- label -->
+      <context name="Label" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr String="\s*\{\s*" attribute="Normal Text" context="LabelParameter"/>
+        <RegExpr String="\s*\[\s*" attribute="Normal Text" context="LabelOption"/>
+        <RegExpr String="[^\[\{]+" attribute="Error" context="#stay"/>
+      </context>
+
+      <context name="LabelOption" attribute="Normal Text" lineEndContext="#stay">
+        <StringDetect String="\(" attribute="Math" context="MathMode" beginRegion="mathMode" />
+        <DetectChar char="\" attribute="Keyword" context="ContrSeq"/>
+        <DetectChar char="$" attribute="Math" context="MathMode" beginRegion="mathMode" />
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\s*\]\s*" attribute="Normal Text" context="#pop"/>
+      </context>
+
+      <context name="LabelParameter" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\s*\}\s*" attribute="Normal Text" context="#pop#pop"/>
+      </context>
+
+      <!-- start of an environment -->
+      <context name="FindEnvironment" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="{" attribute="Normal Text" context="Environment"/>
+        <RegExpr String="\S" attribute="Normal Text" context="#pop"/>
+      </context>
+
+      <!-- filter the environment name and check the type -->
+      <context name="Environment" attribute="Environment" lineEndContext="#stay">
+        <RegExpr String="(lstlisting|(B|L)?Verbatim)" attribute="Environment" context="VerbatimEnvParam"/>
+        <RegExpr String="(verbatim|boxedverbatim)" attribute="Environment" context="VerbatimEnv"/>
+        <RegExpr String="(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|flalign)" attribute="Environment" context="MathEnv"/>
+        <RegExpr String="(alignat|xalignat|xxalignat)" attribute="Environment" context="MathEnvParam"/>
+        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="[a-zA-Z]" attribute="Environment" context="LatexEnv"/>
+        <RegExpr String="\s+" attribute="Error" context="#pop"/>
+        <RegExpr String="[^a-zA-Z\xd7]" attribute="Error" context="#pop"/>
+      </context>
+
+      <!-- environment type 1: normal -->
+      <context name="LatexEnv" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop"/>
+        <RegExpr String="[a-zA-Z]+" attribute="Environment" context="#stay"/>
+        <RegExpr String="\s+" attribute="Error" context="#stay"/>
+       <IncludeRules context="EnvCommon" />
+      </context>
+
+      <!-- environment type 2: verbatim without parameter -->
+      <context name="VerbatimEnv" attribute="Environment" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="Verbatim"/>
+        <RegExpr String="[a-zA-Z]" attribute="Environment" lookAhead="true" context="#pop"/>
+        <IncludeRules context="EnvCommon" />
+       </context>
+
+      <!-- environment type 3: verbatim with optional parameter -->
+      <context name="VerbatimEnvParam" attribute="Normal Text" lineEndContext="#stay">
+        <Detect2Chars char="}" char1="[" attribute="Normal Text" context="#stay" />
+        <DetectChar char="}" attribute="Normal Text" context="Verbatim"/>
+        <DetectChar char="]" attribute="Normal Text" context="Verbatim"/>
+      </context>
+
+      <!-- parse verbatim text -->
+      <context name="Verbatim" attribute="Verbatim" lineEndContext="#stay">
+        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\\end(?=\s*\{(verbatim|lstlisting|boxedverbatim|(B|L)?Verbatim)\*?\})" attribute="Structure"  context="VerbFindEnd"/>
+      </context>
+
+      <!-- end of verbatim environment -->
+      <context name="VerbFindEnd" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr String="\s*\{" attribute="Normal Text" context="#stay"/>
+        <RegExpr String="(verbatim|lstlisting|boxedverbatim|(B|L)?Verbatim)\*?" attribute="Environment" context="#stay"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop" endRegion="block"/>
+      </context>
+
+      <!-- environment type 4: math environment with its own mathmode -->
+      <context name="MathEnv" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="MathModeEnv"/>
+        <RegExpr String="[a-zA-Z]" attribute="Environment" lookAhead="true" context="#pop"/>
+        <IncludeRules context="EnvCommon" />
+      </context>
+
+      <!-- environment type 5: math environment with its own mathmode and parameter -->
+      <context name="MathEnvParam" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr String="\}\{[^\}]*\}" attribute="Normal Text" context="MathModeEnv"/>
+        <DetectChar char="}" attribute="Normal Text" context="MathModeEnv"/>
+        <RegExpr String="[a-zA-Z]" attribute="Environment" lookAhead="true" context="#pop"/>
+        <IncludeRules context="EnvCommon" />
+      </context>
+
+      <!-- environment common -->
+      <context name="EnvCommon" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\*(?=\})" attribute="Environment" context="#stay"/>
+        <RegExpr String="\*[^\}]*" attribute="Error" context="#pop#pop#pop"/>
+        <RegExpr String="[^a-zA-Z\xd7][^\}]*" attribute="Error" context="#pop#pop#pop"/>
+      </context>
+
+      <!-- parse math environment -->
+      <context name="MathModeEnv" attribute="Math" lineEndContext="#stay">
+        <RegExpr String="\\end(?=\s*\{(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|flalign|alignat|xalignat|xxalignat)\*?\})" attribute="Structure" context="MathFindEnd"/>
+        <RegExpr String="\\begin(?=[^a-zA-Z])" attribute="Keyword Mathmode" context="#stay" beginRegion="block" />
+        <RegExpr String="\\end(?=[^a-zA-Z])" attribute="Keyword Mathmode" context="#stay" endRegion="block" />
+        <StringDetect String="\(" attribute="Error" context="#stay" />
+        <StringDetect String="\[" attribute="Error" context="#stay" />
+        <StringDetect String="\)" attribute="Error" context="#stay" />
+        <StringDetect String="\]" attribute="Error" context="#stay" />
+        <RegExpr String="\\(text|intertext|mbox)\s*(?=\{)" attribute="Keyword Mathmode" context="MathModeText" />
+        <DetectChar char="\" attribute="Keyword Mathmode" context="MathContrSeq"/>
+        <StringDetect String="$$" attribute="Error" context="#stay" />
+        <DetectChar char="$" attribute="Error" context="#stay" />
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+        <RegExpr String="%\s*BEGIN.*$" attribute="Region Marker" context="#stay" beginRegion="regionMarker" firstNonSpace="true"/>
+        <RegExpr String="%\s*END.*$" attribute="Region Marker" context="#stay" endRegion="regionMarker" firstNonSpace="true"/>
+      </context>
+
+      <!-- end of math environment -->
+      <context name="MathFindEnd" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr String="\s*\{" attribute="Normal Text" context="#stay"/>
+        <RegExpr String="(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|flalign|alignat|xalignat|xxalignat)\*?" attribute="Environment" context="#stay"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop"  endRegion="block"/>
+      </context>
+
+      <!-- math mode: starting with $ or \( -->
+      <context name="MathMode" attribute="Math" lineEndContext="#stay">
+        <StringDetect String="$$" attribute="Error" context="#stay" />
+        <DetectChar char="$" attribute="Math" context="#pop" endRegion="mathMode" />
+        <Detect2Chars char="\" char1=")" attribute="Math" context="#pop" endRegion="mathMode" />
+        <Detect2Chars char="\" char1="]" attribute="Error" context="#stay" />
+        <IncludeRules context="MathModeCommon" />
+      </context>
+
+      <!-- math mode: starting with $$ -->
+      <context name="MathModeDisplay" attribute="Math" lineEndContext="#stay">
+        <StringDetect String="$$" attribute="Math" context="#pop" endRegion="mathMode" />
+        <DetectChar char="$" attribute="Error" context="#stay" />
+        <Detect2Chars char="\" char1="]" attribute="Error" context="#stay" />
+        <Detect2Chars char="\" char1=")" attribute="Error" context="#stay" />
+        <IncludeRules context="MathModeCommon" />
+      </context>
+
+      <!-- math mode: starting with \[ -->
+      <context name="MathModeEquation" attribute="Math" lineEndContext="#stay">
+        <Detect2Chars char="\" char1="]" attribute="Math" context="#pop" endRegion="mathMode" />
+        <StringDetect String="$$" attribute="Error" context="#stay" />
+        <DetectChar char="$" attribute="Error" context="#stay" />
+        <Detect2Chars char="\" char1=")" attribute="Error" context="#stay" />
+        <IncludeRules context="MathModeCommon" />
+      </context>
+
+      <!-- math mode common -->
+      <context name="MathModeCommon" attribute="Math" lineEndContext="#stay">
+        <RegExpr String="\\(begin|end)\s*\{(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|flalign|alignat|xalignat|xxalignat)\*?\}" attribute="Error" context="#stay"/>
+        <RegExpr String="\\begin(?=[^a-zA-Z])" attribute="Keyword Mathmode" context="#stay" beginRegion="block" />
+        <RegExpr String="\\end(?=[^a-zA-Z])" attribute="Keyword Mathmode" context="#stay" endRegion="block" />
+        <RegExpr String="\\(text|intertext|mbox)\s*(?=\{)" attribute="Keyword Mathmode" context="MathModeText" />
+        <DetectChar char="\" attribute="Keyword Mathmode" context="MathContrSeq"/>
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+        <RegExpr String="%\s*BEGIN.*$" attribute="Region Marker" context="#stay" beginRegion="regionMarker" firstNonSpace="true"/>
+        <RegExpr String="%\s*END.*$" attribute="Region Marker" context="#stay" endRegion="regionMarker" firstNonSpace="true"/>
+        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+      </context>
+
+      <!-- command in mathmode -->
+      <context name="MathContrSeq" attribute="Keyword Mathmode" lineEndContext="#pop">
+        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="[a-zA-Z]+\*?" attribute="Keyword Mathmode" context="#pop"/>
+        <RegExpr String="[^a-zA-Z]" attribute="Keyword Mathmode" context="#pop" /> 
+      </context>
+
+      <!-- text in mathmode -->
+      <context name="MathModeText" attribute="Normal Text" lineEndContext="#stay" >
+         <DetectChar char="{" attribute="Normal Text" context="MathModeTextParameterStart"/>
+      </context>
+
+      <context name="MathModeTextParameterStart" attribute="Normal Text" lineEndContext="#stay" >
+        <RegExpr String="\\." attribute="Normal Text" context="#stay"/> 
+        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="{" attribute="Normal Text" context="MathModeTextParameter"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+      </context>
+
+      <context name="MathModeTextParameter" attribute="Normal Text" lineEndContext="#stay" >
+        <RegExpr String="\\." attribute="Normal Text" context="#stay"/> 
+        <DetectChar char="{" attribute="Normal Text" context="MathModeTextParameter"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
+        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+      </context>
+
+     <!-- comment -->
+      <context name="Comment" attribute="Comment" lineEndContext="#pop">
+      	<RegExpr String="(FIXME|TODO):?" attribute="Alert" context="#stay"/>
+        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+      </context>
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Keyword" defStyleNum="dsNormal" color="#800000" selColor="#60FFFF" bold="0" italic="0"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="Error" defStyleNum="dsAlert"/>
+      <itemData name="Math" defStyleNum="dsNormal" color="#00A000" selColor="#FF40FF"  bold="0" italic="0"/>
+      <itemData name="Structure" defStyleNum="dsNormal" color="#F00000" selColor="#80FFD0" bold="0" italic="0"/>
+      <itemData name="Keyword Mathmode" defStyleNum="dsNormal" color="#606000" selColor="#FFD0FF" bold="0" italic="0"/>
+      <itemData name="Environment" defStyleNum="dsNormal" color="#0000D0" selColor="#FFFF90" bold="0" italic="0"/>
+      <itemData name="Verbatim" defStyleNum="dsNormal" color="#a08000" selColor="#80D0FF" bold="0" italic="0"/>
+      <itemData name="Region Marker" defStyleNum="dsRegionMarker" />
+      <itemData name="Bullet" defStyleNum="dsNormal" color="#FF00C4" bold="1" underline="1"/>
+      <itemData name="Alert" defStyleNum="dsAlert" />
+      <itemData name="Structure Text" defStyleNum="dsNormal" color="#000000" selColor="#FFFFFF" bold="1" italic="0"/>
+      <itemData name="Structure Keyword" defStyleNum="dsNormal" color="#800000" selColor="#60FFFF" bold="1" italic="0"/>
+      <itemData name="Structure Math" defStyleNum="dsNormal" color="#00A000" selColor="#FF40FF"  bold="1" italic="0"/>
+      <itemData name="Structure Keyword Mathmode" defStyleNum="dsNormal" color="#606000" selColor="#FFD0FF" bold="1" italic="0"/>
+     </itemDatas>
+  </highlighting>
+
+  <general>
+    <keywords weakDeliminator="\" wordWrapDeliminator=",{}[]"/>
+    <comments>
+      <comment name="singleLine" start="%" />
+    </comments>
+  </general>
+</language>
diff --git a/xml/lex.xml b/xml/lex.xml
new file mode 100644
--- /dev/null
+++ b/xml/lex.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!--
+  ========================================================================
+
+  LEX.XML supports syntax highlighting for Lex/Flex source under Kate.
+
+  Copyright (C) 2004 - Jan Villat <jan.villat@net2000.ch>
+  This code is released under the LGPL as part of kdelibs/kate.
+
+  ========================================================================
+
+  Updates for LEX.XML can be obtained from http://kate.kde.org/hl/
+
+  UPDATE HISTORY:-
+  2004.05.25 - LEX.XML 1.00        - First released.
+
+  TODO:-
+  - Add a mime type (cannot find it !?)
+  
+  ========================================================================
+-->
+<language name="Lex/Flex" version="1.01" kateversion="2.4" section="Sources" extensions="*.l;*.lex;*.flex" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL">
+
+<highlighting>
+<contexts>
+  <context name="Pre Start" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="Normal Text" context="Definitions" String="." lookAhead="true" beginRegion="definitions" />
+  </context>
+  <context name="Definitions" attribute="Normal Text" lineEndContext="#stay">
+    <IncludeRules context="Detect C" />
+    <Detect2Chars attribute="Content-Type Delimiter" context="Rules" char="%" char1="%" beginRegion="rules" endRegion="definitions" />
+    <DetectChar attribute="Directive" context="Percent Command" char="%" />
+    <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" column="0"/>
+    <RegExpr attribute="Definition" context="Definition RegExpr" String="[A-Za-z_]\w*\s+" column="0"/>
+  </context>
+  <context name="Rules" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Rule RegExpr">
+    <IncludeRules context="Detect C" />
+    <Detect2Chars attribute="Content-Type Delimiter" context="User Code" char="%" char1="%" beginRegion="code" endRegion="rules" />
+  </context>
+  <context name="User Code" attribute="Normal Text" lineEndContext="#stay">
+    <IncludeRules context="##C++" />
+  </context>
+  
+  <context name="Percent Command" attribute="Directive" lineEndContext="#pop">
+  </context>
+  <context name="Comment" attribute="Comment" lineEndContext="#stay">
+    <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" />
+  </context>
+
+  <context name="Definition RegExpr" attribute="RegExpr" lineEndContext="#pop">
+    <IncludeRules context="RegExpr Base" />
+    <RegExpr attribute="RegExpr" context="#stay" String="\S" />  
+    <RegExpr attribute="Alert" context="#stay" String=".*" />  
+  </context>
+  <context name="Rule RegExpr" attribute="RegExpr" lineEndContext="#pop">
+    <RegExpr attribute="Content-Type Delimiter" context="Start Conditions Scope" String="\{$" beginRegion="SCscope" />  
+    <IncludeRules context="RegExpr Base" />
+    <RegExpr attribute="RegExpr" context="#stay" String="\S" />  
+    <RegExpr attribute="Normal Text" context="Action" String="\s+" />  
+  </context>
+  <context name="RegExpr (" attribute="RegExpr" lineEndContext="#stay">
+    <IncludeRules context="RegExpr Base" />
+    <DetectChar attribute="RegExpr" context="#pop" char=")" />  
+    <RegExpr attribute="RegExpr" context="#stay" String="." />
+  </context>
+  <context name="RegExpr [" attribute="RegExpr" lineEndContext="#stay">
+    <RegExpr attribute="Backslash Code" context="#stay" String="\\." />
+    <DetectChar attribute="RegExpr" context="#pop" char="]" />  
+    <RegExpr attribute="RegExpr" context="#stay" String="." />
+  </context>
+  <context name="RegExpr {" attribute="RegExpr" lineEndContext="#stay">
+    <RegExpr attribute="Backslash Code" context="#stay" String="\\." />
+    <DetectChar attribute="RegExpr" context="#pop" char="}" />  
+    <RegExpr attribute="RegExpr" context="#stay" String="." />
+  </context>
+  <context name="RegExpr Q" attribute="RegExpr" lineEndContext="#stay">
+    <RegExpr attribute="Backslash Code" context="#stay" String="\\." />
+    <DetectChar attribute="RegExpr" context="#pop" char="&quot;" />  
+    <RegExpr attribute="RegExpr" context="#stay" String="." />
+  </context>
+  <context name="RegExpr Base" attribute="RegExpr" lineEndContext="#stay">
+    <RegExpr attribute="Backslash Code" context="#stay" String="\\." />
+    <DetectChar attribute="RegExpr" context="RegExpr (" char="(" />  
+    <DetectChar attribute="RegExpr" context="RegExpr [" char="[" />  
+    <DetectChar attribute="RegExpr" context="RegExpr {" char="{" />  
+    <DetectChar attribute="RegExpr" context="RegExpr Q" char="&quot;" />  
+  </context>
+  
+  <context name="Start Conditions Scope" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Rule RegExpr">
+    <RegExpr attribute="Content-Type Delimiter" context="#pop" String="\s*\}" endRegion="SCscope" />
+    <RegExpr attribute="Normal Text" context="Rule RegExpr" String="\s*" />
+  </context>
+  
+  <context name="Action" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="Action C">
+    <RegExpr attribute="Directive" context="#stay" String="\|\s*$" />
+    <Detect2Chars attribute="Content-Type Delimiter" context="Lex Rule C Bloc" char="%" char1="{" beginRegion="lexCbloc" />
+  </context>
+  
+  <context name="Detect C" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="Normal Text" context="Indented C" String="^\s" />
+    <Detect2Chars attribute="Content-Type Delimiter" context="Lex C Bloc" char="%" char1="{" beginRegion="lexCbloc" column="0"/>
+  </context>
+  <context name="Indented C" attribute="Normal Text" lineEndContext="#pop">
+    <IncludeRules context="##C++" />
+  </context>
+  <context name="Lex C Bloc" attribute="Normal Text" lineEndContext="#stay">
+    <Detect2Chars attribute="Content-Type Delimiter" context="#pop" char="%" char1="}" endRegion="lexCbloc" column="0"/>
+    <IncludeRules context="##C++" />
+  </context>
+  <context name="Lex Rule C Bloc" attribute="Normal Text" lineEndContext="#stay">
+    <Detect2Chars attribute="Content-Type Delimiter" context="#pop" char="%" char1="}" endRegion="lexCbloc" />
+    <IncludeRules context="##C++" />
+  </context>
+  <context name="Normal C Bloc" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Normal Text" context="Normal C Bloc" char="{" beginRegion="bloc" />  
+    <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="bloc" />  
+    <IncludeRules context="##C++" />
+  </context>
+  <context name="Action C" attribute="Normal Text" lineEndContext="#pop">
+    <DetectChar attribute="Normal Text" context="Normal C Bloc" char="{" beginRegion="bloc" />  
+    <DetectChar attribute="Alert" context="#stay" char="}" />  
+    <IncludeRules context="##C++" />
+  </context>
+</contexts>
+
+<itemDatas>
+  <itemData name="Normal Text" defStyleNum="dsNormal" />
+  <itemData name="Definition" defStyleNum="dsDataType" />
+  <itemData name="Comment" defStyleNum="dsComment" />
+  <itemData name="Content-Type Delimiter" defStyleNum="dsBaseN" bold="1" />
+  <itemData name="Directive" defStyleNum="dsKeyword"/>
+  <itemData name="RegExpr" defStyleNum="dsString" />
+  <itemData name="Backslash Code" defStyleNum="dsString" bold="1" />
+  <itemData name="Alert" defStyleNum="dsAlert" />
+</itemDatas>
+
+</highlighting>
+<general>
+  <comments>
+    <comment name="multiLine" start="/*" end="*/" />
+  </comments>
+</general>
+</language>
diff --git a/xml/literate-haskell.xml b/xml/literate-haskell.xml
new file mode 100644
--- /dev/null
+++ b/xml/literate-haskell.xml
@@ -0,0 +1,386 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="Literate Haskell" version="1.04" kateversion="2.4" section="Sources" extensions="*.lhs" author="Marcel Martin (mmar@freenet.de)" license="">
+	<highlighting>
+	<list name="keywords">
+		<item> case </item>
+		<item> class </item>
+		<item> data </item>
+		<item> deriving </item>
+		<item> do </item>
+		<item> else </item>
+		<item> if </item>
+		<item> in </item>
+		<item> infixl </item>
+		<item> infixr </item>
+		<item> instance </item>
+		<item> let </item>
+		<item> module </item>
+		<item> of </item>
+		<item> primitive </item>
+		<item> then </item>
+		<item> type </item>
+		<item> where </item>
+	</list>
+        <list name="infix operators">
+		<item> quot </item>
+		<item> rem </item>
+		<item> div </item>
+		<item> mod </item>
+		<item> elem </item>
+		<item> notElem </item>
+		<item> seq </item>
+	</list>
+	<list name="functions">
+		<!--
+                These operators are not handled yet.
+		<item> !! </item>
+		<item> % </item>
+		<item> && </item>
+		<item> $! </item>
+		<item> $ </item>
+		<item> * </item>
+		<item> ** </item>
+		<item> - </item>
+		<item> . </item>
+		<item> /= </item>
+		<item> < </item>
+		<item> <= </item>
+		<item> =<< </item>
+		<item> == </item>
+		<item> > </item>
+		<item> >= </item>
+		<item> >> </item>
+		<item> >>= </item>
+		<item> ^ </item>
+		<item> ^^ </item>
+		<item> ++ </item>
+		<item> || </item>
+		//-->
+
+		<item> FilePath </item>
+		<item> IOError </item>
+		<item> abs </item>
+		<item> acos </item>
+		<item> acosh </item>
+		<item> all </item>
+		<item> and </item>
+		<item> any </item>
+		<item> appendFile </item>
+		<item> approxRational </item>
+		<item> asTypeOf </item>
+		<item> asin </item>
+		<item> asinh </item>
+		<item> atan </item>
+		<item> atan2 </item>
+		<item> atanh </item>
+		<item> basicIORun </item>
+		<item> break </item>
+		<item> catch </item>
+		<item> ceiling </item>
+		<item> chr </item>
+		<item> compare </item>
+		<item> concat </item>
+		<item> concatMap </item>
+		<item> const </item>
+		<item> cos </item>
+		<item> cosh </item>
+		<item> curry </item>
+		<item> cycle </item>
+		<item> decodeFloat </item>
+		<item> denominator </item>
+		<item> digitToInt </item>
+		<item> div </item>
+		<item> divMod </item>
+		<item> drop </item>
+		<item> dropWhile </item>
+		<item> either </item>
+		<item> elem </item>
+		<item> encodeFloat </item>
+		<item> enumFrom </item>
+		<item> enumFromThen </item>
+		<item> enumFromThenTo </item>
+		<item> enumFromTo </item>
+		<item> error </item>
+		<item> even </item>
+		<item> exp </item>
+		<item> exponent </item>
+		<item> fail </item>
+		<item> filter </item>
+		<item> flip </item>
+		<item> floatDigits </item>
+		<item> floatRadix </item>
+		<item> floatRange </item>
+		<item> floor </item>
+		<item> fmap </item>
+		<item> foldl </item>
+		<item> foldl1 </item>
+		<item> foldr </item>
+		<item> foldr1 </item>
+		<item> fromDouble </item>
+		<item> fromEnum </item>
+		<item> fromInt </item>
+		<item> fromInteger </item>
+		<item> fromIntegral </item>
+		<item> fromRational </item>
+		<item> fst </item>
+		<item> gcd </item>
+		<item> getChar </item>
+		<item> getContents </item>
+		<item> getLine </item>
+		<item> head </item>
+		<item> id </item>
+		<item> inRange </item>
+		<item> index </item>
+		<item> init </item>
+		<item> intToDigit </item>
+		<item> interact </item>
+		<item> ioError </item>
+		<item> isAlpha </item>
+		<item> isAlphaNum </item>
+		<item> isAscii </item>
+		<item> isControl </item>
+		<item> isDenormalized </item>
+		<item> isDigit </item>
+		<item> isHexDigit </item>
+		<item> isIEEE </item>
+		<item> isInfinite </item>
+		<item> isLower </item>
+		<item> isNaN </item>
+		<item> isNegativeZero </item>
+		<item> isOctDigit </item>
+		<item> isPrint </item>
+		<item> isSpace </item>
+		<item> isUpper </item>
+		<item> iterate </item>
+		<item> last </item>
+		<item> lcm </item>
+		<item> length </item>
+		<item> lex </item>
+		<item> lexDigits </item>
+		<item> lexLitChar </item>
+		<item> lines </item>
+		<item> log </item>
+		<item> logBase </item>
+		<item> lookup </item>
+		<item> map </item>
+		<item> mapM </item>
+		<item> mapM_ </item>
+		<item> max </item>
+		<item> maxBound </item>
+		<item> maximum </item>
+		<item> maybe </item>
+		<item> min </item>
+		<item> minBound </item>
+		<item> minimum </item>
+		<item> mod </item>
+		<item> negate </item>
+		<item> not </item>
+		<item> notElem </item>
+		<item> null </item>
+		<item> numerator </item>
+		<item> odd </item>
+		<item> or </item>
+		<item> ord </item>
+		<item> otherwise </item>
+		<item> pi </item>
+		<item> pred </item>
+		<item> primExitWith </item>
+		<item> print </item>
+		<item> product </item>
+		<item> properFraction </item>
+		<item> putChar </item>
+		<item> putStr </item>
+		<item> putStrLn </item>
+		<item> quot </item>
+		<item> quotRem </item>
+		<item> range </item>
+		<item> rangeSize </item>
+		<item> read </item>
+		<item> readDec </item>
+		<item> readFile </item>
+		<item> readFloat </item>
+		<item> readHex </item>
+		<item> readIO </item>
+		<item> readInt </item>
+		<item> readList </item>
+		<item> readLitChar </item>
+		<item> readLn </item>
+		<item> readOct </item>
+		<item> readParen </item>
+		<item> readSigned </item>
+		<item> reads </item>
+		<item> readsPrec </item>
+		<item> realToFrac </item>
+		<item> recip </item>
+		<item> rem </item>
+		<item> repeat </item>
+		<item> replicate </item>
+		<item> return </item>
+		<item> reverse </item>
+		<item> round </item>
+		<item> scaleFloat </item>
+		<item> scanl </item>
+		<item> scanl1 </item>
+		<item> scanr </item>
+		<item> scanr1 </item>
+		<item> seq </item>
+		<item> sequence </item>
+		<item> sequence_ </item>
+		<item> show </item>
+		<item> showChar </item>
+		<item> showInt </item>
+		<item> showList </item>
+		<item> showLitChar </item>
+		<item> showParen </item>
+		<item> showSigned </item>
+		<item> showString </item>
+		<item> shows </item>
+		<item> showsPrec </item>
+		<item> significand </item>
+		<item> signum </item>
+		<item> sin </item>
+		<item> sinh </item>
+		<item> snd </item>
+		<item> span </item>
+		<item> splitAt </item>
+		<item> sqrt </item>
+		<item> subtract </item>
+		<item> succ </item>
+		<item> sum </item>
+		<item> tail </item>
+		<item> take </item>
+		<item> takeWhile </item>
+		<item> tan </item>
+		<item> tanh </item>
+		<item> threadToIOResult </item>
+		<item> toEnum </item>
+		<item> toInt </item>
+		<item> toInteger </item>
+		<item> toLower </item>
+		<item> toRational </item>
+		<item> toUpper </item>
+		<item> truncate </item>
+		<item> uncurry </item>
+		<item> undefined </item>
+		<item> unlines </item>
+		<item> until </item>
+		<item> unwords </item>
+		<item> unzip </item>
+		<item> unzip3 </item>
+		<item> userError </item>
+		<item> words </item>
+		<item> writeFile </item>
+		<item> zip </item>
+		<item> zip3 </item>
+		<item> zipWith </item>
+		<item> zipWith3 </item>
+	</list>
+	<list name="type constructors">
+		<item> Bool </item>
+		<item> Char </item>
+                <item> Double </item>
+		<item> Either </item>
+		<item> Float </item>
+		<item> IO </item>
+		<item> Integer </item>
+		<item> Int </item>
+		<item> Maybe </item>
+		<item> Ordering </item>
+		<item> Rational </item>
+		<item> Ratio </item>
+		<item> ReadS </item>
+		<item> ShowS </item>
+		<item> String </item>
+
+	</list>
+	<list name="classes">
+		<item> Bounded </item>
+		<item> Enum </item>
+		<item> Eq </item>
+		<item> Floating </item>
+		<item> Fractional </item>
+		<item> Functor </item>
+		<item> Integral </item>
+		<item> Ix </item>
+		<item> Monad </item>
+		<item> Num </item>
+		<item> Ord </item>
+		<item> Read </item>
+		<item> RealFloat </item>
+		<item> RealFrac </item>
+		<item> Real </item>
+		<item> Show </item>
+	</list>
+	<list name="data constructors">
+		<item> EQ </item>
+		<item> False </item>
+		<item> GT </item>
+		<item> Just </item>
+		<item> LT </item>
+		<item> Left </item>
+		<item> Nothing </item>
+		<item> Right </item>
+		<item> True </item>
+	</list>
+	<contexts>
+		<context attribute="Comment" lineEndContext="#stay" name="literate-normal">
+			<DetectChar attribute="Special" context="normal" char="&gt;" column="0"/>
+		</context>
+		<context attribute="Normal Text" lineEndContext="literate-normal" name="normal">
+			<Detect2Chars attribute="Comment" context="comment_multi_line" char="{" char1="-" />
+			<Detect2Chars attribute="Comment" context="comment_single_line" char="-" char1="-" />
+			<keyword attribute="Keyword" context="#stay" String="keywords" />
+			<keyword attribute="Class" context="#stay" String="classes" />
+			<keyword attribute="Type Constructor" context="#stay" String="type constructors" />
+			<keyword attribute="Function" context="#stay" String="functions" />
+			<keyword attribute="Data Constructor" context="#stay" String="data constructors" />
+			<DetectChar attribute="String" context="string" char="&quot;" />
+			<DetectChar attribute="Infix Operator" context="infix" char="`"/>
+			<RegExpr attribute="Normal Text" context="#stay" String="\w[']+" />
+			<DetectChar attribute="Char" context="single_char" char="'" />
+			<RegExpr attribute="Function Definition" context="#stay" String="\s*[a-z_]+\w*'*\s*::" />
+			<Float attribute="Float" context="#stay" />
+			<Int attribute="Decimal" context="#stay" />
+		</context>
+		<context attribute="Comment" lineEndContext="#pop" name="comment_single_line" />
+		<context attribute="Comment" lineEndContext="#stay" name="comment_multi_line">
+			<Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" />
+		</context>
+		<context attribute="String" lineEndContext="#stay" name="string">
+			<RegExpr attribute="String" context="#stay" String="\\." />
+			<DetectChar attribute="String" context="#pop" char="&quot;" />
+		</context>
+		<context attribute="Infix Operator" lineEndContext="#stay" name="infix">
+			<DetectChar attribute="Infix Operator" context="#pop" char="`"/>
+		</context>
+		<context attribute="Char" lineEndContext="#pop" name="single_char">
+			<RegExpr attribute="Char" context="#stay" String="\\." />
+			<DetectChar attribute="Char" context="#pop" char="'" />
+		</context>
+		<context attribute="Function Definition" lineEndContext="#pop" name="function_definition">
+			<DetectChar attribute="Function Definition" context="#pop" char=";" />
+		</context>
+	</contexts>
+	<itemDatas>
+		<itemData name="Normal Text"		defStyleNum="dsNormal"/>
+		<itemData name="Keyword" 		defStyleNum="dsKeyword"/>
+		<itemData name="Function"		defStyleNum="dsFunction"/>
+		<itemData name="Function Definition"	defStyleNum="dsFunction"/>
+		<itemData name="Class"			defStyleNum="dsKeyword"/>
+		<itemData name="Decimal"		defStyleNum="dsDecVal"/>
+		<itemData name="Float"			defStyleNum="dsFloat"/>
+		<itemData name="Char"			defStyleNum="dsChar"/>
+		<itemData name="String"			defStyleNum="dsString"/>
+		<itemData name="Constructor"		defStyleNum="dsOthers"/>
+		<itemData name="Comment"		defStyleNum="dsComment"/>
+		<itemData name="Data Constructor"	defStyleNum="dsKeyword"/>
+		<itemData name="Type Constructor"	defStyleNum="dsDataType"/>
+		<itemData name="Infix Operator"		defStyleNum="dsOthers"/>
+		<itemData name="Special"		defStyleNum="dsChar"/>
+	</itemDatas>
+	</highlighting>
+	<general>
+		<keywords casesensitive="1" />
+	</general>
+</language>
diff --git a/xml/lua.xml b/xml/lua.xml
new file mode 100644
--- /dev/null
+++ b/xml/lua.xml
@@ -0,0 +1,295 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!--
+    LUA (www.lua.org) syntax highlighting for Kate
+
+    CHANGES
+
+    [ Version 1.02 (2007-07-15) by Bruno Massa ]
+
+    - based on Lua 5.1
+    - highlight the Kepler function (cgilua, luasql, lfs, luazip)
+    - true, false and nil are highlighted in black
+    - table.foreach and foreachi are marked as alerts
+
+    [ Version 1.01 (2007-01-01) by Bruno Massa ]
+
+    - highlighting similar to PHP
+    - error detection on one-line strings and common mistakes from other languages like using "!=" "++"
+    - uppercase-only variables are highlighted as constants
+    - { } now is collapsable
+
+    [ Version 1.00 (2006-12-05) by Bruno Massa ]
+
+    - based on Lua 5.0.2 syntax
+    - strings "[[ ]]" and single quoted strings
+    - block comments
+    - function, if/elseif/else, do-end chunks, comment blocks, strings using [[ ]] collapsable
+    - nil, false and true consided pseudo-variables (displayed as numbers)
+    - NOTE, FIXME, TODO alerts added on comments
+    - improved highlighting
+
+    -->
+<language name="Lua" version="1.02" kateversion="2.4" section="Scripts" extensions="*.lua" mimetype="text/x-lua">
+  <highlighting>
+    <list name="keywords">
+      <item> and </item>
+      <item> function </item>
+      <item> in </item>
+      <item> local </item>
+      <item> not </item>
+      <item> or </item>
+    </list>
+    <list name="control">
+      <item> break </item>
+      <item> do </item>
+      <item> else </item>
+      <item> elseif </item>
+      <item> end </item>
+      <item> for </item>
+      <item> if </item>
+      <item> repeat </item>
+      <item> return </item>
+      <item> then </item>
+      <item> until </item>
+      <item> while </item>
+    </list>
+    <list name="pseudo-variables">
+      <item> nil </item>
+      <item> false </item>
+      <item> true </item>
+    </list>
+    <list name="basefunc">
+      <item> string.byte </item>  <item> string.char </item>
+      <item> string.find </item>  <item> string.len </item>
+      <item> string.lower </item> <item> string.rep </item>
+      <item> string.sub </item>   <item> string.upper </item>
+      <item> string.format </item><item> string.gfind </item>
+      <item> string.gsub </item>  <item> table.concat </item>
+      <item> table.getn </item>   <item> table.sort </item>
+      <item> table.insert </item> <item> table.remove </item>
+      <item> table.setn </item>   <item> math.abs </item>
+      <item> math.sin </item>     <item> math.cos </item>
+      <item> math.tan </item>     <item> math.asin </item>
+      <item> math.acos </item>    <item> math.atan </item>
+      <item> math.atan2 </item>   <item> math.ceil </item>
+      <item> math.floor </item>   <item> math.mod </item>
+      <item> math.frexp </item>   <item> math.ldexp </item>
+      <item> math.squrt </item>   <item> math.min </item>
+      <item> math.max </item>     <item> math.log </item>
+      <item> math.log10 </item>   <item> math.exp </item>
+      <item> math.deg </item>     <item> math.rad </item>
+      <item> math.random </item>  <item> math.randomseed </item>
+      <item> io.close </item>     <item> io.flush </item>
+      <item> io.input </item>     <item> io.lines </item>
+      <item> io.open </item>      <item> io.output </item>
+      <item> io.read </item>      <item> io.stderr </item>
+      <item> io.stdin </item>     <item> io.stdout </item>
+      <item> io.tmpfile </item>   <item> io.write </item>
+      <item> os.clock </item>     <item> os.date </item>
+      <item> os.difftime </item>  <item> os.execute </item>
+      <item> os.exit </item>      <item> os.getenv </item>
+      <item> os.remove </item>    <item> os.rename </item>
+      <item> os.setlocale </item> <item> os.time </item>
+      <item> os.tmpname </item>   <item> debug.getinfo </item>
+      <item> debug.getlocal </item><item> debug.setlocal </item>
+      <item> debug.sethook </item><item> debug.gethook </item>
+      <item> assert </item>      <item> collectgarbage </item>
+      <item> dofile </item>      <item> error </item>
+      <item> next </item>        <item> print </item>
+      <item> rawget </item>      <item> rawset </item>
+      <item> tonumber </item>    <item> tostring </item>
+      <item> type </item>        <item> _ALERT </item>
+      <item> _ERRORMESSAGE </item><item> call </item>
+      <item> getmetatable </item><item> gcinfo </item>
+      <item> ipairs </item>      <item> loadfile </item>
+      <item> loadstring </item>  <item> pairs </item>
+      <item> pcall </item>       <item> require </item>
+      <item> LUA_PATH </item>    <item> setmetatable </item>
+      <item> _LOADED </item>     <item> _VERSION </item>
+      <item> gettagmethod </item><item> globals </item>
+      <item> newtag </item>      <item> setglobal </item>
+      <item> settag </item>      <item> settagmethod </item>
+      <item> setlinehook </item> <item> getglobals </item>
+      <item> copytagmethods </item><item> dostring </item>
+      <item> getglobal </item>   <item> tag </item>
+      <item> setglobals </item>  <item> unpack </item>
+      <item> exit </item>        <item> readfrom </item>
+      <item> writeto </item>     <item> appendto </item>
+      <item> read </item>        <item> write </item>
+      <item> getinfo </item>     <item> getlocal </item>
+      <item> setlocal </item>    <item> setcallhook </item>
+      <item> tinsert </item>     <item> tremove </item>
+      <item> flush </item>       <item> seek </item>
+      <item> setlocale </item>   <item> execute </item>
+      <item> remove </item>      <item> rename </item>
+      <item> tmpname </item>     <item> getenv </item>
+      <item> getn </item>        <item> sort </item>
+      <item> table.foreach </item> <item> table.foreachi </item>
+      <item> foreach </item>     <item> foreachi </item>
+      <item> abs </item>         <item> sin </item>
+      <item> cos </item>         <item> tan </item>
+      <item> asin </item>        <item> acos </item>
+      <item> atan </item>        <item> atan2 </item>
+      <item> ceil </item>        <item> floor </item>
+      <item> mod </item>         <item> frexp </item>
+      <item> ldexp </item>       <item> squrt </item>
+      <item> min </item>         <item> max </item>
+      <item> log </item>         <item> log10 </item>
+      <item> exp </item>         <item> deg </item>
+      <item> rad </item>         <item> random </item>
+      <item> randomseed </item>  <item> strlen </item>
+      <item> strsub </item>      <item> strlower </item>
+      <item> strupper </item>    <item> strchar </item>
+      <item> strrep </item>      <item> ascii </item>
+      <item> strbyte </item>     <item> format </item>
+      <item> strfind </item>     <item> gsub </item>
+      <item> openfile </item>    <item> closefile </item>
+      <item> date </item>        <item> clock </item>
+
+
+      <item> cgilua </item>                     <item> cgilua.lp.translate </item>
+      <item> cgilua.contentheader </item>       <item> cgilua.script_file </item>
+      <item> cgilua.header </item>              <item> cgilua.script_path </item>
+      <item> cgilua.htmlheader </item>          <item> cgilua.script_pdir </item>
+      <item> cgilua.redirect </item>            <item> cgilua.script_vdir </item>
+      <item> cgilua.mkabsoluteurl </item>       <item> cgilua.script_vpath </item>
+      <item> cgilua.mkurlpath </item>           <item> cgilua.servervariable </item>
+      <item> cgilua.put </item>                 <item> cgilua.urlpath </item>
+      <item> cgilua.handlelp </item>            <item> cgilua.errorlog </item>
+      <item> cgilua.lp.compile </item>          <item> cgilua.seterrorhandler </item>
+      <item> cgilua.lp.include </item>          <item> cgilua.seterroroutput </item>
+      <item> cgilua.lp.setcompatmode </item>    <item> cgilua.addclosefunction </item>
+      <item> cgilua.lp.setoutfunc </item>       <item> cgilua.addopenfunction </item>
+      <item> cgilua.addscripthandler </item>    <item> cgilua.addscripthandler </item>
+      <item> cgilua.buildprocesshandler </item> <item> cgilua.setmaxfilesize </item>
+      <item> cgilua.setmaxinput </item>         <item> cgilua.urlcode.encodetable </item>
+      <item> cgilua.urlcode.escape </item>      <item> cgilua.urlcode.parsequery </item>
+      <item> cgilua.urlcode.unescape </item>    <item> cgilua.urlcode.insertfield </item>
+      <item> cgilua.setoutfunc </item>          <item> cgilua.addopenfunction </item>
+      <item> cgilua.doif </item>                <item> cgilua.doscript </item>
+      <item> cgilua.pack </item>                <item> cgilua.splitpath </item>
+      <item> cgilua.cookies.get </item>         <item> cgilua.cookies.set </item>
+      <item> cgilua.cookies.sethtml </item>     <item> cgilua.cookies.delete </item>
+      <item> cgilua.serialize </item>           <item> cgilua.session.close </item>
+      <item> cgilua.session.data </item>        <item> cgilua.session.load </item>
+      <item> cgilua.session.new </item>         <item> cgilua.session.open </item>
+      <item> cgilua.session.save </item>        <item> cgilua.session.setsessiondir </item>
+      <item> cgilua.session.delete </item>      <item> cgilua.session </item>
+      <item> cgilua.cookies </item>
+
+      <item> numrows </item>                    <item> connect </item>
+      <item> close </item>                      <item> fetch </item>
+      <item> getcolnames </item>                <item> getcoltypes </item>
+      <item> commit </item>                     <item> rollback </item>
+      <item> setautocommit </item>
+
+      <item> lfs </item>                        <item> lfs.attributes </item>
+      <item> lfs.chdir </item>                  <item> lfs.currentdir </item>
+      <item> lfs.dir </item>                    <item> lfs.lock </item>
+      <item> lfs.mkdir </item>                  <item> lfs.rmdir </item>
+      <item> lfs.touch </item>                  <item> lfs.unlock </item>
+
+      <item> zip </item>                        <item> zip.open </item>
+      <item> zip.openfile </item>               <item> files </item>
+      <item> seek </item>                       <item> close </item>
+      <item> lines </item>
+
+
+    </list>
+    <list name="attention">
+      <item> TODO </item>
+      <item> FIXME </item>
+      <item> NOTE </item>
+    </list>
+
+    <list name="deprecated">
+      <item> table.foreach </item> <item> table.foreachi </item>
+      <item> foreach </item>     <item> foreachi </item>
+    </list>
+    <contexts>
+      <context name="Normal"        attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="##Doxygen" />
+        <keyword      attribute="Error"  context="#stay" String="deprecated" />
+        <DetectSpaces />
+        <Detect2Chars attribute="Comment"  context="Comment"       char="-" char1="-"/>
+        <Detect2Chars attribute="Strings"  context="String_block"  char="[" char1="[" />
+        <DetectChar   attribute="Strings"  context="String_single" char="'"/>
+        <DetectChar   attribute="Strings"  context="String_double" char="&quot;"/>
+        <keyword      attribute="BFunc"    context="#stay"         String="basefunc"/>
+
+        <RegExpr      attribute="Keyword"  context="#stay" beginRegion="chunk" String="\bfunction\b" />
+        <keyword      attribute="Keyword"  context="#stay" String="keywords" />
+        <keyword      attribute="Keyword"  context="#stay"  String="pseudo-variables" />
+        <RegExpr      attribute="Control"  context="#stay" endRegion="chunk"   beginRegion="chunk" String="\belse\b" />
+        <RegExpr      attribute="Control"  context="#stay" endRegion="chunk"   beginRegion="chunk" String="\belseif\b" />
+        <RegExpr      attribute="Control"  context="#stay" beginRegion="chunk" String="\bdo\b" />
+        <RegExpr      attribute="Control"  context="#stay" beginRegion="chunk" String="\bif\b" />
+        <RegExpr      attribute="Control"  context="#stay" endRegion="chunk"   String="\bend\b" />
+        <keyword      attribute="Control"  context="#stay" String="control" />
+
+        <DetectChar   attribute="Symbols"  context="#stay" beginRegion="table" char="{" />
+        <DetectChar   attribute="Symbols"  context="#stay" endRegion="table"   char="}" />
+
+        <RegExpr      attribute="Numbers"  context="#stay"  String="\b\d*\.?\d*(e|e\-|e\+)?\d+\b"/>
+        <RegExpr      attribute="Numbers"  context="#stay"  String="\b-?0[xX][0-9a-fA-F]+\b"/>
+
+        <RegExpr      attribute="Normal Text" context="#stay" String="\b[a-zA-Z_][a-zA-Z0-9_]*(?=\s*([({'&quot;]|\[\[))\b" />
+        <RegExpr      attribute="Constant" context="#stay" String="\b[A-Z_][A-Z0-9_]*\b" />
+        <RegExpr      attribute="Variable" context="#stay" String="\b[a-zA-Z_][a-zA-Z0-9_]*\b" />
+
+        <Detect2Chars attribute="Error"    context="#stay" char="!" char1="="/>
+        <Detect2Chars attribute="Error"    context="#stay" char="-" char1="="/>
+        <Detect2Chars attribute="Error"    context="#stay" char="+" char1="="/>
+        <Detect2Chars attribute="Error"    context="#stay" char="+" char1="+"/>
+        <Detect2Chars attribute="Error"    context="#stay" char="." char1="="/>
+        <AnyChar      attribute="Symbols"  context="#stay" String="[]().=~+-*/^&gt;&lt;#;" />
+      </context>
+      <context name="Comment"       attribute="Comment"     lineEndContext="#pop">
+        <Detect2Chars attribute="Comment"  context="Block Comment" beginRegion="block comment"  char="[" char1="[" />
+        <Detect2Chars attribute="Alerts"   context="#stay" char="-" char1="-" />
+        <keyword      attribute="Alerts"   context="#stay" String="attention"/>
+      </context>
+      <context name="Block Comment" attribute="Comment"     lineEndContext="#stay">
+        <Detect2Chars attribute="Comment"  context="#pop"  endRegion="block comment" char="]" char1="]"  />
+        <Detect2Chars attribute="Alerts"   context="#stay" char="-" char1="-" />
+        <keyword      attribute="Alerts"   context="#stay" String="attention" />
+      </context>
+      <context name="String_single" attribute="Strings"     lineEndContext="Error">
+        <RegExpr      attribute="Symbols"  context="#stay" String="\\(a|b|f|n|r|t|v|\\|&quot;|\'|[|])" />
+        <DetectChar   attribute="Strings"  context="#pop"  char="'"/>
+      </context>
+      <context name="String_double" attribute="Strings"     lineEndContext="Error">
+        <RegExpr      attribute="Symbols"  context="#stay" String="\\[abfnrtv'&quot;\\\[\]]" />
+        <DetectChar   attribute="Strings"  context="#pop"  char="&quot;"/>
+      </context>
+      <context name="String_block"  attribute="Strings"     lineEndContext="#stay">
+        <RegExpr      attribute="Symbols"  context="#stay" String="\\(a|b|f|n|r|t|v|\\|&quot;|\'|[|])" />
+        <Detect2Chars attribute="Strings"  context="#pop"  char="]" char1="]"  />
+      </context>
+      <context name="Error"         attribute="Error"       lineEndContext="#stay">
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Alerts"          defStyleNum="dsAlert" />
+      <itemData name="BFunc"           defStyleNum="dsFunction"/>
+      <itemData name="Comment"         defStyleNum="dsComment"/>
+      <itemData name="Constant"        defStyleNum="dsKeyword"/>
+      <itemData name="Control"         defStyleNum="dsKeyword" color="#A1A100" selColor="#ffffff" bold="0" italic="0"/>
+      <itemData name="Error"           defStyleNum="dsError"/>
+      <itemData name="Keyword"         defStyleNum="dsKeyword"/>
+      <itemData name="Normal Text"     defStyleNum="dsNormal"/>
+      <itemData name="Numbers"         defStyleNum="dsDecVal"/>
+      <itemData name="Strings"         defStyleNum="dsString"/>
+      <itemData name="Symbols"         defStyleNum="dsOthers"/>
+      <itemData name="Variable"        defStyleNum="dsKeyword" color="#5555FF" selColor="#ffffff" bold="0" italic="0" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="--" />
+      <comment name="multiLine" start="--[[" end="]]" />
+    </comments>
+    <keywords casesensitive="1" weakDeliminator="&#46;" additionalDeliminator="&quot;"/>
+  </general>
+</language>
diff --git a/xml/makefile.xml b/xml/makefile.xml
new file mode 100644
--- /dev/null
+++ b/xml/makefile.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!-- Makefile syntaxfile v0.9 by Per Wigren <wigren@home.se> -->
+<!-- Modified by Joseph Wenninger <jowenn@kde.org> -->
+<language name="Makefile" version="1.09" kateversion="2.4" section="Other" extensions="GNUmakefile;Makefile*;makefile*" mimetype="text/x-makefile" author="Per Wigren (wigren@home.se)" license="">
+  <highlighting>
+    <list name = "keywords">
+      <item> include </item>
+      <item> define </item>
+      <item> else </item>
+      <item> endef </item>
+      <item> endif </item>
+      <item> ifdef </item>
+      <item> ifeq </item>
+      <item> ifndef </item>
+      <item> ifneq </item>
+    </list>
+
+    <contexts>
+      <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+        <RegExpr attribute="Variable" context="Value" String="[_\w\d]*\s*(?=:=|=)"/>
+        <RegExpr attribute="Target" context="#stay" String="[_\w\d-]*\s*:" firstNonSpace="true"/>
+        <RegExpr attribute="Section" context="#stay" String="^[.].*:"/>
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <RegExpr attribute="Operator" context="VarFromNormal" String="[$][\({]"/>
+        <Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/>
+        <Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/>
+        <AnyChar attribute="Operator" context="#stay" String="+*=%$():\&#059;"/>
+        <AnyChar attribute="Operator" context="Commands" String="@-" firstNonSpace="true"/>
+        <RegExpr attribute="Comment" context="#stay" String="#.*$"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#pop" name="String">
+        <LineContinue attribute="String" context="#stay"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+
+      <context name="Value" attribute="String" lineEndContext="#stay">
+        <RegExpr attribute="Operator" String="\\$"     context="#stay"/>
+        <RegExpr attribute="String"   String="[^\\]?$" context="#pop"/>
+        <RegExpr attribute="Operator" String="[$][\({]" context="VarFromValue"/>
+        <RegExpr attribute="Special" context="#pop" String="@[-_\d\w]*@" />
+        <DetectChar attribute="Operator" char="&#059;" context="#pop"/>
+      </context>
+
+      <context name="VarFromValue" attribute="Variable" lineEndContext="#stay">
+        <RegExpr attribute="Operator" String="[\)}](?=/)" context="#pop"/>
+        <RegExpr attribute="Operator" String="[\)}][^$]" context="#pop"/>
+        <RegExpr attribute="Operator" String="[\)}]$" context="#pop#pop"/>
+      </context>
+
+      <context name="VarFromNormal" attribute="Variable" lineEndContext="#stay">
+        <AnyChar attribute="Operator" String=")}" context="#pop"/>
+      </context>
+
+      <context name="Commands" attribute="Normal Text" lineEndContext="#pop">
+        <RegExpr attribute="Operator" context="VarFromNormal" String="[$][\({]"/>
+        <RegExpr attribute="Commands" context="#pop" String="[_\w-]*\b"/>
+      </context>
+
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Keyword"     defStyleNum="dsKeyword"/>
+      <itemData name="Comment"     defStyleNum="dsComment"/>
+      <itemData name="String"      defStyleNum="dsString"/>
+      <itemData name="Variable"    defStyleNum="dsDataType"/>
+      <itemData name="Target"      defStyleNum="dsDecVal"/>
+      <itemData name="Section"     defStyleNum="dsOthers"/>
+      <itemData name="Operator"    defStyleNum="dsChar"/>
+      <itemData name="Commands"    defStyleNum="dsBaseN"/>
+      <itemData name="Special"    defStyleNum="dsFloat"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name = "singleLine" start = "#"/>
+    </comments>
+    <keywords casesensitive = "1" />
+  </general>
+</language>
diff --git a/xml/matlab.xml b/xml/matlab.xml
new file mode 100644
--- /dev/null
+++ b/xml/matlab.xml
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ====================================================================
+  MATLAB syntax highlighting file for the KDE editors Kate and Kwrite
+  ====================================================================
+      works (at least) for MATLAB versions 5.3, 6.0, 6.1, 6.5, 6.5sp1
+      works with Kate 2.2 and with Kwrite 4.2 (KDE 3.2)
+
+  This file works only for syntactically correct MATLAB code. For incorrect
+  code, the behaviour is undefined. One exception is made: Incomplete strings
+  with missing closing delimiter are highlighted separately, just as in the
+  native editor of MATLAB does.
+
+  Highlighting errors never propagate across line breaks.
+
+  Most of this XML file is straight and simple. Only the character ' (&apos;)
+  needs nontrivial treatment, since it is both a postfix operator indicating
+  complex conjugate transpose (adjoint) and a string delimiter. It is an
+  adjoint operator in the following positions:
+  1) immediately after an identifier (variable, function, but not keyword)
+  2) immediately after a number literal
+  3) immediately after the closing parenthesis ), ] and }
+  4) immediately after a simple transpose operator .'
+  5) immediately after another adjoint operator '
+  In all other cases it is a string delimiter.
+
+  This is implemented using look-ahead regexps. If one of the entities in the
+  above cases 1-4 (identifier, number literal, ...) matches and look-ahead
+  shows that it is followed by a ', the entity is highlighted and control is
+  passed to the special context _adjoint, whose sole purpose is to correctly
+  highlight a series of ' (thus covering case 5 as well). _adjoint immediately
+  returns to the default context _normal.
+
+  MATLAB number literals are different from those in C and similar languages:
+  a) All numbers literals are doubles. There is no distinction between float and int.
+  b) There is no notation of hex or oct base integers.
+  c) The symbols i or j may be attached to a number to indicate a multiplication
+     with the imaginary unit.
+
+  MATLAB identifiers have to start with a letter followed by any number of letters,
+  digits and underscores.
+
+  There is a small number of reserved keywords, which cannot be the target of an
+  assignment. All other identifiers (including all of the many 100s of MATLAB commands)
+  can be redefined. Consequently, only the reserved keywords are highlighted.
+
+  At the end of the XML file, there is MATLAB testing code for developers.
+
+  Change log:
+  19-Nov-03  Created from scratch.
+  08-Mar-04  Small corrections. Added default colors of MATLAB editor.
+
+  Author: Stefan Stoll, Swiss Federal Institute of Technology, Zurich
+-->
+
+<!DOCTYPE language SYSTEM "language.dtd">
+
+<language name="Matlab" version="1.20" kateversion="2.2" section="Scientific" extensions="*.m;*.M" mimetype="text/mfile" casesensitive="1">
+  <highlighting>
+
+    <!-- Reserved keywords in MATLAB -->
+    <list name="KeywordsList">
+      <item> break </item>
+      <item> case </item>
+      <item> catch </item>
+      <item> continue </item>
+      <item> else </item>
+      <item> elseif </item>
+      <item> end </item>
+      <item> for </item>
+      <item> function </item>
+      <item> global </item>
+      <item> if </item>
+      <item> otherwise </item>
+      <item> persistent </item>
+      <item> return </item>
+      <item> switch </item>
+      <item> try </item>
+      <item> while </item>
+    </list>
+
+    <contexts>
+
+      <context name="_normal" attribute="Normal Text" lineEndContext="#pop">
+
+        <!-- Look-ahead for adjoint ' after variable, number literal, closing braces and .' -->
+        <RegExpr context="_adjoint" attribute="Variable" String="[a-zA-Z]\w*(?=')" />
+        <RegExpr context="_adjoint" attribute="Number" String="(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?[ij]?(?=')" />
+        <RegExpr context="_adjoint" attribute="Delimiter" String="[\)\]}](?=')" />
+        <RegExpr context="_adjoint" attribute="Operator" String="\.'(?=')" />
+
+        <!-- If ' is not the adjoint operator, it starts a string or an unterminated string -->
+        <RegExpr context="#stay" attribute="String" String="'[^']*(''[^']*)*'(?=[^']|$)" />
+        <RegExpr context="#stay" attribute="Incomplete String" String="'[^']*(''[^']*)*" />
+
+        <!-- Handling of keywords, comments, system commands, identifiers, numbers and braces -->
+        <keyword context="#stay" attribute="Keyword" String="KeywordsList" />
+        <RegExpr context="#stay" attribute="Comment" String="%.*$" />
+        <RegExpr context="#stay" attribute="System" String="!.*$" />
+        <RegExpr context="#stay" attribute="Variable" String="[a-zA-Z]\w*" />
+        <RegExpr context="#stay" attribute="Number" String="(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?[ij]?" />
+        <AnyChar context="#stay" attribute="Delimiter" String="()[]{}"/>
+
+        <!-- Three and two-character operators -->
+        <StringDetect context="#stay" attribute="Operator" String="..."/>
+        <StringDetect context="#stay" attribute="Operator" String="=="/>
+        <StringDetect context="#stay" attribute="Operator" String="~="/>
+        <StringDetect context="#stay" attribute="Operator" String="&lt;="/>
+        <StringDetect context="#stay" attribute="Operator" String="&gt;="/>
+        <StringDetect context="#stay" attribute="Operator" String="&amp;&amp;"/>
+        <StringDetect context="#stay" attribute="Operator" String="||"/>
+        <StringDetect context="#stay" attribute="Operator" String=".*"/>
+        <StringDetect context="#stay" attribute="Operator" String=".^"/>
+        <StringDetect context="#stay" attribute="Operator" String="./"/>
+        <StringDetect context="#stay" attribute="Operator" String=".'"/>
+
+        <!-- Single-character operators -->
+        <AnyChar context="#stay" attribute="Operator" String="*+-/\&amp;|&lt;&gt;~^=,;:@"/>
+
+      </context>
+
+      <!-- Context entered after encountering an ' adjoint operator -->
+      <context name="_adjoint" attribute="Operator" lineEndContext="#pop">
+        <RegExpr context="#pop" attribute="Operator" String="'+" />
+      </context>
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal" />
+      <itemData name="Variable" defStyleNum="dsNormal" />
+      <itemData name="Operator" defStyleNum="dsNormal"/>
+      <itemData name="Number" defStyleNum="dsFloat" />
+      <itemData name="Delimiter" defStyleNum="dsNormal" />
+      <itemData name="String" defStyleNum="dsString" color="#b20000"/>
+      <itemData name="System" defStyleNum="dsBaseN" color="#b28c00"/>
+      <itemData name="Incomplete String" defStyleNum="dsChar" color="#a020f0"/>
+      <itemData name="Keyword"  defStyleNum="dsNormal" color="#0000ff"/>
+      <itemData name="Comment" defStyleNum="dsComment" color="#009900"/>
+    </itemDatas>
+    <!-- MATLAB 6.5 default color scheme
+          keywords             #0000ff
+          comments             #228b22
+          strings              #b20000
+          unterminated strings #a020f0
+          system commands      #b28c00
+          errors               #ff0000
+          all others           #000000
+    -->
+
+  </highlighting>
+
+  <general>
+    <comments>
+      <comment name="singleLine" start="% " />
+    </comments>
+    <keywords casesensitive="1" weakDeliminator=""/>
+  </general>
+
+</language>
+<!--
+%%=====================================================
+% MATLAB test code for Kate/Kwrite syntax highlighting
+%%=====================================================
+
+% Numbers _____________________________________________
+5, 5.5, .1, 0.1, 0.4e5, 1.2e-5, 5i, 5.3i, 6j, .345+3i
+5', 5.5', .1', 0.1', 0.4e5', 1.2e-5', 5i', 5.3i', 6j', .345+3i'
+
+% Operators ___________________________________________
+% relational operators
+'asdf'~=4, c<=4, d>=4, a<b, a>b, a==b, b||c, b&&c
+% elementwise arithmetic operators
+a.^b, a.*b a./b, 1:4:5
+% single-character binary arithmetic
+a+3, a-3, a*2, a^3, a/3, a\3, a|b, a&b
+% unary operators
+a = ~g; g = @sfdgdsf(sdfsd,345); g.' + 1i.' - ('asdf').'
+% separators and delimiter
+(asd),[sadf];{asdf},;;,;;;()
+% continuation
+a = 1+ ...
+  2;
+
+% Strings and adjoint _________________________________
+% incomplete strings
+'string
+'str''
+'str''ing
+% complete strings
+'string' % simple string
+'''' % string containing '
+'str''ing' % one string containing '
+'string' 'string'  % two strings
+'asdf'  'asdf''' variable  % two strings and a variable
+'asdf''asdf''   fsgdfg' + (asdf)' - 'asdf'.' + []''''.';''
+'sadf'.' % string transpose
+% adjoint
+{'asdf'}' + 1
+('asdf')' + 1
+['asdf']' + 1
+'' var''' % empty string, var with >1 adjoints
+[5]'*{5}'*('asd')'.'+(5)'*6'*asdf'*asdf'.'  % many adjoints
+A'*B + 1      % adjoint
+A.'*B + 1     % transpose
+A.'.'*B + 1   % double transpose
+A'.' + 1      % adjoint, then transpose
+A.''          % transpose, then adjoint
+
+% System command ______________________________________
+!hostname
+!cp * /tmp
+
+% Reserved keywords ___________________________________
+function, persistent, global
+switch, case, otherwise
+if, else, elseif
+try, catch
+for, while, break, continue
+end, return
+function, FUNCTION, Function  % case sensitive!
+-->
diff --git a/xml/mediawiki.xml b/xml/mediawiki.xml
new file mode 100644
--- /dev/null
+++ b/xml/mediawiki.xml
@@ -0,0 +1,98 @@
+<?xml version = '1.0' encoding = 'UTF-8'?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="MediaWiki" section="Markup" version="1.02" kateversion="2.4" extensions="" mimetype="" license="FDL" >
+  <highlighting>
+    <contexts>
+      <context attribute="Normal" lineEndContext="#stay" name="normal" >
+        <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />
+        <RegExpr String="([=]{2,2}[^=]+[=]{2,2}|[=]{3,3}[^=]+[=]{3,3}|[=]{4,4}[^=]+[=]{4,4}|[=]{5,5}[^=]+[=]{5,5})" attribute="Section" column="0" />
+        <RegExpr String="[~]{3,4}" attribute="Wiki-Tag" context="#stay" />
+        <RegExpr String="[*#;:\s]*[*#:]+" attribute="Wiki-Tag" context="#stay" column="0" />
+        <RegExpr String="[[](?![[])" attribute="Wiki-Tag" context="URL" />
+        <RegExpr String="(http:|ftp:|mailto:)[\S]*($|[\s])" attribute="URL" context="#stay" />
+        <RegExpr String="[']{2,}" attribute="Wiki-Tag" context="#stay" />
+        <Detect2Chars char="{" char1="|" context="Table" attribute="Wiki-Tag" column="0" beginRegion="table" />
+        <Detect2Chars char="{" char1="{" context="Template" attribute="Wiki-Tag" />
+        <Detect2Chars char="[" char1="[" context="WikiLink" attribute="Wiki-Tag" />
+        <RangeDetect char="&amp;" char1=";" attribute="HTML-Entity" context="#stay" />
+        <StringDetect String="&lt;nowiki&gt;" context="NoWiki" attribute="Wiki-Tag" />
+        <StringDetect String="&lt;pre&gt;" context="Pre" attribute="HTML-Tag" />
+        <RegExpr String="[&lt;][^&gt;]+[&gt;]" attribute="HTML-Tag" context="#stay" />
+        <RegExpr String="[\s]" context="Unformatted" column="0" />
+      </context>
+      <context attribute="Normal" lineEndContext="#stay" name="Table" >
+        <StringDetect String="&lt;!--" context="comment" attribute="Comment" />
+        <RegExpr String="([=]{2,2}[^=]+[=]{2,2}|[=]{3,3}[^=]+[=]{3,3}|[=]{4,4}[^=]+[=]{4,4}|[=]{5,5}[^=]+[=]{5,5})" attribute="Section" context="#stay" column="0" />
+        <RegExpr String="[*#;:\s]*[*#:]+" attribute="Wiki-Tag" context="#stay" column="0" />
+        <RegExpr String="[[](?![[])" context="URL" attribute="Wiki-Tag" />
+        <RegExpr String="(http:|ftp:|mailto:)[\S]*($|[\s])" attribute="URL" context="#stay" />
+        <RegExpr String="[']{2,}" attribute="Wiki-Tag" context="#stay" />
+        <Detect2Chars char="|" char1="}" context="#pop" attribute="Wiki-Tag" column="0" endRegion="table" />
+        <DetectChar char="|" attribute="Wiki-Tag" context="#stay"/>
+        <Detect2Chars char="{" char1="{" context="Template" attribute="Wiki-Tag" />
+        <Detect2Chars char="[" char1="[" context="WikiLink" attribute="Wiki-Tag" />
+        <RangeDetect char="&amp;" char1=";" attribute="HTML-Entity" context="#stay" />
+        <StringDetect String="&lt;nowiki&gt;" context="NoWiki" attribute="Wiki-Tag" />
+        <StringDetect String="&lt;pre&gt;" context="Pre" attribute="HTML-Tag" />
+        <RegExpr String="[&lt;][^&gt;]+[&gt;]" attribute="HTML-Tag" context="#stay" />
+        <RegExpr String="[\s]" context="Unformatted" column="0" />
+        <RegExpr String="[~]{3,4}" attribute="Wiki-Tag" context="#stay" />
+        <RegExpr String="[-]{4,}" attribute="Wiki-Tag" context="#stay" />
+        <DetectChar char="!" attribute="Wiki-Tag" context="#stay" column="0" />
+      </context>
+      <context attribute="Comment" lineEndContext="#stay" name="comment" >
+        <StringDetect String="--&gt;" context="#pop" attribute="Comment" endRegion="comment" />
+      </context>
+      <context attribute="Link" lineEndContext="#stay" name="URL" >
+        <DetectChar char="]" context="#pop" attribute="Wiki-Tag" />
+        <DetectChar char="'" context="Error" attribute="Error" />
+      </context>
+      <context attribute="Link" lineEndContext="#stay" name="WikiLink" >
+        <DetectChar char="|" attribute="Wiki-Tag" context="WikiLinkDescription" />
+        <Detect2Chars char="]" char1="]" context="#pop" attribute="Wiki-Tag" />
+        <DetectChar char="'" context="Error" attribute="Error" />
+      </context>
+      <context attribute="Link" lineEndContext="#stay" name="WikiLinkDescription" >
+        <Detect2Chars char="]" char1="]" context="#pop" attribute="Wiki-Tag" lookAhead="true" />
+      </context>
+      <context attribute="Template" lineEndContext="#stay" name="Link" >
+        <Detect2Chars char="}" char1="}" context="#pop" attribute="Wiki-Tag" />
+        <AnyChar String="'[]" context="Error" attribute="Error" />
+      </context>
+      <context attribute="Error" lineEndContext="#pop" name="Error" />
+      <context attribute="Link" lineEndContext="#stay" name="Template" >
+        <Detect2Chars char="}" char1="}" context="#pop" attribute="Wiki-Tag" />
+        <DetectChar char="'" context="Error" attribute="Error" />
+      </context>
+      <context attribute="NoWiki" lineEndContext="#stay" name="NoWiki" >
+        <RegExpr String="&lt;!--[^-]*--&gt;" attribute="NoWiki" />
+        <StringDetect String="&lt;/nowiki&gt;" context="#pop" attribute="Wiki-Tag" />
+        <RegExpr String="[&lt;][^&gt;]+[&gt;]" attribute="HTML-Tag" context="#stay" />
+        <StringDetect String="&lt;pre&gt;" context="Pre" attribute="HTML-Tag" />
+      </context>
+      <context attribute="Unformatted" lineEndContext="#pop" name="Unformatted" />
+      <context attribute="NoWiki" lineEndContext="#stay" name="Pre" >
+      <StringDetect String="&lt;/pre&gt;" context="#pop" attribute="Wiki-Tag" />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal" defStyleNum="dsNormal" />
+      <itemData name="Link" defStyleNum="dsOthers" />
+      <itemData name="URL" defStyleNum="dsOthers" />
+      <itemData name="Comment" defStyleNum="dsComment" />
+      <itemData name="Section" defStyleNum="dsKeyword" />
+      <itemData name="HTML-Entity" defStyleNum="dsDecVal" />
+      <itemData name="HTML-Tag" defStyleNum="dsKeyword" />
+      <itemData name="Wiki-Tag" defStyleNum="dsDecVal" bold="true" />
+      <itemData name="Error" defStyleNum="dsError" />
+      <itemData name="NoWiki" defStyleNum="dsNormal" />
+      <itemData name="Unformatted" defStyleNum="dsNormal" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment end="//-->" start="&lt;!--" name="multiLine" />
+    </comments>
+    <keywords casesensitive="0" />
+  </general>
+</language>
diff --git a/xml/modula-3.xml b/xml/modula-3.xml
new file mode 100644
--- /dev/null
+++ b/xml/modula-3.xml
@@ -0,0 +1,315 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!-- author ik Iztok Kobal (iztok.kobal@siol.net) -->
+<!-- followed CM3 documentation (http://www.elegosoft.com/cm3/doc/reference/index.html , chapter Syntax) -->
+<!-- 03.03.2005 ik mailed version 1.00 to Dominik Haumann <dhdev@gmx.de> of kate team -->
+<!-- 04.03.2005 ik mailed version 1.01 with fixed/implemented nested comments to Dominik -->
+<!-- known bug: notation Regexp( [0-9]*\. ) should be not interpreted as neither Integer neither Real -->
+<!-- known bug: notation Regexp ( "  \" " ) is not properly interpreted -->
+<language name="Modula-3" version="1.01" kateversion="2.1" section="Sources" extensions="*.m3;*.i3;*.ig;*.mg;" mimetype="text/x-modula-3" license="LGPL">
+  <highlighting>
+    <list name="keywords">
+<!--      <item> AND </item> -->
+      <item> ANY </item>
+      <item> ARRAY </item>
+      <item> AS </item>
+      <item> BEGIN </item>
+      <item> BITS </item>
+      <item> BRANDED </item>
+      <item> BY </item>
+      <item> CASE </item>
+      <item> CONST </item>
+<!--      <item> DIV </item> -->
+      <item> DO </item>
+      <item> ELSE </item>
+      <item> ELSIF </item>
+      <item> END </item>
+      <item> EVAL </item>
+      <item> EXCEPT </item>
+      <item> EXCEPTION </item>
+      <item> EXIT </item>
+      <item> EXPORTS </item>
+      <item> FINALLY </item>
+      <item> FOR </item>
+      <item> FROM </item>
+      <item> GENERIC </item>
+      <item> IF </item>
+      <item> IMPORT </item>
+<!--      <item> IN </item> -->
+      <item> INTERFACE </item>
+      <item> LOCK </item>
+      <item> LOOP </item>
+      <item> METHODS </item>
+<!--      <item> MOD </item> -->
+      <item> MODULE </item>
+<!--      <item> NOT </item> -->
+      <item> OBJECT </item>
+      <item> OF </item>
+<!--      <item> OR </item> -->
+      <item> OVERRIDES </item>
+      <item> PROCEDURE </item>
+      <item> RAISE </item>
+      <item> RAISES </item>
+      <item> READONLY </item>
+      <item> RECORD </item>
+      <item> REF </item>
+      <item> REPEAT </item>
+      <item> RETURN </item>
+      <item> REVEAL </item>
+      <item> ROOT </item>
+      <item> SET </item>
+      <item> THEN </item>
+      <item> TO </item>
+      <item> TRY </item>
+      <item> TYPE </item>
+      <item> TYPECASE </item>
+      <item> UNSAFE </item>
+      <item> UNTIL </item>
+      <item> UNTRACED </item>
+      <item> VALUE </item>
+      <item> VAR </item>
+      <item> WHILE </item>
+      <item> WITH </item>
+    </list>
+    <list name="operators">
+      <item> AND </item> 
+      <item> DIV </item> 
+      <item> IN </item> 
+      <item> MOD </item>
+      <item> NOT </item>
+      <item> OR </item>
+      <item> + </item>
+      <item> &lt; </item>
+      <item> # </item>
+      <item> = </item>
+      <item> ; </item>
+      <item> .. </item>
+      <item> : </item>
+      <item> - </item>
+      <item> &gt; </item>
+      <item> { </item>
+      <item> } </item>
+      <item> | </item>
+      <item> := </item>
+      <item> &lt;: </item>
+      <item> * </item>
+      <item> &lt;= </item>
+      <item> ( </item>
+      <item> ) </item>
+      <item> ^ </item>
+      <item> , </item>
+      <item> =&gt; </item>
+      <item> / </item>
+      <item> &gt;= </item>
+      <item> [ </item>
+      <item> ] </item>
+      <item> . </item>
+      <item> &amp; </item>
+    </list>
+    <list name="types">
+      <item> ADDRESS </item>
+      <item> BOOLEAN </item>
+      <item> CARDINAL </item>
+      <item> CHAR </item>
+      <item> EXTENDED </item>
+      <item> INTEGER </item>
+      <item> LONGREAL </item>
+      <item> MUTEX </item>
+      <item> NULL </item>
+      <item> REAL </item>
+      <item> REFANY </item>
+      <item> T </item>
+      <item> TEXT </item>
+    </list>
+    <list name="constants">
+      <item> FALSE </item>
+      <item> NIL </item>
+      <item> TRUE </item>
+    </list>
+    <list name="pervasives">
+      <item> ABS </item>
+      <item> ADR </item>
+      <item> ADRSIZE </item>
+      <item> BITSIZE </item>
+      <item> BYTESIZE </item>
+      <item> CEILING </item>
+      <item> DEC </item>
+      <item> DISPOSE </item>
+      <item> FIRST </item>
+      <item> FLOAT </item>
+      <item> FLOOR </item>
+      <item> INC </item>
+      <item> ISTYPE </item>
+      <item> LAST </item>
+      <item> LOOPHOLE </item>
+      <item> MAX </item>
+      <item> MIN </item>
+      <item> NARROW </item>
+      <item> NEW </item>
+      <item> NUMBER </item>
+      <item> ORD </item>
+      <item> ROUND </item>
+      <item> SUBARRAY </item>
+      <item> TRUNC </item>
+      <item> TYPECODE </item>
+      <item> VAL </item>
+    </list>
+    <list name="stdlibs">
+      <item> Text </item>
+      <item> Text.Length </item>
+      <item> Text.Empty </item>
+      <item> Text.Equal </item>
+      <item> Text.Compare </item>
+      <item> Text.Cat </item>
+      <item> Text.Sub </item>
+      <item> Text.Hash </item>
+      <item> Text.HasWideChar </item>
+      <item> Text.GetChar </item>
+      <item> Text.GetWideChar </item>
+      <item> Text.SetChars </item>
+      <item> Text.SetWideChars </item>
+      <item> Text.FromChars </item>
+      <item> Text.FromWideChars </item>
+      <item> Text.FindChar </item>
+      <item> Text.FindWideChar </item>
+      <item> Text.FindCharR </item>
+      <item> Text.FindWideCharR </item>
+      <item> Fmt </item>
+      <item> Fmt.Bool </item>
+      <item> Fmt.Char </item>
+      <item> Fmt.Int </item>
+      <item> Fmt.Unsigned </item>
+      <item> Fmt.Real </item>
+      <item> Fmt.LongReal </item>
+      <item> Fmt.Extended </item>
+      <item> Fmt.Pad </item>
+      <item> Fmt.F </item>
+      <item> Fmt.FN </item>
+      <item> Scan </item>
+      <item> Scan.Bool </item>
+      <item> Scan.Int </item>
+      <item> Scan.Unsigned </item>
+      <item> Scan.Real </item>
+      <item> Scan.LongReal </item>
+      <item> Scan.Extended </item>
+      <item> IO </item>
+      <item> IO.Put </item>
+      <item> IO.PutChar </item>
+      <item> IO.PutWideChar </item>
+      <item> IO.PutInt </item>
+      <item> IO.PutReal </item>
+      <item> IO.EOF </item>
+      <item> IO.GetLine </item>
+      <item> IO.GetChar </item>
+      <item> IO.GetWideChar </item>
+      <item> IO.GetInt </item>
+      <item> IO.GetReal </item>
+      <item> IO.OpenRead </item>
+      <item> IO.OpenWrite </item>
+      <item> Rd </item>
+      <item> Rd.GetChar </item>
+      <item> Rd.GetWideChar </item>
+      <item> Rd.EOF </item>
+      <item> Rd.UnGetChar </item>
+      <item> Rd.CharsReady </item>
+      <item> Rd.GetSub </item>
+      <item> Rd.GetWideSub </item>
+      <item> Rd.GetSubLine </item>
+      <item> Rd.GetWideSubLine </item>
+      <item> Rd.GetText </item>
+      <item> Rd.GetWideText </item>
+      <item> Rd.GetLine </item>
+      <item> Rd.GetWideLine </item>
+      <item> Rd.Seek </item>
+      <item> Rd.Close </item>
+      <item> Rd.Index </item>
+      <item> Rd.Length </item>
+      <item> Rd.Intermittend </item>
+      <item> Rd.Seekable </item>
+      <item> Rd.Closed </item>
+      <item> Wr </item>
+      <item> Wr.PutChar </item>
+      <item> Wr.PutWideChar </item>
+      <item> Wr.PutText </item>
+      <item> Wr.PutWideText </item>
+      <item> Wr.PutString </item>
+      <item> Wr.PutWideString </item>
+      <item> Wr.Seek </item>
+      <item> Wr.Flush </item>
+      <item> Wr.Close </item>
+      <item> Wr.Length </item>
+      <item> Wr.Index </item>
+      <item> Wr.Seekable </item>
+      <item> Wr.Closed </item>
+      <item> Wr.Buffered </item>
+      <item> Lex </item>
+      <item> Lex.Scan </item>
+      <item> Lex.Skip </item>
+      <item> Lex.Match </item>
+      <item> Lex.Bool </item>
+      <item> Lex.Int </item>
+      <item> Lex.Unsigned </item>
+      <item> Lex.Real </item>
+      <item> Lex.LongReal </item>
+      <item> Lex.Extended </item>
+      <item> Params </item>
+      <item> Params.Count </item>
+      <item> Params.Get </item>
+      <item> Env </item>
+      <item> Env.Count </item>
+      <item> Env.Get </item>
+      <item> Env.GetNth </item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+        <RegExpr attribute="Keyword" context="#stay" String="PROCEDURE[\s].*\(" beginRegion="Proc"/>
+        <RegExpr attribute="Keyword" context="#stay" String="END\s*[A-Za-z][A-Za-z0-9_]*\;" endRegion="Proc"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\b(RECORD|OBJECT|TRY|WHILE|FOR|REPEAT|LOOP|IF|CASE|WITH)\b" beginRegion="Block"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\b(END;|END)\b" endRegion="Block"/>
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+        <keyword attribute="Operator" context="#stay" String="operators"/>
+        <keyword attribute="Type" context="#stay" String="types"/>
+        <keyword attribute="Constant" context="#stay" String="constants"/>
+        <keyword attribute="Pervasive" context="#stay" String="pervasives"/>
+        <keyword attribute="StdLib" context="#stay" String="stdlibs"/>
+        <RegExpr attribute="Real" context="#stay" String="\b[\+|\-]{0,1}[0-9]{1,}\.[0-9]{1,}([E|e|D|d|X|x][\+|\-]{0,1}[0-9]{1,}){0,1}\b"/>
+        <RegExpr attribute="Integer" context="#stay" String="\b([\+|\-]{0,1}[0-9]{1,}|([2-9]|1[0-6])\_[0-9A-Fa-f]{1,})\b"/>
+        <DetectChar attribute="String" context="String1" char="&quot;"/>
+        <RegExpr attribute="Char" context="#stay" String="\'(.|\\[ntrf\\'&quot;]|\\[0-7]{3})\'"/>
+        <Detect2Chars attribute="Pragma" context="Prep1" char="&lt;" char1="*"/>
+        <Detect2Chars attribute="Comment" context="Comment2" char="(" char1="*" beginRegion="Comment"/>
+      </context>
+      <context attribute="String" lineEndContext="#pop" name="String1">
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+      <context attribute="Comment" lineEndContext="#stay" name="Comment2">
+        <Detect2Chars attribute="Comment" context="Comment2" char="(" char1="*" beginRegion="Comment"/>
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" endRegion="Comment"/>
+      </context>
+      <context attribute="Pragma" lineEndContext="#stay" name="Prep1">
+        <Detect2Chars attribute="Pragma" context="#pop" char="*" char1="&gt;"/>
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Operator" defStyleNum="dsKeyword"/>
+      <itemData name="Type" defStyleNum="dsDataType"/>
+      <itemData name="Integer" defStyleNum="dsBaseN"/>
+      <itemData name="Real" defStyleNum="dsFloat"/>
+      <itemData name="Constant" defStyleNum="dsDecVal"/>
+      <itemData name="String" defStyleNum="dsString"/>
+      <itemData name="Char" defStyleNum="dsChar"/>
+      <itemData name="Pervasive" defStyleNum="dsFunction"/>
+      <itemData name="StdLib" defStyleNum="dsFunction"/>
+      <itemData name="Comment" defStyleNum="dsComment" bold="0" italic="1"/>
+      <itemData name="Pragma" defStyleNum="dsOthers" bold="0" italic="1"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <keywords casesensitive="1" weakDeliminator="."/>
+    <comments>
+      <comment name="multiLine" start="(*" end="*)"/>
+    </comments>
+  </general>
+</language>
diff --git a/xml/nasm.xml b/xml/nasm.xml
new file mode 100644
--- /dev/null
+++ b/xml/nasm.xml
@@ -0,0 +1,888 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!--
+  NASM Intel x86 assembly syntax
+
+  Created: Nicola Gigante <nicola.gigante@gmail.com>
+    Changes: Bogdan Drozdowski (bogdandr@op.pl)
+  Version: 1.3
+
+Changes from 1.0:
+  15/01/2006: version 1.1
+    Added the rol instruction (bytewise rotate left) to the keywords list.
+  17/01/2006: version 1.2
+    Remade the list of instructions directly from the nasm documentation.
+  22/04/2006: version 1.3 from Bogdan Drozdowski (bogdandr@op.pl):
+    Removed duplicates form the instruction list and made it alphabetical.
+    Added new instructions (some SSE* and 64-bit, NASM may not know all of them).
+    Corrections in register list and a few new ones (not 64-bit).
+    Changed regexes for hex, octal and bin numbers. Now words like
+      "change" and "blah" will NOT have the "ch" and "ah" coloured.
+
+  GNU GENERAL PUBLIC LICENCE
+
+This program, including associated files, is free software.  You may
+distribute it and/or modify it under the terms of the GNU General Public
+License as published by the Free Software Foundation; either Version 2 of
+the license, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+-->
+<language name="Intel x86 (NASM)" section="Assembler" version="1.30" kateversion="2.3" extensions="*.asm" mimetype="" author="Nicola Gigante (nicola.gigante@gmail.com)" license="GPL">
+  <highlighting>
+    <list name="registers">
+      <!-- General purpose registers -->
+      <item>eax</item>
+      <item>ax</item>
+      <item>ah</item>
+      <item>al</item>
+      <item>ebx</item>
+      <item>bx</item>
+      <item>bh</item>
+      <item>bl</item>
+      <item>ecx</item>
+      <item>cx</item>
+      <item>ch</item>
+      <item>cl</item>
+      <item>edx</item>
+      <item>dx</item>
+      <item>dh</item>
+      <item>dl</item>
+      <item>ebp</item>
+      <item>bp</item>
+      <item>esi</item>
+      <item>si</item>
+      <item>edi</item>
+      <item>di</item>
+      <!--
+      <item>eip</item>
+      <item>ip</item>
+      -->
+      <item>esp</item>
+      <item>sp</item>
+      <!-- Segmentation registers -->
+      <item>cs</item>
+      <item>ds</item>
+      <item>es</item>
+      <item>fs</item>
+      <item>gs</item>
+      <item>ss</item>
+      <!-- Control registers -->
+      <item>cr0</item>
+      <!--<item>cr1</item>-->
+      <item>cr2</item>
+      <item>cr3</item>
+      <item>cr4</item>
+      <!-- Debug registers -->
+      <item>dr0</item>
+      <item>dr1</item>
+      <item>dr2</item>
+      <item>dr3</item>
+      <item>dr6</item>
+      <item>dr7</item>
+      <!-- x87 FPU Registers -->
+      <item>st</item>
+      <!-- MMX registers -->
+      <item>mm0</item>
+      <item>mm1</item>
+      <item>mm2</item>
+      <item>mm3</item>
+      <item>mm4</item>
+      <item>mm5</item>
+      <item>mm6</item>
+      <item>mm7</item>
+      <!-- XMM registers -->
+      <item>xmm0</item>
+      <item>xmm1</item>
+      <item>xmm2</item>
+      <item>xmm3</item>
+      <item>xmm4</item>
+      <item>xmm5</item>
+      <item>xmm6</item>
+      <item>xmm7</item>
+    </list>
+    <list name="instructions">
+      <item>aaa</item>
+      <item>aad</item>
+      <item>aam</item>
+      <item>aas</item>
+      <item>adc</item>
+      <item>add</item>
+      <item>addpd</item>
+      <item>addps</item>
+      <item>addsd</item>
+      <item>addss</item>
+      <item>addsubpd</item>
+      <item>addsubps</item>
+      <item>and</item>
+      <item>andnpd</item>
+      <item>andnps</item>
+      <item>andpd</item>
+      <item>andps</item>
+      <item>arpl</item>
+      <item>bound</item>
+      <item>bsf</item>
+      <item>bsr</item>
+      <item>bswap</item>
+      <item>bt</item>
+      <item>btc</item>
+      <item>btr</item>
+      <item>bts</item>
+      <item>call</item>
+      <item>cbw</item>
+      <item>cwde</item>
+      <item>cwd</item>
+      <item>cdq</item>
+      <item>cdqe</item>
+      <item>cqo</item>
+      <item>clc</item>
+      <item>cld</item>
+      <item>clgi</item>
+      <item>cli</item>
+      <item>clts</item>
+      <item>clflush</item>
+      <item>cmc</item>
+      <item>cmova</item>
+      <item>cmovae</item>
+      <item>cmovb</item>
+      <item>cmovbe</item>
+      <item>cmovc</item>
+      <item>cmove</item>
+      <item>cmovg</item>
+      <item>cmovge</item>
+      <item>cmovl</item>
+      <item>cmovle</item>
+      <item>cmovna</item>
+      <item>cmovnae</item>
+      <item>cmovnb</item>
+      <item>cmovnbe</item>
+      <item>cmovnc</item>
+      <item>cmovne</item>
+      <item>cmovng</item>
+      <item>cmovnge</item>
+      <item>cmovnl</item>
+      <item>cmovnle</item>
+      <item>cmovno</item>
+      <item>cmovnp</item>
+      <item>cmovns</item>
+      <item>cmovnz</item>
+      <item>cmovo</item>
+      <item>cmovp</item>
+      <item>cmovpe</item>
+      <item>cmovpo</item>
+      <item>cmovs</item>
+      <item>cmovz</item>
+      <item>cmp</item>
+      <item>cmpeqpd</item>
+      <item>cmpeqps</item>
+      <item>cmpeqsd</item>
+      <item>cmpeqss</item>
+      <item>cmplepd</item>
+      <item>cmpleps</item>
+      <item>cmplesd</item>
+      <item>cmpless</item>
+      <item>cmpltpd</item>
+      <item>cmpltps</item>
+      <item>cmpltsd</item>
+      <item>cmpltss</item>
+      <item>cmpneqpd</item>
+      <item>cmpneqps</item>
+      <item>cmpneqsd</item>
+      <item>cmpneqss</item>
+      <item>cmpnlepd</item>
+      <item>cmpnleps</item>
+      <item>cmpnlesd</item>
+      <item>cmpnless</item>
+      <item>cmpnltpd</item>
+      <item>cmpnltps</item>
+      <item>cmpnltsd</item>
+      <item>cmpnltss</item>
+      <item>cmpordpd</item>
+      <item>cmpordps</item>
+      <item>cmpordsd</item>
+      <item>cmpordss</item>
+      <item>cmppd</item>
+      <item>cmpps</item>
+      <item>cmps</item>
+      <item>cmpsb</item>
+      <item>cmpsd</item>
+      <item>cmpss</item>
+      <item>cmpsw</item>
+      <item>cmpunordpd</item>
+      <item>cmpunordps</item>
+      <item>cmpunordsd</item>
+      <item>cmpunordss</item>
+      <item>cmpxchg</item>
+      <item>cmpxchg486</item>
+      <item>cmpxchg8b</item>
+      <item>cmpxchg16b</item>
+      <item>comisd</item>
+      <item>comiss</item>
+      <item>cpuid</item>
+      <item>cvtdq2pd</item>
+      <item>cvtdq2ps</item>
+      <item>cvtpd2dq</item>
+      <item>cvtpd2pi</item>
+      <item>cvtpd2ps</item>
+      <item>cvtpi2pd</item>
+      <item>cvtpi2ps</item>
+      <item>cvtps2dq</item>
+      <item>cvtps2pd</item>
+      <item>cvtps2pi</item>
+      <item>cvtsd2si</item>
+      <item>cvtsd2ss</item>
+      <item>cvtsi2sd</item>
+      <item>cvtsi2ss</item>
+      <item>cvtss2sd</item>
+      <item>cvtss2si</item>
+      <item>cvttpd2dq</item>
+      <item>cvttpd2pi</item>
+      <item>cvttps2dq</item>
+      <item>cvttps2pi</item>
+      <item>cvttsd2si</item>
+      <item>cvttss2si</item>
+      <item>daa</item>
+      <item>das</item>
+      <item>dec</item>
+      <item>div</item>
+      <item>divpd</item>
+      <item>divps</item>
+      <item>divsd</item>
+      <item>divss</item>
+      <item>emms</item>
+      <item>enter</item>
+      <item>f2xm1</item>
+      <item>fabs</item>
+      <item>fadd</item>
+      <item>faddp</item>
+      <item>fbld</item>
+      <item>fbstp</item>
+      <item>fchs</item>
+      <item>fclex</item>
+      <item>fnclex</item>
+      <item>fcmovb</item>
+      <item>fcmovbe</item>
+      <item>fcmove</item>
+      <item>fcmovnb</item>
+      <item>fcmovnbe</item>
+      <item>fcmovne</item>
+      <item>fcmovnu</item>
+      <item>fcmovu</item>
+      <item>fcom</item>
+      <item>fcomp</item>
+      <item>fcompp</item>
+      <item>fcomi</item>
+      <item>fcomip</item>
+      <item>fcos</item>
+      <item>fdecstp</item>
+      <item>fdisi</item>
+      <item>feni</item>
+      <item>fdiv</item>
+      <item>fdivr</item>
+      <item>fdivp</item>
+      <item>fdivrp</item>
+      <item>femms</item>
+      <item>ffree</item>
+      <item>ffreep</item>
+      <item>fiadd</item>
+      <item>ficom</item>
+      <item>ficomp</item>
+      <item>fidiv</item>
+      <item>fidivr</item>
+      <item>fild</item>
+      <item>fimul</item>
+      <item>fincstp</item>
+      <item>finit</item>
+      <item>fist</item>
+      <item>fistp</item>
+      <item>fisttp</item>
+      <item>fisub</item>
+      <item>fisubr</item>
+      <item>fld</item>
+      <item>fld1</item>
+      <item>fldl2e</item>
+      <item>fldl2t</item>
+      <item>fldlg2</item>
+      <item>fldln2</item>
+      <item>fldcw</item>
+      <item>fldenv</item>
+      <item>fldpi</item>
+      <item>fldz</item>
+      <item>fmul</item>
+      <item>fmulp</item>
+      <item>fndisi</item>
+      <item>fneni</item>
+      <item>fninit</item>
+      <item>fnop</item>
+      <item>fnsave</item>
+      <item>fnstcw</item>
+      <item>fnstenv</item>
+      <item>fnstsw</item>
+      <item>fnwait</item>
+      <item>fpatan</item>
+      <item>fptan</item>
+      <item>fprem</item>
+      <item>fprem1</item>
+      <item>frndint</item>
+      <item>frstor</item>
+      <item>fsave</item>
+      <item>fscale</item>
+      <item>fsetpm</item>
+      <item>fsin</item>
+      <item>fsincos</item>
+      <item>fsqrt</item>
+      <item>fst</item>
+      <item>fstp</item>
+      <item>fstcw</item>
+      <item>fstenv</item>
+      <item>fstsw</item>
+      <item>fsub</item>
+      <item>fsubr</item>
+      <item>fsubp</item>
+      <item>fsubrp</item>
+      <item>ftst</item>
+      <item>fucom</item>
+      <item>fucomp</item>
+      <item>fucompp</item>
+      <item>fucomi</item>
+      <item>fucomip</item>
+      <item>fwait</item>
+      <item>fxam</item>
+      <item>fxch</item>
+      <item>fxrstor</item>
+      <item>fxsave</item>
+      <item>fxtract</item>
+      <item>fyl2x</item>
+      <item>fyl2xp1</item>
+      <item>haddpd</item>
+      <item>haddps</item>
+      <item>hlt</item>
+      <item>hsubpd</item>
+      <item>hsubps</item>
+      <item>ibts</item>
+      <item>idiv</item>
+      <item>imul</item>
+      <item>in</item>
+      <item>inc</item>
+      <item>ins</item>
+      <item>insb</item>
+      <item>insd</item>
+      <item>insw</item>
+      <item>int</item>
+      <item>int1</item>
+      <item>int3</item>
+      <item>into</item>
+      <item>invd</item>
+      <item>invlpg</item>
+      <item>invlpga</item>
+      <item>iret</item>
+      <item>iretd</item>
+      <item>iretq</item>
+      <item>iretw</item>
+      <item>ja</item>
+      <item>jae</item>
+      <item>jb</item>
+      <item>jbe</item>
+      <item>jc</item>
+      <item>je</item>
+      <item>jg</item>
+      <item>jge</item>
+      <item>jl</item>
+      <item>jle</item>
+      <item>jna</item>
+      <item>jnae</item>
+      <item>jnb</item>
+      <item>jnbe</item>
+      <item>jnc</item>
+      <item>jne</item>
+      <item>jng</item>
+      <item>jnge</item>
+      <item>jnl</item>
+      <item>jnle</item>
+      <item>jno</item>
+      <item>jnp</item>
+      <item>jns</item>
+      <item>jnz</item>
+      <item>jo</item>
+      <item>jp</item>
+      <item>jpe</item>
+      <item>jpo</item>
+      <item>js</item>
+      <item>jz</item>
+      <item>jcxz</item>
+      <item>jecxz</item>
+      <item>jrcxz</item>
+      <item>jmp</item>
+      <item>lahf</item>
+      <item>lar</item>
+      <item>lddqu</item>
+      <item>ldmxcsr</item>
+      <item>lds</item>
+      <item>les</item>
+      <item>lea</item>
+      <item>leave</item>
+      <item>lfence</item>
+      <item>lfs</item>
+      <item>lgdt</item>
+      <item>lgs</item>
+      <item>lidt</item>
+      <item>lldt</item>
+      <item>lmsw</item>
+      <item>loadall</item>
+      <item>loadall286</item>
+      <item>lods</item>
+      <item>lodsb</item>
+      <item>lodsd</item>
+      <item>lodsq</item>
+      <item>lodsw</item>
+      <item>loop</item>
+      <item>loope</item>
+      <item>loopne</item>
+      <item>loopnz</item>
+      <item>loopz</item>
+      <item>lsl</item>
+      <item>lss</item>
+      <item>ltr</item>
+      <item>maskmovdqu</item>
+      <item>maskmovq</item>
+      <item>maxpd</item>
+      <item>maxps</item>
+      <item>maxsd</item>
+      <item>maxss</item>
+      <item>mfence</item>
+      <item>minpd</item>
+      <item>minps</item>
+      <item>minsd</item>
+      <item>minss</item>
+      <item>monitor</item>
+      <item>mov</item>
+      <item>movapd</item>
+      <item>movaps</item>
+      <item>movd</item>
+      <item>movddup</item>
+      <item>movdq2q</item>
+      <item>movdqa</item>
+      <item>movdqu</item>
+      <item>movhlps</item>
+      <item>movhpd</item>
+      <item>movhps</item>
+      <item>movlhps</item>
+      <item>movlpd</item>
+      <item>movlps</item>
+      <item>movmskpd</item>
+      <item>movmskps</item>
+      <item>movntdq</item>
+      <item>movnti</item>
+      <item>movntpd</item>
+      <item>movntps</item>
+      <item>movntq</item>
+      <item>movq</item>
+      <item>movq2dq</item>
+      <item>movs</item>
+      <item>movsb</item>
+      <item>movsd</item>
+      <item>movshdup</item>
+      <item>movsldup</item>
+      <item>movsq</item>
+      <item>movss</item>
+      <item>movsx</item>
+      <item>movsxd</item>
+      <item>movsw</item>
+      <item>movupd</item>
+      <item>movups</item>
+      <item>movzx</item>
+      <item>mul</item>
+      <item>mulpd</item>
+      <item>mulps</item>
+      <item>mulsd</item>
+      <item>mulss</item>
+      <item>mwait</item>
+      <item>neg</item>
+      <item>nop</item>
+      <item>not</item>
+      <item>or</item>
+      <item>orpd</item>
+      <item>orps</item>
+      <item>out</item>
+      <item>outs</item>
+      <item>outsb</item>
+      <item>outsw</item>
+      <item>outsd</item>
+      <item>packssdw</item>
+      <item>packsswb</item>
+      <item>packuswb</item>
+      <item>paddb</item>
+      <item>paddd</item>
+      <item>paddq</item>
+      <item>paddsb</item>
+      <item>paddsw</item>
+      <item>paddusb</item>
+      <item>paddusw</item>
+      <item>paddw</item>
+      <item>pand</item>
+      <item>pandn</item>
+      <item>pause</item>
+      <item>pavgb</item>
+      <item>pavgusb</item>
+      <item>pavgw</item>
+      <item>pcmpeqb</item>
+      <item>pcmpeqw</item>
+      <item>pcmpeqd</item>
+      <item>pcmpgtb</item>
+      <item>pcmpgtw</item>
+      <item>pcmpgtd</item>
+      <item>pdistib</item>
+      <item>pextrw</item>
+      <item>pf2id</item>
+      <item>pf2iw</item>
+      <item>pfacc</item>
+      <item>pfadd</item>
+      <item>pfcmpeq</item>
+      <item>pfcmpge</item>
+      <item>pfcmpgt</item>
+      <item>pfmax</item>
+      <item>pfmin</item>
+      <item>pfmul</item>
+      <item>pfnacc</item>
+      <item>pfpnacc</item>
+      <item>pfrcp</item>
+      <item>pfrcpit1</item>
+      <item>pfrcpit2</item>
+      <item>pfrsqit1</item>
+      <item>pfrsqrt</item>
+      <item>pfsub</item>
+      <item>pfsubr</item>
+      <item>pi2fd</item>
+      <item>pi2fw</item>
+      <item>pinsrw</item>
+      <item>pmachriw</item>
+      <item>pmaddwd</item>
+      <item>pmagw</item>
+      <item>pmaxsw</item>
+      <item>pmaxub</item>
+      <item>pminsw</item>
+      <item>pminub</item>
+      <item>pmovmskb</item>
+      <item>pmulhrw</item>
+      <item>pmulhuw</item>
+      <item>pmulhw</item>
+      <item>pmullw</item>
+      <item>pmuludq</item>
+      <item>pmvgezb</item>
+      <item>pmvlzb</item>
+      <item>pmvnzb</item>
+      <item>pmvzb</item>
+      <item>pop</item>
+      <item>popa</item>
+      <item>popaw</item>
+      <item>popad</item>
+      <item>popf</item>
+      <item>popfw</item>
+      <item>popfd</item>
+      <item>popfq</item>
+      <item>por</item>
+      <item>prefetch</item>
+      <item>prefetchnta</item>
+      <item>prefetcht0</item>
+      <item>prefetcht1</item>
+      <item>prefetcht2</item>
+      <item>prefetchw</item>
+      <item>psadbw</item>
+      <item>pshufd</item>
+      <item>pshufhw</item>
+      <item>pshuflw</item>
+      <item>pshufw</item>
+      <item>pslld</item>
+      <item>pslldq</item>
+      <item>psllq</item>
+      <item>psllw</item>
+      <item>psrad</item>
+      <item>psraw</item>
+      <item>psrld</item>
+      <item>psrldq</item>
+      <item>psrlq</item>
+      <item>psrlw</item>
+      <item>psubb</item>
+      <item>psubd</item>
+      <item>psubq</item>
+      <item>psubsb</item>
+      <item>psubsiw</item>
+      <item>psubsw</item>
+      <item>psubusb</item>
+      <item>psubusw</item>
+      <item>psubw</item>
+      <item>pswapd</item>
+      <item>punpckhbw</item>
+      <item>punpckhdq</item>
+      <item>punpckhqdq</item>
+      <item>punpckhwd</item>
+      <item>punpcklbw</item>
+      <item>punpckldq</item>
+      <item>punpcklqdq</item>
+      <item>punpcklwd</item>
+      <item>push</item>
+      <item>pusha</item>
+      <item>pushad</item>
+      <item>pushaw</item>
+      <item>pushf</item>
+      <item>pushfd</item>
+      <item>pushfq</item>
+      <item>pushfw</item>
+      <item>pxor</item>
+      <item>rcl</item>
+      <item>rcr</item>
+      <item>rcpps</item>
+      <item>rcpss</item>
+      <item>rdmsr</item>
+      <item>rdpmc</item>
+      <item>rdshr</item>
+      <item>rdtsc</item>
+      <item>rdtscp</item>
+      <item>ret</item>
+      <item>retf</item>
+      <item>retn</item>
+      <item>rol</item>
+      <item>ror</item>
+      <item>rsdc</item>
+      <item>rsldt</item>
+      <item>rsm</item>
+      <item>rsqrtps</item>
+      <item>rsqrtss</item>
+      <item>rsts</item>
+      <item>sahf</item>
+      <item>sal</item>
+      <item>sar</item>
+      <item>salc</item>
+      <item>sbb</item>
+      <item>scas</item>
+      <item>scasb</item>
+      <item>scasd</item>
+      <item>scasq</item>
+      <item>scasw</item>
+      <item>seta</item>
+      <item>setae</item>
+      <item>setb</item>
+      <item>setbe</item>
+      <item>setc</item>
+      <item>sete</item>
+      <item>setg</item>
+      <item>setge</item>
+      <item>setl</item>
+      <item>setle</item>
+      <item>setna</item>
+      <item>setnae</item>
+      <item>setnb</item>
+      <item>setnbe</item>
+      <item>setnc</item>
+      <item>setne</item>
+      <item>setng</item>
+      <item>setnge</item>
+      <item>setnl</item>
+      <item>setnle</item>
+      <item>setno</item>
+      <item>setnp</item>
+      <item>setns</item>
+      <item>setnz</item>
+      <item>seto</item>
+      <item>setp</item>
+      <item>setpe</item>
+      <item>setpo</item>
+      <item>sets</item>
+      <item>setz</item>
+      <item>sfence</item>
+      <item>sgdt</item>
+      <item>shl</item>
+      <item>shld</item>
+      <item>shr</item>
+      <item>shrd</item>
+      <item>shufpd</item>
+      <item>shufps</item>
+      <item>sidt</item>
+      <item>skinit</item>
+      <item>sldt</item>
+      <item>smi</item>
+      <item>smint</item>
+      <item>smintold</item>
+      <item>smsw</item>
+      <item>sqrtpd</item>
+      <item>sqrtps</item>
+      <item>sqrtsd</item>
+      <item>sqrtss</item>
+      <item>stc</item>
+      <item>std</item>
+      <item>stgi</item>
+      <item>sti</item>
+      <item>stmxcsr</item>
+      <item>stos</item>
+      <item>stosb</item>
+      <item>stosd</item>
+      <item>stosq</item>
+      <item>stosw</item>
+      <item>str</item>
+      <item>sub</item>
+      <item>subpd</item>
+      <item>subps</item>
+      <item>subsd</item>
+      <item>subss</item>
+      <item>svdc</item>
+      <item>svldt</item>
+      <item>svts</item>
+      <item>swapgs</item>
+      <item>syscall</item>
+      <item>sysenter</item>
+      <item>sysexit</item>
+      <item>sysret</item>
+      <item>test</item>
+      <item>ucomisd</item>
+      <item>ucomiss</item>
+      <item>ud0</item>
+      <item>ud1</item>
+      <item>ud2</item>
+      <item>umov</item>
+      <item>unpckhpd</item>
+      <item>unpckhps</item>
+      <item>unpcklpd</item>
+      <item>unpcklps</item>
+      <item>verr</item>
+      <item>verw</item>
+      <item>vmload</item>
+      <item>vmmcall</item>
+      <item>vmrun</item>
+      <item>vmsave</item>
+      <item>wait</item>
+      <item>wbinvd</item>
+      <item>wrmsr</item>
+      <item>wrshr</item>
+      <item>xadd</item>
+      <item>xbts</item>
+      <item>xchg</item>
+      <item>xlat</item>
+      <item>xlatb</item>
+      <item>xor</item>
+      <item>xorpd</item>
+      <item>xorps</item>
+    </list>
+    <list name="Data">
+      <!-- repeat some data declaration -->
+      <item>times</item>
+      <!-- constants -->
+      <item>equ</item>
+      <!-- Initialized data -->
+      <item>db</item>
+      <item>dw</item>
+      <item>dd</item>
+      <item>dq</item>
+      <item>dt</item>
+      <!-- Uninitialized data -->
+      <item>resb</item>
+      <item>resw</item>
+      <item>resd</item>
+      <item>resq</item>
+      <item>rest</item>
+      <!-- binary file include -->
+      <item>incbin</item>
+      <!-- operand size -->
+      <item>byte</item>
+      <item>word</item>
+      <item>dword</item>
+      <item>qword</item>
+      <item>short</item>
+      <item>ptr</item>
+    </list>
+    <list name="NASM Keywords">
+      <!-- NASM directives -->
+      <item>absolute</item>
+      <item>bits</item>
+      <item>common</item>
+      <item>extern</item>
+      <item>global</item>
+      <item>org</item>
+      <item>section</item>
+      <item>seg</item>
+      <item>segment</item>
+      <item>strict</item>
+      <item>use16</item>
+      <item>use32</item>
+      <item>wrt</item>
+      <!-- NASM standard macros -->
+      <item>struc</item>
+      <item>endstruc</item>
+      <item>istruc</item>
+      <item>at</item>
+      <item>iend</item>
+      <item>align</item>
+      <item>alignb</item>
+
+      <item>__SECT__</item>
+      <item>__NASM_MAJOR__</item>
+      <item>__NASM_MINOR__</item>
+      <item>__NASM_SUBMINOR__</item>
+      <item>___NASM_PATCHLEVEL__</item>
+      <item>__NASM_VERSION_ID__</item>
+      <item>__NASM_VER__</item>
+      <item>__FILE__</item>
+      <item>__LINE__</item>
+    </list>
+    <contexts>
+      <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+        <keyword attribute="Registers" context="#stay" String="registers"/>
+        <keyword attribute="Data" context="#stay" String="Data"/>
+        <keyword attribute="Instructions" context="#stay" String="instructions"/>
+        <keyword attribute="NASM Keywords" context="#stay" String="NASM Keywords"/>
+        <DetectChar attribute="Comment" context="Comment" char=";"/>
+        <DetectChar attribute="Preprocessor" context="Preprocessor" char="%"/>
+        <AnyChar attribute="String" context="String" String="&quot;'"/>
+        <RegExpr attribute="Label" context="#stay" String="^\s*[A-Za-z0-9_.$]+:"/>
+        <!-- Conditional instructions -->
+        <RegExpr attribute="Instructions" context="#stay" String="(cmov|fcmov|j|loop|set)(a|ae|b|be|c|e|g|ge|l|le|na|nae|nb|nbe|nc|ne|ng|nge|nl|nle|no|np|ns|nz|o|p|pe|po|s|z)"/>
+        <!-- The NASM's CPU directive -->
+        <RegExpr attribute="NASM Keywords" context="#stay" String="cpu (pentium|ppro|p2|p3|katmai|p4|willamette|prescott|ia64)*"/>
+        <!-- hexadecimal numbers -->
+        <RegExpr attribute="BaseN" context="#stay" insensitive="TRUE" String="(^|[ \t,]+)((\$|0x){1}[0-9]+[a-f0-9]*|[a-f0-9]+h)([ \t,]+|$)"/>
+        <!-- octal and binary numbers -->
+        <RegExpr attribute="BaseN" context="#stay" insensitive="TRUE" String="(^|[ \t,]+)([0-7]+(q|o)|[01]+b)([ \t,]+|$)"/>
+        <DetectChar attribute="Number" context="#stay" char="$"/>
+        <HlCOct attribute="BaseN" context="#stay"/>
+        <HlCHex attribute="BaseN" context="#stay"/>
+        <Float attribute="Float" context="#stay"/>
+        <Int attribute="Number" context="#stay"/>
+        <HlCChar attribute="Char" context="#stay"/>
+      </context>
+      <context name="Comment" attribute="Comment" lineEndContext="#pop"/>
+      <context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop"/>
+      <context name="String" attribute="String" lineEndContext="#pop">
+        <AnyChar attribute="String" context="#pop" String="&quot;'"/>
+      </context>
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Registers" defStyleNum="dsKeyword"/>
+      <itemData name="Instructions" defStyleNum="dsKeyword"/>
+      <itemData name="NASM Keywords" defStyleNum="dsKeyword"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="Label" defStyleNum="dsFunction"/>
+      <itemData name="Data" defStyleNum="dsDataType"/>
+      <itemData name="BaseN" defStyleNum="dsBaseN"/>
+      <itemData name="Float" defStyleNum="dsFloat"/>
+      <itemData name="Number" defStyleNum="dsDecVal"/>
+      <itemData name="Char" defStyleNum="dsChar"/>
+      <itemData name="String" defStyleNum="dsString"/>
+      <itemData name="Preprocessor" defStyleNum="dsOthers"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <keywords casesensitive="0"/>
+    <comments>
+      <comment name="singleLine" start=";"/>
+    </comments>
+  </general>
+</language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
diff --git a/xml/objectivec.xml b/xml/objectivec.xml
new file mode 100644
--- /dev/null
+++ b/xml/objectivec.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="Objective-C" version="1.07" kateversion="2.3" section="Sources" extensions="*.m;*.h" mimetype="text/x-objc-src;text/x-c-hdr">
+  <highlighting>
+    <list name="keywords">
+      <item> break </item>
+      <item> case </item>
+      <item> continue </item>
+      <item> default </item>
+      <item> do </item>
+      <item> else </item>
+      <item> enum </item>
+      <item> extern </item>
+      <item> for </item>
+      <item> goto </item>
+      <item> if </item>
+      <item> return </item>
+      <item> sizeof </item>
+      <item> struct </item>
+      <item> switch </item>
+      <item> typedef </item>
+      <item> union </item>
+      <item> while </item>
+      <item> @class </item>
+      <item> @defs </item>
+      <item> @encode </item>
+      <item> @end </item>
+      <item> @implementation </item>
+      <item> @interface </item>
+      <item> @private </item>
+      <item> @protected </item>
+      <item> @protocol </item>
+      <item> @public </item>
+      <item> @selector </item>
+      <item> self </item>
+      <item> super </item>
+    </list>
+    <list name="types">
+      <item> auto </item>
+      <item> char </item>
+      <item> const </item>
+      <item> double </item>
+      <item> float </item>
+      <item> int </item>
+      <item> long </item>
+      <item> register </item>
+      <item> short </item>
+      <item> signed </item>
+      <item> static </item>
+      <item> unsigned </item>
+      <item> void </item>
+      <item> volatile </item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Default">
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+        <keyword attribute="Data Type" context="#stay" String="types"/>
+        <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
+        <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
+        <Float attribute="Float" context="#stay">
+          <AnyChar String="fF" attribute="Float" context="#stay"/>
+        </Float>
+        <HlCOct attribute="Octal" context="#stay"/>
+        <HlCHex attribute="Hex" context="#stay"/>
+        <Int attribute="Decimal" context="#stay" >
+          <StringDetect attribute="Decimal" context="#stay" String="ULL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LUL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LLU" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="UL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LU" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="U" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="L" insensitive="TRUE"/>
+        </Int>
+        <HlCChar attribute="Char" context="#stay"/>
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <Detect2Chars attribute="Comment" context="SingleLineComment" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*"/>
+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="^#"/>
+        <Detect2Chars attribute="String" context="String" char="@" char1="&quot;" />
+      </context>
+      <context attribute="String" lineEndContext="#pop" name="String">
+        <LineContinue attribute="String" context="#stay"/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="SingleLineComment"/>
+      <context attribute="Comment" lineEndContext="#stay" name="MultiLineComment">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/"/>
+      </context>
+      <context attribute="Preprocessor" lineEndContext="Default" name="Preprocessor">
+        <LineContinue attribute="Preprocessor" context="#stay"/>
+        <RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>
+        <RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="SingleLineComment" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="MultiLineCommentPrep" char="/" char1="*"/>
+      </context>
+      <context attribute="Comment" lineEndContext="#stay" name="MultiLineCommentPrep">
+        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/"/>
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Keyword"  defStyleNum="dsKeyword"/>
+      <itemData name="Data Type"  defStyleNum="dsDataType"/>
+      <itemData name="Decimal"  defStyleNum="dsDecVal"/>
+      <itemData name="Octal"  defStyleNum="dsBaseN"/>
+      <itemData name="Hex"  defStyleNum="dsBaseN"/>
+      <itemData name="Float"  defStyleNum="dsFloat"/>
+      <itemData name="Char"  defStyleNum="dsChar"/>
+      <itemData name="String"  defStyleNum="dsString"/>
+      <itemData name="String Char"  defStyleNum="dsChar"/>
+      <itemData name="Comment"  defStyleNum="dsComment"/>
+      <itemData name="Symbol"  defStyleNum="dsNormal"/>
+      <itemData name="Preprocessor"  defStyleNum="dsOthers"/>
+      <itemData name="Prep. Lib"  defStyleNum="dsOthers"/> <!--,Qt::darkYellow,Qt::yellow,false,false)); -->
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="//" />
+      <comment name="multiLine" start="/*" end="*/" />
+    </comments>
+    <keywords casesensitive="1" />
+  </general>
+</language>
diff --git a/xml/ocaml.xml b/xml/ocaml.xml
new file mode 100644
--- /dev/null
+++ b/xml/ocaml.xml
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Kate syntax highlighting for Objective Caml version 3.07 in the standard and revised syntaxes. -->
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+<!-- Regular expresion constants: -->
+<!ENTITY LETTER "A-Za-z\0300-\0326\0330-\0366\0370-\0377">          <!-- Latin-1 letters. -->
+<!ENTITY IDENT  "[&LETTER;_][&LETTER;0-9_']*">                      <!-- OCaml identifiers. -->
+<!ENTITY ESC    "(\\[ntbr'&quot;\\]|\\[0-9]{3}|\\x[0-9A-Fa-f]{2})"> <!-- OCaml character code escapes. -->
+<!ENTITY DEC    "[0-9][0-9_]*">                                     <!-- Decimal digits with underscores. -->
+]>
+<language name="Objective Caml" version="1.04" kateversion="2.4" section="Sources" extensions="*.ml;*.mli" mimetype="" priority="10" author="Glyn Webster (glyn@wave.co.nz)" license="LGPL">
+
+  <highlighting>
+    <!-- Revised Syntax keywords are highlighted as identifiers by default. -->
+    <!-- Change their highlighting colour to match the standard keywords    -->
+    <!-- if you intend to use the Camlp4 Revised Syntax.                    -->
+    <list name="revised syntax keywords">  
+      <item> declare </item>
+      <item> value </item>
+      <item> where </item>
+    </list>
+    <list name="keywords">
+      <item> and </item>
+      <item> as </item>
+      <item> assert </item>
+      <item> asr </item>
+      <item> begin </item>
+      <item> class </item>
+      <item> closed </item>
+      <item> constraint </item>
+      <item> do </item>
+      <item> done </item>
+      <item> downto </item>
+      <item> else </item>
+      <item> end </item>
+      <item> exception </item>
+      <item> external </item>
+      <item> false </item>
+      <item> for </item>
+      <item> fun </item>
+      <item> function </item>
+      <item> functor </item>
+      <item> if </item>
+      <item> in </item>
+      <item> include </item>
+      <item> inherit </item>
+      <item> land </item>
+      <item> lazy </item>
+      <item> let </item>
+      <item> lor </item>
+      <item> lsl </item>
+      <item> lsr </item>
+      <item> lxor </item>
+      <item> match </item>
+      <item> method </item>
+      <item> mod </item>
+      <item> module </item>
+      <item> mutable </item>
+      <item> new </item>
+      <item> of </item>
+      <item> open </item>
+      <item> or </item>
+      <item> parser </item>
+      <item> private </item>
+      <item> rec </item>
+      <item> sig </item>
+      <item> struct </item>
+      <item> then </item>
+      <item> to </item>
+      <item> true </item>
+      <item> try </item>
+      <item> type </item>
+      <item> val </item>
+      <item> virtual </item>
+      <item> when </item>
+      <item> while </item>
+      <item> with </item>
+    </list>
+    <list name="core types">
+      <item> exn </item>
+      <item> lazy_t </item>
+      <item> format </item>
+      <item> unit </item>
+      <item> int </item>
+      <item> real </item>
+      <item> char </item>
+      <item> string </item>
+      <item> ref </item>
+      <item> array </item>
+      <item> bool </item>
+      <item> list </item>
+      <item> option </item>
+    </list>
+    <contexts>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+
+        <Detect2Chars attribute="Comment" context="Multiline Comment" char="(" char1="*" beginRegion="comment" />
+
+        <!-- Interpreter directives. --> 
+        <!-- (These are lines where the first symbol is a '#' followed by an identifier. -->
+        <!-- Such lines could also be part of a method call split over two lines but     --> 
+        <!-- it's unlikey anyone would code like that.)                                  -->
+        <RegExpr attribute="Directive" context="#stay" String="#&IDENT;.*$" firstNonSpace="true"/>
+
+        <!-- String, character and Camlp4 "quotation" constants.              --> 
+        <!-- Note: If you must modify the pattern for characters be precise:  -->
+        <!-- single quotes have several meanings in Ocaml.                    -->
+        <DetectChar attribute="String" context="String Constant" char="&quot;" />
+        <RegExpr attribute="Character" context="#stay" String="'(&ESC;|[^'])'" />
+        <Detect2Chars attribute="Camlp4 Quotation" context="Camlp4 Quotation Constant" char="&lt;" char1="&lt;" />
+        <RegExpr attribute="Camlp4 Quotation" context="Camlp4 Quotation Constant" String="&lt;:&IDENT;&lt;" />
+
+        <!-- Identifiers and keywords. --> 
+        <keyword attribute="Keyword" context="#stay" String="keywords" />
+        <keyword attribute="Revised Syntax Keyword" context="#stay" String="revised syntax keywords" />
+        <keyword attribute="Core Data Type" context="#stay" String="core types" />
+        <RegExpr attribute="Identifier" context="#stay" String="&IDENT;" />
+
+        <!-- Numeric constants. -->
+        <!-- Note that they may contain underscores. --> 
+        <RegExpr attribute="Hexadecimal" context="#stay" String="-?0[xX][0-9A-Fa-f_]+" />
+        <RegExpr attribute="Octal" context="#stay" String="-?0[oO][0-7_]+" />
+        <RegExpr attribute="Binary" context="#stay" String="-?0[bB][01_]+" />
+        <RegExpr attribute="Float" context="#stay" String="-?&DEC;(\.&DEC;([eE][-+]?&DEC;)?|[eE][-+]?&DEC;)" />
+        <RegExpr attribute="Decimal" context="#stay" String="-?&DEC;" />
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Multiline Comment">
+        <!-- Support for nested comments -->
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" endRegion="comment" />
+        <Detect2Chars attribute="Comment" context="Multiline Comment" char="(" char1="*" beginRegion="comment" />
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="String Constant">
+        <DetectChar attribute="String" context="#pop" char="&quot;" />
+        <RegExpr attribute="Escaped characters" context="#stay" String="&ESC;" />
+        <!-- An underscore at the end of a line in a string indicates  -->
+        <!-- that the string will continue on the next line.           -->
+        <RegExpr attribute="Escaped characters" context="#stay" String="\\$" />
+      </context>
+
+      <!-- Camlp4 Quotations. These are source code literals used by the Campl4 preprocessor.           -->
+      <!-- The only escapes allowed in a Camlp4 quotation are for the quotation start and stop symbols. -->
+      <context attribute="Camlp4 Quotation" lineEndContext="#stay" name="Camlp4 Quotation Constant">
+        <Detect2Chars attribute="Camlp4 Quotation" context="#pop" char="&gt;" char1="&gt;" />
+        <Detect2Chars attribute="Camlp4 Quotation" context="Camlp4 Quotation Constant" char="&lt;" char1="&lt;" />
+        <RegExpr attribute="Camlp4 Quotation" context="Camlp4 Quotation Constant" String="&lt;:&IDENT;&lt;" />
+        <RegExpr attribute="Escaped characters" context="#stay" String="\\(\\|&gt;&gt;|&lt;&lt;)" />
+        <RegExpr attribute="Escaped characters" context="#stay" String="\\&lt;:&IDENT;&lt;" />
+      </context>
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Identifier" defStyleNum="dsNormal"/>
+      <itemData name="Keyword"  defStyleNum="dsKeyword"/>
+      <itemData name="Revised Syntax Keyword"  defStyleNum="dsNormal"/>
+      <itemData name="Core Data Type"  defStyleNum="dsDataType"/>
+      <itemData name="Decimal"  defStyleNum="dsDecVal"/>
+      <itemData name="Hexadecimal"  defStyleNum="dsBaseN"/>
+      <itemData name="Octal"  defStyleNum="dsBaseN"/>
+      <itemData name="Binary"  defStyleNum="dsBaseN"/>
+      <itemData name="Float"  defStyleNum="dsFloat"/>
+      <itemData name="Character"  defStyleNum="dsChar"/>
+      <itemData name="String"  defStyleNum="dsString"/>
+      <itemData name="Escaped characters"  defStyleNum="dsChar"/>
+      <itemData name="Comment"  defStyleNum="dsComment"/>
+      <itemData name="Camlp4 Quotation"  defStyleNum="dsString"/>
+      <itemData name="Directive"  defStyleNum="dsOthers"/>
+    </itemDatas>
+  </highlighting>
+
+  <general>
+    <keywords casesensitive="1" />
+    <comments>
+      <comment name="multiLine" start="(*" end="*)" />
+    </comments>
+  </general>
+</language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
diff --git a/xml/pascal.xml b/xml/pascal.xml
new file mode 100644
--- /dev/null
+++ b/xml/pascal.xml
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="Pascal" version="1.21" kateversion="2.3" section="Sources" extensions="*.pp;*.pas;*.p" mimetype="text/x-pascal">
+  <highlighting>
+    <list name="keywords">
+      <item> and </item>
+      <item> array </item>
+      <item> asm </item>
+      <item> case </item>
+      <item> const </item>
+      <item> div </item>
+      <item> do </item>
+      <item> downto </item>
+      <item> else </item>
+      <item> file </item>
+      <item> for </item>
+      <item> function </item>
+      <item> goto </item>
+      <item> if </item>
+      <item> in </item>
+      <item> label </item>
+      <item> mod </item>
+      <item> nil </item>
+      <item> not </item>
+      <item> of </item>
+      <item> operator </item>
+      <item> or </item>
+      <item> packed </item>
+      <item> procedure </item>
+      <item> program </item>
+      <item> record </item>
+      <item> repeat </item>
+      <item> set </item>
+      <item> then </item>
+      <item> to </item>
+      <item> type </item>
+      <item> unit </item>
+      <item> until </item>
+      <item> uses </item>
+      <item> var </item>
+      <item> while </item>
+      <item> with </item>
+      <item> xor </item>
+
+
+      <item> at </item>
+      <item> automated </item>
+      <item> break </item>
+      <item> continue </item>
+      <item> dispinterface </item>
+      <item> dispose </item>
+      <item> exit </item>
+      <item> false </item>
+      <item> finalization </item>
+      <item> initialization </item>
+      <item> library </item>
+      <item> new </item>
+      <item> published </item>
+      <item> resourcestring </item>
+      <item> self </item>
+      <item> true </item>
+    </list>
+    <list name="ISO/Delphi Extended">
+      <item> abstract </item>
+      <item> as </item>
+      <item> bindable </item>
+      <item> constructor </item>
+      <item> destructor </item>
+      <item> except </item>
+      <item> export </item>
+      <item> finally </item>
+      <item> import </item>
+      <item> implementation </item>
+      <item> inherited </item>
+      <item> inline </item>
+      <item> interface </item>
+      <item> is </item>
+      <item> module </item>
+      <item> on </item>
+      <item> only </item>
+      <item> otherwise </item>
+      <item> override </item>
+      <item> private </item>
+      <item> property </item>
+      <item> protected </item>
+      <item> public </item>
+      <item> read </item>
+      <item> qualified </item>
+      <item> raise </item>
+      <item> restricted </item>
+      <item> shl </item>
+      <item> shr </item>
+      <item> threadvar </item>
+      <item> try </item>
+      <item> virtual </item>
+      <item> write </item>
+    </list>
+    <list name="types">
+      <item> Integer </item>
+      <item> Cardinal </item>
+      <item> ShortInt </item>
+      <item> SmallInt  </item>
+      <item> LongInt </item>
+      <item> Int64 </item>
+      <item> Byte </item>
+      <item> Word </item>
+      <item> LongWord </item>
+      <item> Char </item>
+      <item> AnsiChar </item>
+      <item> WideChar </item>
+      <item> Boolean </item>
+      <item> ByteBool </item>
+      <item> WordBool </item>
+      <item> LongBool </item>
+      <item> Single </item>
+      <item> Double </item>
+      <item> Extended </item>
+      <item> Comp </item>
+      <item> Currency </item>
+      <item> Real </item>
+      <item> Real48 </item>
+      <item> String </item>
+      <item> ShortString </item>
+      <item> AnsiString </item>
+      <item> WideString </item>
+      <item> Pointer </item>
+      <item> Variant</item>
+      <item> File </item>
+      <item> Text </item>
+    </list>
+    <list name="attention">
+      <item> FIXME </item>
+      <item> TODO </item>
+      <item> ### </item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+        <RegExpr attribute="Keyword" context="#stay" String="\b(begin|case|record)(?=(\{[^}]*(\}|$)|\(\*.*(\*\)|$))*([\s]|$|//))" insensitive="true" beginRegion="Region1"/>
+        <RegExpr attribute="ISO/Delphi Extended" context="#stay" String="\b((object|class)(?=(\(.*\))?(\{[^}]*(\}|$)|\(\*.*(\*\)|$))*;?([\s]|$|//))|try(?=(\{[^}]*(\}|$)|\(\*.*(\*\)|$))*([\s]|$|//)))" insensitive="true" beginRegion="Region1"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bend(?=((\{[^}]*(\}|$)|\(\*.*(\*\)|$))*)([.;\s]|$)|//|$)" insensitive="true" endRegion="Region1"/>
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+        <keyword attribute="ISO/Delphi Extended" context="#stay" String="ISO/Delphi Extended"/>
+        <keyword attribute="Type" context="#stay" String="types"/>
+        <Float attribute="Number" context="#stay"/>
+        <Int attribute="Number" context="#stay"/>
+        <DetectChar attribute="String" context="String" char="&apos;" />
+        <StringDetect attribute="Directive" context="Prep1" String="(*$"/>
+        <Detect2Chars attribute="Directive" context="Prep2" char="{" char1="$"/>
+        <DetectChar attribute="Comment" context="Comment1" char="{"            beginRegion="Region2"/>
+        <Detect2Chars attribute="Comment" context="Comment2" char="(" char1="*" beginRegion="Region3"/>
+        <Detect2Chars attribute="Comment" context="Comment3" char="/" char1="/"/>
+      </context>
+      <context attribute="String" lineEndContext="#pop" name="String">
+        <DetectChar attribute="String" context="#pop" char="&apos;"/>
+      </context>
+      <context attribute="Directive" lineEndContext="#pop" name="Prep1">
+        <Detect2Chars attribute="Directive" context="#pop" char="*" char1=")"/>
+      </context>
+      <context attribute="Directive" lineEndContext="#pop" name="Prep2">
+        <DetectChar attribute="Directive" context="#pop" char="}"/>
+      </context>
+      <context attribute="Comment" lineEndContext="#stay" name="Comment1">
+        <keyword attribute="Alert" context="#stay" String="attention" />
+        <DetectChar attribute="Comment" context="#pop" char="}"              endRegion="Region2"/>
+      </context>
+      <context attribute="Comment" lineEndContext="#stay" name="Comment2">
+        <keyword attribute="Alert" context="#stay" String="attention" />
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")"   endRegion="Region3"/>
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="Comment3">
+        <keyword attribute="Alert" context="#stay" String="attention" />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal" />
+      <itemData name="Keyword"     defStyleNum="dsKeyword" />
+      <itemData name="ISO/Delphi Extended"  defStyleNum="dsKeyword" color="#000080" />
+      <itemData name="Type"  defStyleNum="dsDataType"/>
+      <itemData name="Number"      defStyleNum="dsDecVal" />
+      <itemData name="String"      defStyleNum="dsString" />
+      <itemData name="Directive"   defStyleNum="dsOthers" />
+      <itemData name="Comment"     defStyleNum="dsComment" />
+      <itemData name="Alert"        defStyleNum="dsAlert" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <keywords casesensitive="0" />
+    <comments>
+      <comment name="singleLine" start="//" />
+      <comment name="multiLine" start="{" end="}" />
+    </comments>
+  </general>
+</language>
diff --git a/xml/perl.xml b/xml/perl.xml
new file mode 100644
--- /dev/null
+++ b/xml/perl.xml
@@ -0,0 +1,827 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!--
+   This file is part of the KDE project
+   Copyright (C) 2001, 2002, 2003, 2004 Anders Lund <anders@alweb.dk>
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public
+   License version 2 as published by the Free Software Foundation.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public License
+   along with this library; see the file COPYING.LIB.  If not, write to
+   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.
+
+   *** NOTICE ***
+   This file is maintained by Anders Lund <anders@alweb.dk>
+   Please do not commit changes without checking with me.
+
+   *** TODO ***
+
+   Work on the comment support in the REPLACEMENT part of s/// - we may support
+   the comment, if the line remainder does not contain the delimiter char.
+
+   Try to support ?PATTERN? (at least in one line, like if "\?(?=.*\?)" matches).
+
+   parse code behind '<<HEREDELIMITER' as code, or at least ignore it, to eol.
+   Requires the ability to pass the delimiter through a context level.
+
+   find a here delimiter like '*END*' (Shell.pm). Requires that when a regex is
+   inserting a dynamic string, it escapes [*(){}$[]
+
+   support for more regex extensions, such as (?>), (?{}), (?(cond)yes|no)
+
+   Enhance tr/// and y/// support.
+-->
+<language name="Perl" version="1.20" kateversion="2.4" section="Scripts" extensions="*.pl;*.pm" mimetype="application/x-perl;text/x-perl" author="Anders Lund (anders@alweb.dk)" license="LGPL">
+  <highlighting>
+    <list name="keywords">
+      <item> if </item>
+      <item> unless </item>
+      <item> else </item>
+      <item> elsif </item>
+      <item> while </item>
+      <item> until </item>
+      <item> for </item>
+      <item> each </item>
+      <item> foreach </item>
+      <item> next </item>
+      <item> last </item>
+      <item> break </item>
+      <item> continue </item>
+      <item> return </item>
+      <item> use </item>
+      <item> no </item>
+      <item> require </item>
+      <item> my </item>
+      <item> our </item>
+      <item> local </item>
+      <item> BEGIN </item>
+      <item> END </item>
+      <item>require</item>
+      <item> package </item>
+      <item> sub </item>
+      <item> do </item>
+      <item> __END__ </item>
+      <item> __DATA__ </item>
+      <item> __FILE__ </item>
+      <item> __LINE__ </item>
+      <item> __PACKAGE__ </item>
+    </list>
+    <list name="operators">
+      <item> = </item>
+      <item> != </item>
+      <item> ~= </item>
+      <item> += </item>
+      <item> -= </item>
+      <item> *= </item>
+      <item> /= </item>
+      <item> **= </item>
+      <item> |= </item>
+      <item> ||= </item>
+      <item> &amp;= </item>
+      <item> &amp;&amp;= </item>
+      <item> ?= </item>
+      <item> + </item>
+      <item> - </item>
+      <item> * </item>
+     <!-- <item> / </item>//-->
+      <item> % </item>
+      <item> || </item>
+      <item> &amp;&amp; </item>
+      <item> | </item>
+      <item> &amp; </item>
+      <item> &lt; </item>
+      <item> &lt;&lt; </item>
+      <item> &gt; </item>
+      <item> &gt;&gt; </item>
+      <item> ^ </item>
+      <item> -&gt; </item>
+      <item> =&gt; </item>
+      <item> . </item>
+      <item> , </item>
+      <item> ; </item>
+      <item> :: </item>
+      <item> \ </item>
+      <item> and </item>
+      <item> or </item>
+      <item> not </item>
+      <item> eq </item>
+      <item> ne </item>
+    </list>
+    <list name="functions">
+      <item>abs</item>
+      <item>accept</item>
+      <item>alarm</item>
+      <item>atan2</item>
+      <item>bind</item>
+      <item>binmode</item>
+      <item>bless</item>
+      <item>caller</item>
+      <item>chdir</item>
+      <item>chmod</item>
+      <item>chomp</item>
+      <item>chop</item>
+      <item>chown</item>
+      <item>chr</item>
+      <item>chroot</item>
+      <item>close</item>
+      <item>closedir</item>
+      <item>connect</item>
+      <item>cos</item>
+      <item>crypt</item>
+      <item>dbmclose</item>
+      <item>dbmopen</item>
+      <item>defined</item>
+      <item>delete</item>
+      <item>die</item>
+      <item>dump</item>
+      <item>endgrent</item>
+      <item>endhostent</item>
+      <item>endnetent</item>
+      <item>endprotoent</item>
+      <item>endpwent</item>
+      <item>endservent</item>
+      <item>eof</item>
+      <item>eval</item>
+      <item>exec</item>
+      <item>exists</item>
+      <item>exit</item>
+      <item>exp</item>
+      <item>fcntl</item>
+      <item>fileno</item>
+      <item>flock</item>
+      <item>fork</item>
+      <item>format</item>
+      <item>formline</item>
+      <item>getc</item>
+      <item>getgrent</item>
+      <item>getgrgid</item>
+      <item>getgrnam</item>
+      <item>gethostbyaddr</item>
+      <item>gethostbyname</item>
+      <item>gethostent</item>
+      <item>getlogin</item>
+      <item>getnetbyaddr</item>
+      <item>getnetbyname</item>
+      <item>getnetent</item>
+      <item>getpeername</item>
+      <item>getpgrp</item>
+      <item>getppid</item>
+      <item>getpriority</item>
+      <item>getprotobyname</item>
+      <item>getprotobynumber</item>
+      <item>getprotoent</item>
+      <item>getpwent</item>
+      <item>getpwnam</item>
+      <item>getpwuid</item>
+      <item>getservbyname</item>
+      <item>getservbyport</item>
+      <item>getservent</item>
+      <item>getsockname</item>
+      <item>getsockopt</item>
+      <item>glob</item>
+      <item>gmtime</item>
+      <item>goto</item>
+      <item>grep</item>
+      <item>hex</item>
+      <item>import</item>
+      <item>index</item>
+      <item>int</item>
+      <item>ioctl</item>
+      <item>join</item>
+      <item>keys</item>
+      <item>kill</item>
+      <item>last</item>
+      <item>lc</item>
+      <item>lcfirst</item>
+      <item>length</item>
+      <item>link</item>
+      <item>listen</item>
+      <item>localtime</item>
+      <item>lock</item>
+      <item>log</item>
+      <item>lstat</item>
+      <item>map</item>
+      <item>mkdir</item>
+      <item>msgctl</item>
+      <item>msgget</item>
+      <item>msgrcv</item>
+      <item>msgsnd</item>
+      <item>oct</item>
+      <item>open</item>
+      <item>opendir</item>
+      <item>ord</item>
+      <item>pack</item>
+      <item>package</item>
+      <item>pipe</item>
+      <item>pop</item>
+      <item>pos</item>
+      <item>print</item>
+      <item>printf</item>
+      <item>prototype</item>
+      <item>push</item>
+      <item>quotemeta</item>
+      <item>rand</item>
+      <item>read</item>
+      <item>readdir</item>
+      <item>readline</item>
+      <item>readlink</item>
+      <item>recv</item>
+      <item>redo</item>
+      <item>ref</item>
+      <item>rename</item>
+      <item>reset</item>
+      <item>return</item>
+      <item>reverse</item>
+      <item>rewinddir</item>
+      <item>rindex</item>
+      <item>rmdir</item>
+      <item>scalar</item>
+      <item>seek</item>
+      <item>seekdir</item>
+      <item>select</item>
+      <item>semctl</item>
+      <item>semget</item>
+      <item>semop</item>
+      <item>send</item>
+      <item>setgrent</item>
+      <item>sethostent</item>
+      <item>setnetent</item>
+      <item>setpgrp</item>
+      <item>setpriority</item>
+      <item>setprotoent</item>
+      <item>setpwent</item>
+      <item>setservent</item>
+      <item>setsockopt</item>
+      <item>shift</item>
+      <item>shmctl</item>
+      <item>shmget</item>
+      <item>shmread</item>
+      <item>shmwrite</item>
+      <item>shutdown</item>
+      <item>sin</item>
+      <item>sleep</item>
+      <item>socket</item>
+      <item>socketpair</item>
+      <item>sort</item>
+      <item>splice</item>
+      <item>split</item>
+      <item>sprintf</item>
+      <item>sqrt</item>
+      <item>srand</item>
+      <item>stat</item>
+      <item>study</item>
+      <item>sub</item>
+      <item>substr</item>
+      <item>symlink</item>
+      <item>syscall</item>
+      <item>sysread</item>
+      <item>sysseek</item>
+      <item>system</item>
+      <item>syswrite</item>
+      <item>tell</item>
+      <item>telldir</item>
+      <item>tie</item>
+      <item>time</item>
+      <item>times</item>
+      <item>truncate</item>
+      <item>uc</item>
+      <item>ucfirst</item>
+      <item>umask</item>
+      <item>undef</item>
+      <item>unlink</item>
+      <item>unpack</item>
+      <item>unshift</item>
+      <item>untie</item>
+      <item>utime</item>
+      <item>values</item>
+      <item>vec</item>
+      <item>wait</item>
+      <item>waitpid</item>
+      <item>wantarray</item>
+      <item>warn</item>
+      <item>write</item>
+    </list>
+    <list name="pragmas">
+      <item>strict</item>
+      <item>english</item>
+      <item>warnings</item>
+      <item>vars</item>
+      <item>subs</item>
+      <item>utf8</item>
+      <item>sigtrap</item>
+      <item>locale</item>
+      <item>open</item>
+      <item>less</item>
+      <item>integer</item>
+      <item>filetest</item>
+      <item>constant</item>
+      <item>bytes</item>
+      <item>diagnostics</item>
+    </list>
+    <contexts>
+      <context name="normal" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr attribute="Keyword" context="#stay" String="^#!\/.*" />
+        <StringDetect attribute="Keyword" context="data_handle" String="__DATA__" firstNonSpace="true" />
+        <StringDetect attribute="Keyword" context="#stay" String="__END__" firstNonSpace="true"/>
+        <RegExpr attribute="Keyword" context="sub_name_def" String="\bsub\s+" />
+        <keyword attribute="Keyword" context="#stay" String="keywords" />
+        <keyword attribute="Operator" context="#stay" String="operators" />
+        <keyword attribute="Function" context="#stay" String="functions" />
+        <keyword attribute="Pragma" context="#stay" String="pragmas" />
+        <RegExpr attribute="Pod" context="pod" String="\=(?:head[1-6]|over|back|item|for|begin|end|pod)(\s|$)" column="0" beginRegion="POD"/>
+        <DetectSpaces />
+        <DetectChar attribute="Comment" context="comment" char="#" />
+
+        <HlCOct attribute="Octal" context="slash_safe_escape" />
+        <HlCHex attribute="Hex" context="slash_safe_escape" />
+        <Float attribute="Float" context="slash_safe_escape" />
+        <Int attribute="Decimal" context="slash_safe_escape" />
+
+        <RegExpr attribute="Normal Text" context="#stay" String="\\([&quot;'])[^\1]" />
+        <Detect2Chars attribute="Normal Text" context="#stay" char="&amp;" char1="'" /><!-- ??? -->
+        <DetectChar attribute="Operator" context="ip_string" char="&quot;" beginRegion="String" />
+        <DetectChar attribute="Operator" context="string" char="'"  beginRegion="String"/>
+        <DetectChar attribute="Operator" context="Backticked" char="`" />
+
+        <RegExpr attribute="Normal Text" context="find_variable" String="(?:[$@]\S|%[\w{]|\*[^\d\*{\$@%=(])" lookAhead="true" />
+
+        <RegExpr attribute="Keyword" context="#stay" String="&lt;[A-Z0-9_]+&gt;" />
+
+        <RegExpr attribute="Operator" context="find_here_document" String="\s*&lt;&lt;(?=\w+|\s*[&quot;'])" beginRegion="HereDocument" />
+
+        <RegExpr attribute="Normal Text" context="#stay" String="\s*\}\s*/" endRegion="Block"/>
+        <RegExpr attribute="Normal Text" context="#stay" String="\s*[)]\s*/" />
+        <RegExpr attribute="Function" context="sub_name_def" String="\w+::" />
+        <RegExpr attribute="Normal Text" context="#stay" String="\w+[=]" />
+
+        <RegExpr attribute="Operator" context="find_quoted" String="\bq(?=[qwx]?\s*[^\w\s])" />
+        <RegExpr attribute="Operator" context="find_subst" String="\bs(?=\s*[^\w\s])" />
+        <RegExpr attribute="Operator" context="tr" String="\b(?:tr|y)\s*(?=[^\w\s\]})])" />
+
+        <RegExpr attribute="Operator" context="find_pattern" String="\b(?:m|qr)(?=\s*[^\w\s\]})])" />
+
+        <RegExpr attribute="Normal Text" context="#stay" String="[\w_]+\s*/" />
+        <RegExpr attribute="Normal Text" context="#stay" String="[&lt;&gt;&quot;':]/" />
+        <DetectChar attribute="Operator" context="pattern_slash" char="/" beginRegion="Pattern" />
+        <RegExpr attribute="Operator" context="#stay" String="-[rwxoRWXOeszfdlpSbctugkTBMAC]" />
+
+        <DetectChar attribute="Normal Text" context="#stay" char="{" beginRegion="Block" />
+        <DetectChar attribute="Normal Text" context="#stay" char="}" endRegion="Block" />
+      </context>
+
+      <!-- ====== quoted construct central ===== -->
+      <context name="find_quoted" attribute="Normal Text" lineEndContext="#stay" >
+        <!-- NOTE - qx'not interpolated regex' does not cover newline between "qr" and "'" -->
+        <RegExpr attribute="Operator" context="string_6" String="x\s*(')" beginRegion="String" />
+        <AnyChar attribute="Operator" context="find_qqx" String="qx" />
+        <DetectChar attribute="Operator" context="find_qw" char="w" />
+        <DetectChar attribute="Operator" context="string_2" char="(" beginRegion="String" />
+        <DetectChar attribute="Operator" context="string_3" char="{" beginRegion="String" />
+        <DetectChar attribute="Operator" context="string_4" char="[" beginRegion="String" />
+        <DetectChar attribute="Operator" context="string_5" char="&lt;" beginRegion="String" />
+        <RegExpr attribute="Operator" context="string_6" String="([^a-zA-Z0-9_\s[\]{}()])" beginRegion="String" />
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- q[qwx] # == comment, look for the delim on the next line -->
+      </context>
+      <context name="find_qqx" attribute="Normal Text" lineEndContext="#stay" >
+        <DetectChar attribute="Operator" context="ip_string_2" char="(" beginRegion="String" />
+        <DetectChar attribute="Operator" context="ip_string_3" char="{" beginRegion="String" />
+        <DetectChar attribute="Operator" context="ip_string_4" char="[" beginRegion="String" />
+        <DetectChar attribute="Operator" context="ip_string_5" char="&lt;" beginRegion="String" />
+        <RegExpr attribute="Operator" context="ip_string_6" String="([^a-zA-Z0-9_\s[\]{}()])" beginRegion="String" />
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- q[qwx] # == comment, look for the delim on the next line -->
+      </context>
+      <context name="find_qw" attribute="Normal Text" lineEndContext="#stay" >
+        <DetectChar attribute="Operator" context="quote_word_paren" char="(" beginRegion="Wordlist" />
+        <DetectChar attribute="Operator" context="quote_word_brace" char="{" beginRegion="Wordlist" />
+        <DetectChar attribute="Operator" context="quote_word_bracket" char="[" beginRegion="Wordlist" />
+        <RegExpr attribute="Operator" context="quote_word" String="([^a-zA-Z0-9_\s[\]{}()])" beginRegion="Wordlist" />
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- q[qwx] # == comment, look for the delim on the next line -->
+      </context>
+
+      <!-- ====== Contexts for strings ===== -->
+      <context name="ipstring_internal" attribute="String (interpolated)" lineEndContext="#stay">
+        <DetectIdentifier />
+        <RegExpr attribute="String Special Character" context="#stay" String="\\[UuLlEtnaefr]" />
+        <RegExpr attribute="String (interpolated)" context="#stay" String="\\." />
+        <RegExpr attribute="Normal Text" context="find_variable_unsafe" String="(?:[\$@]\S|%[\w{])" lookAhead="true" />
+      </context>
+      <context name="ip_string" attribute="String (interpolated)" lineEndContext="#stay">
+        <DetectChar attribute="Operator" context="#pop" char="&quot;" endRegion="String"/>
+        <IncludeRules context="ipstring_internal" />
+      </context>
+      <context name="ip_string_2" attribute="String (interpolated)" lineEndContext="#stay">
+        <RangeDetect attribute="String (interpolated)" context="#stay" char="(" char1=")" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char=")" endRegion="String" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
+      <context name="ip_string_3" attribute="String (interpolated)" lineEndContext="#stay">
+        <RangeDetect attribute="String (interpolated)" context="#stay" char="{" char1="}" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="}" endRegion="String" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
+      <context name="ip_string_4" attribute="String (interpolated)" lineEndContext="#stay">
+        <RangeDetect attribute="String (interpolated)" context="#stay" char="[" char1="]" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="]" endRegion="String" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
+      <context name="ip_string_5" attribute="String (interpolated)" lineEndContext="#stay">
+        <RangeDetect attribute="String (interpolated)" context="#stay" char="&lt;" char1="&gt;" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="&gt;" endRegion="String" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
+      <context name="ip_string_6" attribute="String (interpolated)" lineEndContext="#stay" dynamic="true">
+        <RegExpr attribute="String (interpolated)" context="#stay" String="\%1" dynamic="true" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="1" dynamic="true"  endRegion="String"/>
+        <IncludeRules context="ipstring_internal" />
+      </context>
+
+      <context name="string" attribute="String" lineEndContext="#stay">
+        <DetectIdentifier />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="'" />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />
+        <DetectChar attribute="Operator" context="#pop" char="'" endRegion="String" />
+      </context>
+      <context name="string_2" attribute="String" lineEndContext="#stay">
+        <DetectIdentifier />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1=")" />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />
+        <RangeDetect attribute="String" context="#stay" char="(" char1=")" />
+        <DetectChar attribute="Operator" context="#pop#pop" char=")" endRegion="String" />
+      </context>
+      <context name="string_3" attribute="String" lineEndContext="#stay">
+        <DetectIdentifier />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="}" />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />
+        <RangeDetect attribute="String" context="#stay" char="{" char1="}" />
+        <DetectChar attribute="Operator" context="#pop#pop" char="}" endRegion="String" />
+      </context>
+      <context name="string_4" attribute="String" lineEndContext="#stay">
+        <DetectIdentifier />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="]" />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />
+        <RangeDetect attribute="String" context="#stay" char="[" char1="]" />
+        <DetectChar attribute="Operator" context="#pop#pop" char="]" endRegion="String" />
+      </context>
+      <context name="string_5" attribute="String" lineEndContext="#stay">
+        <DetectIdentifier />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="&lt;" />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />
+        <Detect2Chars attribute="String" context="#stay" char="\" char1="&gt;" />
+        <RangeDetect attribute="String" context="#stay" char="&lt;" char1="&gt;" />
+        <DetectChar attribute="Operator" context="#pop#pop" char="&gt;" endRegion="String" />
+      </context>
+      <context name="string_6" attribute="String" lineEndContext="#stay" dynamic="true">
+        <DetectIdentifier />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />
+        <RegExpr attribute="String Special Character" context="#stay" String="\%1" dynamic="true"/>
+        <DetectChar attribute="Operator" context="#pop#pop" char="1" dynamic="true" endRegion="String" />
+      </context>
+
+      <!-- ====== contexts for  s/// ====== -->
+      <context name="find_subst" attribute="Normal Text" lineEndContext="#stay" >
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- s # == comment, look for the delim on the next line -->
+        <DetectChar attribute="Operator" context="subst_curlybrace_pattern" char="{" beginRegion="Pattern" />
+        <DetectChar attribute="Operator" context="subst_paren_pattern" char="(" beginRegion="Pattern" />
+        <DetectChar attribute="Operator" context="subst_bracket_pattern" char="[" beginRegion="Pattern" />
+        <DetectChar attribute="Operator" context="subst_sq_pattern" char="'" beginRegion="Pattern" />
+        <RegExpr attribute="Operator" context="subst_slash_pattern" String="([^\w\s[\]{}()])" beginRegion="Pattern" />
+      </context>
+
+      <!-- Fully parse s {} {}.
+           This means that
+           - comments are legal between PATTERN and REPLACEMENT
+           - REPLACEMENT can contain resursive {} blocks -->
+      <context name="subst_curlybrace_pattern" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+        <DetectChar attribute="Operator" context="subst_curlybrace_middle" char="}" endRegion="Pattern" />
+      </context>
+      <context name="subst_curlybrace_middle" attribute="Normal Text" lineEndContext="#stay" >
+        <RegExpr attribute="Comment" context="#stay" String="#.*$" />
+        <DetectChar attribute="Operator" context="subst_curlybrace_replace" char="{" beginRegion="Replacement" />
+      </context>
+      <context name="subst_curlybrace_replace" attribute="String (interpolated)" lineEndContext="#stay">
+        <IncludeRules context="ipstring_internal" />
+        <DetectChar attribute="Normal Text" context="subst_curlybrace_replace_recursive" char="{" beginRegion="Block" />
+        <RegExpr attribute="Operator" context="#pop#pop#pop#pop" String="\}[cegimosx]*" endRegion="Replacement" />
+      </context>
+      <context name="subst_curlybrace_replace_recursive" attribute="String (interpolated)" lineEndContext="#stay" >
+        <DetectChar attribute="String (interpolated)" context="subst_curlybrace_replace_recursive" char="{" beginRegion="Block" />
+        <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="Block" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
+
+      <context name="subst_paren_pattern" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+        <DetectChar attribute="Operator" context="subst_paren_replace" char="}" endRegion="Pattern" />
+      </context>
+      <context name="subst_paren_replace" attribute="String (interpolated)" lineEndContext="#stay">
+        <IncludeRules context="ipstring_internal" />
+        <DetectChar attribute="Operator" context="#stay" char="(" beginRegion="Replacement" />
+        <RegExpr attribute="Operator" context="#pop#pop#pop" String="\)[cegimosx]*" endRegion="Replacement" />
+      </context>
+
+      <context name="subst_bracket_pattern" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+        <DetectChar attribute="Operator" context="subst_bracket_replace" char="]" endRegion="Pattern" />
+      </context>
+      <context name="subst_bracket_replace" attribute="String (interpolated)" lineEndContext="#stay">
+        <IncludeRules context="ipstring_internal" />
+        <DetectChar attribute="Operator" context="#stay" char="[" beginRegion="Replacement" />
+        <RegExpr attribute="Operator" context="#pop#pop#pop" String="\][cegimosx]*" endRegion="Replacement" />
+      </context>
+
+      <context name="subst_slash_pattern" attribute="Pattern" lineEndContext="#stay" dynamic="true">
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=%1)" dynamic="true" />
+        <RegExpr attribute="Operator" context="subst_slash_replace" String="(%1)" dynamic="true" endRegion="Pattern" beginRegion="Replacement" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+      </context>
+      <context name="subst_slash_replace" attribute="String (interpolated)" lineEndContext="#stay" dynamic="true">
+        <IncludeRules context="ipstring_internal" />
+        <RegExpr attribute="Operator" context="#pop#pop#pop" String="%1[cegimosx]*" dynamic="true" endRegion="Replacement" />
+      </context>
+
+      <context name="subst_sq_pattern" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" />
+        <IncludeRules context="regex_pattern_internal" />
+        <DetectChar attribute="Operator" context="subst_sq_replace" char="'" endRegion="Pattern" beginRegion="Pattern" />
+      </context>
+      <context name="subst_sq_replace" attribute="String" lineEndContext="#stay">
+        <RegExpr attribute="Operator" context="#pop#pop#pop" String="'[cegimosx]*" endRegion="Replacement" />
+      </context>
+
+      <context name="tr" attribute="Pattern" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" >
+        <RegExpr attribute="Pattern" context="#pop" String="\([^)]*\)\s*\(?:[^)]*\)" />
+        <RegExpr attribute="Pattern" context="#pop" String="{[^}]*\}\s*\{[^}]*\}" />
+        <RegExpr attribute="Pattern" context="#pop" String="\[[^}]*\]\s*\[[^\]]*\]" />
+        <RegExpr attribute="Pattern" context="#pop" String="([^a-zA-Z0-9_\s[\]{}()]).*\1.*\1" minimal="true"/>
+      </context>
+
+      <!-- ====== PATTERNs ====== -->
+      <context name="find_pattern" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- s # == comment, look for the delim on the next line -->
+        <DetectChar attribute="Operator" context="pattern_brace" char="{" beginRegion="Pattern" />
+        <DetectChar attribute="Operator" context="pattern_paren" char="(" beginRegion="Pattern" />
+        <DetectChar attribute="Operator" context="pattern_bracket" char="[" beginRegion="Pattern" />
+        <DetectChar attribute="Operator" context="pattern_sq" char="'" beginRegion="Pattern" />
+        <RegExpr attribute="Operator" context="pattern" String="([^\w\s])" beginRegion="Pattern" />
+      </context>
+      <context name="pattern_slash" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=/)" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+        <RegExpr attribute="Operator" context="#pop" String="/[cgimosx]*" endRegion="Pattern" />
+      </context>
+      <context name="pattern" attribute="Pattern" lineEndContext="#stay" dynamic="true">
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=%1)" dynamic="true" />
+        <RegExpr attribute="Operator" context="#pop#pop" String="%1[cgimosx]*" dynamic="true" endRegion="Pattern" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=\%1)" dynamic="true" />
+      </context>
+      <context name="pattern_brace" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Operator" context="#pop#pop" String="\}[cgimosx]*" endRegion="Pattern" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+      </context>
+      <context name="pattern_bracket" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Operator" context="#pop#pop" String="\][cgimosx]*" endRegion="Pattern" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+      </context>
+      <context name="pattern_paren" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Operator" context="#pop#pop" String="\)[cgimosx]*" endRegion="Pattern" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+      </context>
+      <context name="pattern_sq" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Operator" context="#pop#pop" String="'[cgimosx]*" endRegion="Pattern" />
+        <IncludeRules context="regex_pattern_internal" />
+      </context>
+
+      <!-- rules internal stuff wrt regex patterns -->
+      <context name="regex_pattern_internal_rules_1" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#stay" String="#.*$" firstNonSpace="true" />
+        <RegExpr attribute="Pattern Character Class" context="#stay" String="\\[anDdSsWw]" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\\[ABbEGLlNUuQdQZz]" />
+        <RegExpr attribute="Special Variable" context="#stay" String="\\[\d]+" />
+        <RegExpr attribute="Pattern" context="#stay" String="\\." />
+      </context>
+      <context name="regex_pattern_internal_rules_2" lineEndContext="#stay">
+        <Detect2Chars attribute="Pattern Internal Operator" context="pat_ext" char="(" char1="?" />
+        <DetectChar attribute="Pattern Internal Operator" context="pat_char_class" char="[" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="[()?\^*+|]" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\{[\d, ]+\}" />
+        <DetectChar attribute="Pattern Internal Operator" context="#stay" char="$" />
+        <RegExpr attribute="Comment" context="#stay" String="\s{3,}#.*$" />
+      </context>
+      <context name="regex_pattern_internal" attribute="Pattern" lineEndContext="#stay">
+        <IncludeRules context="regex_pattern_internal_rules_1" />
+        <IncludeRules context="regex_pattern_internal_rules_2" />
+      </context>
+      <context name="regex_pattern_internal_ip" attribute="Pattern" lineEndContext="#stay" >
+        <IncludeRules context="regex_pattern_internal_rules_1" />
+        <!-- NOTE the below means that the special variables $' $], $} and $> are not supported
+             within interpolated PATTERNs (apart from $(, $) and ${ and $| not supported by perl).
+             This is because perl considers
+             s{foo$} {bar} OK as well as s{foo$}} {bar}, and detecting that is a huge work overload
+             for something that is unlikely to happen. -->
+        <RegExpr attribute="Data Type" context="find_variable_unsafe" String="[$@][^\]\s{}()|&gt;']" lookAhead="true" />
+        <IncludeRules context="regex_pattern_internal_rules_2" />
+      </context>
+      <context name="pat_ext" attribute="Pattern Internal Operator" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#pop" String="\#[^)]*" />
+        <RegExpr attribute="Pattern Internal Operator" context="#pop" String="[:=!&gt;&lt;]+" />
+        <DetectChar attribute="Pattern Internal Operator" context="#pop" char=")" />
+      </context>
+      <context name="pat_char_class" attribute="Pattern Character Class" lineEndContext="#stay">
+        <DetectChar attribute="Pattern Internal Operator" context="#stay" char="^" />
+        <Detect2Chars attribute="Pattern Character Class" context="#stay" char="\" char1="\" />
+        <Detect2Chars attribute="Pattern Character Class" context="#stay" char="\" char1="]" />
+        <RegExpr attribute="Pattern Character Class" context="#stay" String="\[:\^?[a-z]+:\]" />
+        <DetectChar attribute="Pattern Internal Operator" context="#pop" char="]" />
+      </context>
+
+      <!-- ====== Variables ====== -->
+      <context name="find_variable" attribute="Data Type" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" >
+        <RegExpr attribute="Special Variable" context="var_detect" String="\$[0-9]+" />
+        <RegExpr attribute="Special Variable" context="var_detect" String="[@\$](?:[\+\-_]\B|ARGV\b|INC\b)" />
+        <RegExpr attribute="Special Variable" context="var_detect" String="[%\$](?:INC\b|ENV\b|SIG\b)" />
+        <RegExpr attribute="Data Type" context="var_detect" String="\$\$[\$\w_]" />
+        <RegExpr attribute="Data Type" context="var_detect" String="\$[#_][\w_]" />
+        <RegExpr attribute="Data Type" context="var_detect" String="\$+::" />
+        <RegExpr attribute="Special Variable" context="#stay" String="\$[^a-zA-Z0-9\s{][A-Z]?" />
+        <RegExpr attribute="Data Type" context="var_detect" String="[\$@%]\{[\w_]+\}" />
+        <AnyChar attribute="Data Type" context="var_detect" String="$@%" />
+        <RegExpr attribute="Data Type" context="var_detect" String="\*[a-zA-Z_]+" />
+        <RegExpr attribute="Special Variable" context="#stay" String="\*[^a-zA-Z0-9\s{][A-Z]?" />
+        <!-- this should be a rare case! -->
+        <AnyChar attribute="Operator" context="#pop" String="$@%*" />
+      </context>
+      <!-- This does not check fo a trailing slash, for usage in strings. -->
+      <context name="find_variable_unsafe" attribute="Data Type" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" >
+        <RegExpr attribute="Special Variable" context="var_detect_unsafe" String="\$[0-9]+" />
+        <RegExpr attribute="Special Variable" context="var_detect_unsafe" String="[@\$](?:[\+\-_]\B|ARGV\b|INC\b)" />
+        <RegExpr attribute="Special Variable" context="var_detect_unsafe" String="[%\$](?:INC\b|ENV\b|SIG\b)" />
+        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\$\$[\$\w_]" />
+        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\$[#_][\w_]" />
+        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\$+::" />
+        <RegExpr attribute="Special Variable" context="#stay" String="\$[^a-zA-Z0-9\s{][A-Z]?" />
+        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="[\$@%]\{[\w_]+\}" />
+        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="[\$@%]" />
+        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\*\w+" />
+        <AnyChar attribute="Operator" context="#pop" String="$@%*" />
+      </context>
+      <context name="var_detect"  attribute="Data Type" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+        <IncludeRules context="var_detect_rules" />
+        <IncludeRules context="slash_safe_escape" />
+      </context>
+      <context name="var_detect_unsafe"  attribute="Data Type" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+        <IncludeRules context="var_detect_rules" />
+      </context>
+      <context name="var_detect_rules" attribute="Data Type" lineEndContext="#pop#pop" >
+        <RegExpr attribute="Data Type" context="#stay" String="[\w_]+" />
+        <Detect2Chars attribute="Normal Text" context="#stay" char=":" char1=":" />
+        <DetectChar attribute="Operator" context="#stay" char="'" />
+        <Detect2Chars attribute="Normal Text" context="#stay" char="-" char1="&gt;" />
+        <!-- safe with operator / -->
+        <Detect2Chars attribute="Normal Text" context="#stay" char="+" char1="+" />
+        <Detect2Chars attribute="Normal Text" context="#stay" char="-" char1="-" />
+      </context>
+
+
+      <!-- ====== Word lists ====== -->
+      <context name="quote_word" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <RegExpr attribute="Normal Text" context="#stay" String="\\%1" dynamic="true" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="1" dynamic="true" endRegion="Wordlist" />
+      </context>
+      <context name="quote_word_paren" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1=")" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char=")" endRegion="Wordlist" />
+      </context>
+      <context name="quote_word_brace" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1="}" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="}" endRegion="Wordlist" />
+      </context>
+      <context name="quote_word_bracket" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1="]" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="]" endRegion="Wordlist" />
+      </context>
+
+      <!-- ====== Here Documents ====== -->
+      <context name="find_here_document" attribute="Normal Text" lineEndContext="#pop" >
+        <RegExpr attribute="Keyword" context="here_document" String="(\w+)\s*;?" />
+        <RegExpr attribute="Keyword" context="here_document" String="\s*&quot;([^&quot;]+)&quot;\s*;?" />
+        <RegExpr attribute="Keyword" context="here_document" String="\s*`([^`]+)`\s*;?" />
+        <RegExpr attribute="Keyword" context="here_document_dumb" String="\s*'([^']+)'\s*;?" />
+      </context>
+      <context name="here_document" attribute="String (interpolated)" lineEndContext="#stay" dynamic="true">
+        <DetectSpaces />
+        <RegExpr attribute="Keyword" context="#pop#pop" String="%1" column="0" dynamic="true" endRegion="HereDocument"/>
+        <RegExpr attribute="Keyword" context="here_document" String="\=\s*&lt;&lt;\s*[&quot;']?([A-Z0-9_\-]+)[&quot;']?" beginRegion="HEREDoc" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
+      <context name="here_document_dumb" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
+        <DetectSpaces />
+        <RegExpr attribute="Keyword" context="#pop#pop" String="%1" column="0" dynamic="true" endRegion="HereDocument"/>
+        <DetectIdentifier />
+      </context>
+
+      <!-- ====== Misc ====== -->
+      <context name="data_handle" attribute="Data" lineEndContext="#stay">
+        <RegExpr attribute="Pod" context="pod" String="\=(?:head[1-6]|over|back|item|for|begin|end|pod)\s+.*" column="0" beginRegion="POD"/>
+        <StringDetect attribute="Keyword" context="normal" String="__END__" firstNonSpace="true" />
+      </context>
+      <context name="end_handle" attribute="Nothing" lineEndContext="#stay">
+        <RegExpr attribute="Pod" context="pod" String="^\=(?:head[1-6]|over|back|item|for|begin|end|pod)\s*.*"/>
+        <StringDetect attribute="Keyword" context="data_handle" String="__DATA__" firstNonSpace="true" />
+      </context>
+
+      <context name="Backticked" attribute="String (interpolated)" lineEndContext="#stay">
+        <IncludeRules context="ipstring_internal"/>
+        <DetectChar attribute="Operator" context="#pop" char="`"/>
+      </context>
+
+      <context name="slash_safe_escape" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="Normal Text" context="#pop" String="\s*\]?\s*/" />
+        <RegExpr attribute="Normal Text" context="#pop" String="\s*\}?\s*/" endRegion="Block" />
+        <RegExpr attribute="Normal Text" context="#pop" String="\s*\)?\s*/" />
+        <keyword attribute="Keyword" context="#pop" String="keywords" />
+      </context>
+
+      <context name="package_qualified_blank" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr attribute="Normal Text" context="#pop" String="[\w_]+" />
+      </context>
+
+      <context name="sub_name_def" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="Function" context="#stay" String="\w+" />
+        <RegExpr attribute="Normal Text" context="find_variable" String="\$\S" lookAhead="true" />
+        <RegExpr attribute="Normal Text" context="sub_arg_definition" String="\s*\(" />
+        <Detect2Chars attribute="Normal Text" context="#stay" char=":" char1=":" />
+      </context>
+
+      <context name="sub_arg_definition" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop">
+        <AnyChar attribute="Data Type" context="#stay" String="*$@%" />
+        <AnyChar attribute="Normal Text" context="#stay" String="&amp;\[];" />
+        <DetectChar attribute="Normal Text" context="slash_safe_escape" char=")" />
+      </context>
+
+      <context name="pod" attribute="Pod" lineEndContext="#stay">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <RegExpr attribute="Pod" context="#stay" String="\=(?:head[1-6]|over|back|item|for|begin|end|pod)\s*.*" column="0" beginRegion="POD" endRegion="POD"/>
+        <RegExpr attribute="Pod" context="#pop" String="\=cut.*$" column="0" endRegion="POD"/>
+      </context>
+
+      <context name="comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+      </context>
+
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text"               defStyleNum="dsNormal" />
+      <itemData name="Keyword"                   defStyleNum="dsKeyword" />
+      <itemData name="Pragma"                    defStyleNum="dsKeyword" />
+      <itemData name="Function"                  defStyleNum="dsFunction" />
+      <itemData name="Operator"                  defStyleNum="dsKeyword" color="#008000"/>
+      <itemData name="Data Type"                 defStyleNum="dsDataType" />
+      <itemData name="Special Variable"          defStyleNum="dsDataType" color="#C00000" selColor="#C00000" bold="0" italic="0" />
+      <itemData name="Decimal"                   defStyleNum="dsDecVal" />
+      <itemData name="Octal"                     defStyleNum="dsBaseN" />
+      <itemData name="Hex"                       defStyleNum="dsBaseN" />
+      <itemData name="Float"                     defStyleNum="dsFloat" />
+      <itemData name="String"                    defStyleNum="dsString" color="#FF6C6C" selColor="#FF6C6C" bold="0" italic="0" />
+      <itemData name="String (interpolated)"     defStyleNum="dsString" />
+      <itemData name="String Special Character"  defStyleNum="dsChar" />
+      <itemData name="Pattern"                   defStyleNum="dsOthers" />
+      <itemData name="Pattern Internal Operator" defStyleNum="dsChar" />
+      <itemData name="Pattern Character Class"   defStyleNum="dsBaseN" />
+      <itemData name="Data"                      defStyleNum="dsNormal" />
+      <itemData name="Comment"                   defStyleNum="dsComment" />
+      <itemData name="Pod"                       defStyleNum="dsComment" />
+      <itemData name="Nothing"                   defStyleNum="dsComment" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="#" />
+    </comments>
+    <keywords casesensitive="1" />
+  </general>
+</language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
diff --git a/xml/perl.xml.bkp b/xml/perl.xml.bkp
new file mode 100644
--- /dev/null
+++ b/xml/perl.xml.bkp
@@ -0,0 +1,827 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!--
+   This file is part of the KDE project
+   Copyright (C) 2001, 2002, 2003, 2004 Anders Lund <anders@alweb.dk>
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public
+   License version 2 as published by the Free Software Foundation.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public License
+   along with this library; see the file COPYING.LIB.  If not, write to
+   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.
+
+   *** NOTICE ***
+   This file is maintained by Anders Lund <anders@alweb.dk>
+   Please do not commit changes without checking with me.
+
+   *** TODO ***
+
+   Work on the comment support in the REPLACEMENT part of s/// - we may support
+   the comment, if the line remainder does not contain the delimiter char.
+
+   Try to support ?PATTERN? (at least in one line, like if "\?(?=.*\?)" matches).
+
+   parse code behind '<<HEREDELIMITER' as code, or at least ignore it, to eol.
+   Requires the ability to pass the delimiter through a context level.
+
+   find a here delimiter like '*END*' (Shell.pm). Requires that when a regex is
+   inserting a dynamic string, it escapes [*(){}$[]
+
+   support for more regex extensions, such as (?>), (?{}), (?(cond)yes|no)
+
+   Enhance tr/// and y/// support.
+-->
+<language name="Perl" version="1.20" kateversion="2.4" section="Scripts" extensions="*.pl;*.pm" mimetype="application/x-perl;text/x-perl" author="Anders Lund (anders@alweb.dk)" license="LGPL">
+  <highlighting>
+    <list name="keywords">
+      <item> if </item>
+      <item> unless </item>
+      <item> else </item>
+      <item> elsif </item>
+      <item> while </item>
+      <item> until </item>
+      <item> for </item>
+      <item> each </item>
+      <item> foreach </item>
+      <item> next </item>
+      <item> last </item>
+      <item> break </item>
+      <item> continue </item>
+      <item> return </item>
+      <item> use </item>
+      <item> no </item>
+      <item> require </item>
+      <item> my </item>
+      <item> our </item>
+      <item> local </item>
+      <item> BEGIN </item>
+      <item> END </item>
+      <item>require</item>
+      <item> package </item>
+      <item> sub </item>
+      <item> do </item>
+      <item> __END__ </item>
+      <item> __DATA__ </item>
+      <item> __FILE__ </item>
+      <item> __LINE__ </item>
+      <item> __PACKAGE__ </item>
+    </list>
+    <list name="operators">
+      <item> = </item>
+      <item> != </item>
+      <item> ~= </item>
+      <item> += </item>
+      <item> -= </item>
+      <item> *= </item>
+      <item> /= </item>
+      <item> **= </item>
+      <item> |= </item>
+      <item> ||= </item>
+      <item> &amp;= </item>
+      <item> &amp;&amp;= </item>
+      <item> ?= </item>
+      <item> + </item>
+      <item> - </item>
+      <item> * </item>
+     <!-- <item> / </item>//-->
+      <item> % </item>
+      <item> || </item>
+      <item> &amp;&amp; </item>
+      <item> | </item>
+      <item> &amp; </item>
+      <item> &lt; </item>
+      <item> &lt;&lt; </item>
+      <item> &gt; </item>
+      <item> &gt;&gt; </item>
+      <item> ^ </item>
+      <item> -&gt; </item>
+      <item> =&gt; </item>
+      <item> . </item>
+      <item> , </item>
+      <item> ; </item>
+      <item> :: </item>
+      <item> \ </item>
+      <item> and </item>
+      <item> or </item>
+      <item> not </item>
+      <item> eq </item>
+      <item> ne </item>
+    </list>
+    <list name="functions">
+      <item>abs</item>
+      <item>accept</item>
+      <item>alarm</item>
+      <item>atan2</item>
+      <item>bind</item>
+      <item>binmode</item>
+      <item>bless</item>
+      <item>caller</item>
+      <item>chdir</item>
+      <item>chmod</item>
+      <item>chomp</item>
+      <item>chop</item>
+      <item>chown</item>
+      <item>chr</item>
+      <item>chroot</item>
+      <item>close</item>
+      <item>closedir</item>
+      <item>connect</item>
+      <item>cos</item>
+      <item>crypt</item>
+      <item>dbmclose</item>
+      <item>dbmopen</item>
+      <item>defined</item>
+      <item>delete</item>
+      <item>die</item>
+      <item>dump</item>
+      <item>endgrent</item>
+      <item>endhostent</item>
+      <item>endnetent</item>
+      <item>endprotoent</item>
+      <item>endpwent</item>
+      <item>endservent</item>
+      <item>eof</item>
+      <item>eval</item>
+      <item>exec</item>
+      <item>exists</item>
+      <item>exit</item>
+      <item>exp</item>
+      <item>fcntl</item>
+      <item>fileno</item>
+      <item>flock</item>
+      <item>fork</item>
+      <item>format</item>
+      <item>formline</item>
+      <item>getc</item>
+      <item>getgrent</item>
+      <item>getgrgid</item>
+      <item>getgrnam</item>
+      <item>gethostbyaddr</item>
+      <item>gethostbyname</item>
+      <item>gethostent</item>
+      <item>getlogin</item>
+      <item>getnetbyaddr</item>
+      <item>getnetbyname</item>
+      <item>getnetent</item>
+      <item>getpeername</item>
+      <item>getpgrp</item>
+      <item>getppid</item>
+      <item>getpriority</item>
+      <item>getprotobyname</item>
+      <item>getprotobynumber</item>
+      <item>getprotoent</item>
+      <item>getpwent</item>
+      <item>getpwnam</item>
+      <item>getpwuid</item>
+      <item>getservbyname</item>
+      <item>getservbyport</item>
+      <item>getservent</item>
+      <item>getsockname</item>
+      <item>getsockopt</item>
+      <item>glob</item>
+      <item>gmtime</item>
+      <item>goto</item>
+      <item>grep</item>
+      <item>hex</item>
+      <item>import</item>
+      <item>index</item>
+      <item>int</item>
+      <item>ioctl</item>
+      <item>join</item>
+      <item>keys</item>
+      <item>kill</item>
+      <item>last</item>
+      <item>lc</item>
+      <item>lcfirst</item>
+      <item>length</item>
+      <item>link</item>
+      <item>listen</item>
+      <item>localtime</item>
+      <item>lock</item>
+      <item>log</item>
+      <item>lstat</item>
+      <item>map</item>
+      <item>mkdir</item>
+      <item>msgctl</item>
+      <item>msgget</item>
+      <item>msgrcv</item>
+      <item>msgsnd</item>
+      <item>oct</item>
+      <item>open</item>
+      <item>opendir</item>
+      <item>ord</item>
+      <item>pack</item>
+      <item>package</item>
+      <item>pipe</item>
+      <item>pop</item>
+      <item>pos</item>
+      <item>print</item>
+      <item>printf</item>
+      <item>prototype</item>
+      <item>push</item>
+      <item>quotemeta</item>
+      <item>rand</item>
+      <item>read</item>
+      <item>readdir</item>
+      <item>readline</item>
+      <item>readlink</item>
+      <item>recv</item>
+      <item>redo</item>
+      <item>ref</item>
+      <item>rename</item>
+      <item>reset</item>
+      <item>return</item>
+      <item>reverse</item>
+      <item>rewinddir</item>
+      <item>rindex</item>
+      <item>rmdir</item>
+      <item>scalar</item>
+      <item>seek</item>
+      <item>seekdir</item>
+      <item>select</item>
+      <item>semctl</item>
+      <item>semget</item>
+      <item>semop</item>
+      <item>send</item>
+      <item>setgrent</item>
+      <item>sethostent</item>
+      <item>setnetent</item>
+      <item>setpgrp</item>
+      <item>setpriority</item>
+      <item>setprotoent</item>
+      <item>setpwent</item>
+      <item>setservent</item>
+      <item>setsockopt</item>
+      <item>shift</item>
+      <item>shmctl</item>
+      <item>shmget</item>
+      <item>shmread</item>
+      <item>shmwrite</item>
+      <item>shutdown</item>
+      <item>sin</item>
+      <item>sleep</item>
+      <item>socket</item>
+      <item>socketpair</item>
+      <item>sort</item>
+      <item>splice</item>
+      <item>split</item>
+      <item>sprintf</item>
+      <item>sqrt</item>
+      <item>srand</item>
+      <item>stat</item>
+      <item>study</item>
+      <item>sub</item>
+      <item>substr</item>
+      <item>symlink</item>
+      <item>syscall</item>
+      <item>sysread</item>
+      <item>sysseek</item>
+      <item>system</item>
+      <item>syswrite</item>
+      <item>tell</item>
+      <item>telldir</item>
+      <item>tie</item>
+      <item>time</item>
+      <item>times</item>
+      <item>truncate</item>
+      <item>uc</item>
+      <item>ucfirst</item>
+      <item>umask</item>
+      <item>undef</item>
+      <item>unlink</item>
+      <item>unpack</item>
+      <item>unshift</item>
+      <item>untie</item>
+      <item>utime</item>
+      <item>values</item>
+      <item>vec</item>
+      <item>wait</item>
+      <item>waitpid</item>
+      <item>wantarray</item>
+      <item>warn</item>
+      <item>write</item>
+    </list>
+    <list name="pragmas">
+      <item>strict</item>
+      <item>english</item>
+      <item>warnings</item>
+      <item>vars</item>
+      <item>subs</item>
+      <item>utf8</item>
+      <item>sigtrap</item>
+      <item>locale</item>
+      <item>open</item>
+      <item>less</item>
+      <item>integer</item>
+      <item>filetest</item>
+      <item>constant</item>
+      <item>bytes</item>
+      <item>diagnostics</item>
+    </list>
+    <contexts>
+      <context name="normal" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr attribute="Keyword" context="#stay" String="^#!\/.*" />
+        <StringDetect attribute="Keyword" context="data_handle" String="__DATA__" firstNonSpace="true" />
+        <StringDetect attribute="Keyword" context="#stay" String="__END__" firstNonSpace="true"/>
+        <RegExpr attribute="Keyword" context="sub_name_def" String="\bsub\s+" />
+        <keyword attribute="Keyword" context="#stay" String="keywords" />
+        <keyword attribute="Operator" context="#stay" String="operators" />
+        <keyword attribute="Function" context="#stay" String="functions" />
+        <keyword attribute="Pragma" context="#stay" String="pragmas" />
+        <RegExpr attribute="Pod" context="pod" String="\=(?:head[1-6]|over|back|item|for|begin|end|pod)(\s|$)" column="0" beginRegion="POD"/>
+        <DetectSpaces />
+        <DetectChar attribute="Comment" context="comment" char="#" />
+
+        <HlCOct attribute="Octal" context="slash_safe_escape" />
+        <HlCHex attribute="Hex" context="slash_safe_escape" />
+        <Float attribute="Float" context="slash_safe_escape" />
+        <Int attribute="Decimal" context="slash_safe_escape" />
+
+        <RegExpr attribute="Normal Text" context="#stay" String="\\([&quot;'])[^\1]" />
+        <Detect2Chars attribute="Normal Text" context="#stay" char="&amp;" char1="'" /><!-- ??? -->
+        <DetectChar attribute="Operator" context="ip_string" char="&quot;" beginRegion="String" />
+        <DetectChar attribute="Operator" context="string" char="'"  beginRegion="String"/>
+        <DetectChar attribute="Operator" context="Backticked" char="`" />
+
+        <RegExpr attribute="Normal Text" context="find_variable" String="(?:[$@]\S|%[\w{]|\*[^\d\*{\$@%=(])" lookAhead="true" />
+
+        <RegExpr attribute="Keyword" context="#stay" String="&lt;[A-Z0-9_]+&gt;" />
+
+        <RegExpr attribute="Operator" context="find_here_document" String="\s*&lt;&lt;(?=\w+|\s*[&quot;'])" beginRegion="HereDocument" />
+
+        <RegExpr attribute="Normal Text" context="#stay" String="\s*\}\s*/" endRegion="Block"/>
+        <RegExpr attribute="Normal Text" context="#stay" String="\s*[)]\s*/" />
+        <RegExpr attribute="Function" context="sub_name_def" String="\w+::" />
+        <RegExpr attribute="Normal Text" context="#stay" String="\w+[=]" />
+
+        <RegExpr attribute="Operator" context="find_quoted" String="\bq(?=[qwx]?\s*[^\w\s])" />
+        <RegExpr attribute="Operator" context="find_subst" String="\bs(?=\s*[^\w\s])" />
+        <RegExpr attribute="Operator" context="tr" String="\b(?:tr|y)\s*(?=[^\w\s\]})])" />
+
+        <RegExpr attribute="Operator" context="find_pattern" String="\b(?:m|qr)(?=\s*[^\w\s\]})])" />
+
+        <RegExpr attribute="Normal Text" context="#stay" String="[\w_]+\s*/" />
+        <RegExpr attribute="Normal Text" context="#stay" String="[&lt;&gt;&quot;':]/" />
+        <DetectChar attribute="Operator" context="pattern_slash" char="/" beginRegion="Pattern" />
+        <RegExpr attribute="Operator" context="#stay" String="-[rwxoRWXOeszfdlpSbctugkTBMAC]" />
+
+        <DetectChar attribute="Normal Text" context="#stay" char="{" beginRegion="Block" />
+        <DetectChar attribute="Normal Text" context="#stay" char="}" endRegion="Block" />
+      </context>
+
+      <!-- ====== quoted construct central ===== -->
+      <context name="find_quoted" attribute="Normal Text" lineEndContext="#stay" >
+        <!-- NOTE - qx'not interpolated regex' does not cover newline between "qr" and "'" -->
+        <RegExpr attribute="Operator" context="string_6" String="x\s*(')" beginRegion="String" />
+        <AnyChar attribute="Operator" context="find_qqx" String="qx" />
+        <DetectChar attribute="Operator" context="find_qw" char="w" />
+        <DetectChar attribute="Operator" context="string_2" char="(" beginRegion="String" />
+        <DetectChar attribute="Operator" context="string_3" char="{" beginRegion="String" />
+        <DetectChar attribute="Operator" context="string_4" char="[" beginRegion="String" />
+        <DetectChar attribute="Operator" context="string_5" char="&lt;" beginRegion="String" />
+        <RegExpr attribute="Operator" context="string_6" String="([^a-zA-Z0-9_\s[\]{}()])" beginRegion="String" />
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- q[qwx] # == comment, look for the delim on the next line -->
+      </context>
+      <context name="find_qqx" attribute="Normal Text" lineEndContext="#stay" >
+        <DetectChar attribute="Operator" context="ip_string_2" char="(" beginRegion="String" />
+        <DetectChar attribute="Operator" context="ip_string_3" char="{" beginRegion="String" />
+        <DetectChar attribute="Operator" context="ip_string_4" char="[" beginRegion="String" />
+        <DetectChar attribute="Operator" context="ip_string_5" char="&lt;" beginRegion="String" />
+        <RegExpr attribute="Operator" context="ip_string_6" String="([^a-zA-Z0-9_\s[\]{}()])" beginRegion="String" />
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- q[qwx] # == comment, look for the delim on the next line -->
+      </context>
+      <context name="find_qw" attribute="Normal Text" lineEndContext="#stay" >
+        <DetectChar attribute="Operator" context="quote_word_paren" char="(" beginRegion="Wordlist" />
+        <DetectChar attribute="Operator" context="quote_word_brace" char="{" beginRegion="Wordlist" />
+        <DetectChar attribute="Operator" context="quote_word_bracket" char="[" beginRegion="Wordlist" />
+        <RegExpr attribute="Operator" context="quote_word" String="([^a-zA-Z0-9_\s[\]{}()])" beginRegion="Wordlist" />
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- q[qwx] # == comment, look for the delim on the next line -->
+      </context>
+
+      <!-- ====== Contexts for strings ===== -->
+      <context name="ipstring_internal" attribute="String (interpolated)" lineEndContext="#stay">
+        <DetectIdentifier />
+        <RegExpr attribute="String Special Character" context="#stay" String="\\[UuLlEtnaefr]" />
+        <RegExpr attribute="String (interpolated)" context="#stay" String="\\." />
+        <RegExpr attribute="Normal Text" context="find_variable_unsafe" String="(?:[\$@]\S|%[\w{])" lookAhead="true" />
+      </context>
+      <context name="ip_string" attribute="String (interpolated)" lineEndContext="#stay">
+        <DetectChar attribute="Operator" context="#pop" char="&quot;" endRegion="String"/>
+        <IncludeRules context="ipstring_internal" />
+      </context>
+      <context name="ip_string_2" attribute="String (interpolated)" lineEndContext="#stay">
+        <RangeDetect attribute="String (interpolated)" context="#stay" char="(" char1=")" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char=")" endRegion="String" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
+      <context name="ip_string_3" attribute="String (interpolated)" lineEndContext="#stay">
+        <RangeDetect attribute="String (interpolated)" context="#stay" char="{" char1="}" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="}" endRegion="String" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
+      <context name="ip_string_4" attribute="String (interpolated)" lineEndContext="#stay">
+        <RangeDetect attribute="String (interpolated)" context="#stay" char="[" char1="]" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="]" endRegion="String" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
+      <context name="ip_string_5" attribute="String (interpolated)" lineEndContext="#stay">
+        <RangeDetect attribute="String (interpolated)" context="#stay" char="&lt;" char1="&gt;" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="&gt;" endRegion="String" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
+      <context name="ip_string_6" attribute="String (interpolated)" lineEndContext="#stay" dynamic="true">
+        <RegExpr attribute="String (interpolated)" context="#stay" String="\%1" dynamic="true" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="1" dynamic="true"  endRegion="String"/>
+        <IncludeRules context="ipstring_internal" />
+      </context>
+
+      <context name="string" attribute="String" lineEndContext="#stay">
+        <DetectIdentifier />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="'" />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />
+        <DetectChar attribute="Operator" context="#pop" char="'" endRegion="String" />
+      </context>
+      <context name="string_2" attribute="String" lineEndContext="#stay">
+        <DetectIdentifier />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1=")" />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />
+        <RangeDetect attribute="String" context="#stay" char="(" char1=")" />
+        <DetectChar attribute="Operator" context="#pop#pop" char=")" endRegion="String" />
+      </context>
+      <context name="string_3" attribute="String" lineEndContext="#stay">
+        <DetectIdentifier />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="}" />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />
+        <RangeDetect attribute="String" context="#stay" char="{" char1="}" />
+        <DetectChar attribute="Operator" context="#pop#pop" char="}" endRegion="String" />
+      </context>
+      <context name="string_4" attribute="String" lineEndContext="#stay">
+        <DetectIdentifier />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="]" />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />
+        <RangeDetect attribute="String" context="#stay" char="[" char1="]" />
+        <DetectChar attribute="Operator" context="#pop#pop" char="]" endRegion="String" />
+      </context>
+      <context name="string_5" attribute="String" lineEndContext="#stay">
+        <DetectIdentifier />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="&lt;" />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />
+        <Detect2Chars attribute="String" context="#stay" char="\" char1="&gt;" />
+        <RangeDetect attribute="String" context="#stay" char="&lt;" char1="&gt;" />
+        <DetectChar attribute="Operator" context="#pop#pop" char="&gt;" endRegion="String" />
+      </context>
+      <context name="string_6" attribute="String" lineEndContext="#stay" dynamic="true">
+        <DetectIdentifier />
+        <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />
+        <RegExpr attribute="String Special Character" context="#stay" String="\%1" dynamic="true"/>
+        <DetectChar attribute="Operator" context="#pop#pop" char="1" dynamic="true" endRegion="String" />
+      </context>
+
+      <!-- ====== contexts for  s/// ====== -->
+      <context name="find_subst" attribute="Normal Text" lineEndContext="#stay" >
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- s # == comment, look for the delim on the next line -->
+        <DetectChar attribute="Operator" context="subst_curlybrace_pattern" char="{" beginRegion="Pattern" />
+        <DetectChar attribute="Operator" context="subst_paren_pattern" char="(" beginRegion="Pattern" />
+        <DetectChar attribute="Operator" context="subst_bracket_pattern" char="[" beginRegion="Pattern" />
+        <DetectChar attribute="Operator" context="subst_sq_pattern" char="'" beginRegion="Pattern" />
+        <RegExpr attribute="Operator" context="subst_slash_pattern" String="([^\w\s[\]{}()])" beginRegion="Pattern" />
+      </context>
+
+      <!-- Fully parse s {} {}.
+           This means that
+           - comments are legal between PATTERN and REPLACEMENT
+           - REPLACEMENT can contain resursive {} blocks -->
+      <context name="subst_curlybrace_pattern" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+        <DetectChar attribute="Operator" context="subst_curlybrace_middle" char="}" endRegion="Pattern" />
+      </context>
+      <context name="subst_curlybrace_middle" attribute="Normal Text" lineEndContext="#stay" >
+        <RegExpr attribute="Comment" context="#stay" String="#.*$" />
+        <DetectChar attribute="Operator" context="subst_curlybrace_replace" char="{" beginRegion="Replacement" />
+      </context>
+      <context name="subst_curlybrace_replace" attribute="String (interpolated)" lineEndContext="#stay">
+        <IncludeRules context="ipstring_internal" />
+        <DetectChar attribute="Normal Text" context="subst_curlybrace_replace_recursive" char="{" beginRegion="Block" />
+        <RegExpr attribute="Operator" context="#pop#pop#pop#pop" String="\}[cegimosx]*" endRegion="Replacement" />
+      </context>
+      <context name="subst_curlybrace_replace_recursive" attribute="String (interpolated)" lineEndContext="#stay" >
+        <DetectChar attribute="String (interpolated)" context="subst_curlybrace_replace_recursive" char="{" beginRegion="Block" />
+        <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="Block" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
+
+      <context name="subst_paren_pattern" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+        <DetectChar attribute="Operator" context="subst_paren_replace" char="}" endRegion="Pattern" />
+      </context>
+      <context name="subst_paren_replace" attribute="String (interpolated)" lineEndContext="#stay">
+        <IncludeRules context="ipstring_internal" />
+        <DetectChar attribute="Operator" context="#stay" char="(" beginRegion="Replacement" />
+        <RegExpr attribute="Operator" context="#pop#pop#pop" String="\)[cegimosx]*" endRegion="Replacement" />
+      </context>
+
+      <context name="subst_bracket_pattern" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+        <DetectChar attribute="Operator" context="subst_bracket_replace" char="]" endRegion="Pattern" />
+      </context>
+      <context name="subst_bracket_replace" attribute="String (interpolated)" lineEndContext="#stay">
+        <IncludeRules context="ipstring_internal" />
+        <DetectChar attribute="Operator" context="#stay" char="[" beginRegion="Replacement" />
+        <RegExpr attribute="Operator" context="#pop#pop#pop" String="\][cegimosx]*" endRegion="Replacement" />
+      </context>
+
+      <context name="subst_slash_pattern" attribute="Pattern" lineEndContext="#stay" dynamic="true">
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=%1)" dynamic="true" />
+        <RegExpr attribute="Operator" context="subst_slash_replace" String="(%1)" dynamic="true" endRegion="Pattern" beginRegion="Replacement" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+      </context>
+      <context name="subst_slash_replace" attribute="String (interpolated)" lineEndContext="#stay" dynamic="true">
+        <IncludeRules context="ipstring_internal" />
+        <RegExpr attribute="Operator" context="#pop#pop#pop" String="%1[cegimosx]*" dynamic="true" endRegion="Replacement" />
+      </context>
+
+      <context name="subst_sq_pattern" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" />
+        <IncludeRules context="regex_pattern_internal" />
+        <DetectChar attribute="Operator" context="subst_sq_replace" char="'" endRegion="Pattern" beginRegion="Pattern" />
+      </context>
+      <context name="subst_sq_replace" attribute="String" lineEndContext="#stay">
+        <RegExpr attribute="Operator" context="#pop#pop#pop" String="'[cegimosx]*" endRegion="Replacement" />
+      </context>
+
+      <context name="tr" attribute="Pattern" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" >
+        <RegExpr attribute="Pattern" context="#pop" String="([^)]*\)\s*\(?:[^)]*\)" />
+        <RegExpr attribute="Pattern" context="#pop" String="{[^}]*\}\s*\{[^}]*\}" />
+        <RegExpr attribute="Pattern" context="#pop" String="\[[^}]*\]\s*\[[^\]]*\]" />
+        <RegExpr attribute="Pattern" context="#pop" String="([^a-zA-Z0-9_\s[\]{}()]).*\1.*\1" minimal="true"/>
+      </context>
+
+      <!-- ====== PATTERNs ====== -->
+      <context name="find_pattern" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- s # == comment, look for the delim on the next line -->
+        <DetectChar attribute="Operator" context="pattern_brace" char="{" beginRegion="Pattern" />
+        <DetectChar attribute="Operator" context="pattern_paren" char="(" beginRegion="Pattern" />
+        <DetectChar attribute="Operator" context="pattern_bracket" char="[" beginRegion="Pattern" />
+        <DetectChar attribute="Operator" context="pattern_sq" char="'" beginRegion="Pattern" />
+        <RegExpr attribute="Operator" context="pattern" String="([^\w\s])" beginRegion="Pattern" />
+      </context>
+      <context name="pattern_slash" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=/)" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+        <RegExpr attribute="Operator" context="#pop" String="/[cgimosx]*" endRegion="Pattern" />
+      </context>
+      <context name="pattern" attribute="Pattern" lineEndContext="#stay" dynamic="true">
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=%1)" dynamic="true" />
+        <RegExpr attribute="Operator" context="#pop#pop" String="%1[cgimosx]*" dynamic="true" endRegion="Pattern" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=\%1)" dynamic="true" />
+      </context>
+      <context name="pattern_brace" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Operator" context="#pop#pop" String="\}[cgimosx]*" endRegion="Pattern" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+      </context>
+      <context name="pattern_bracket" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Operator" context="#pop#pop" String="\][cgimosx]*" endRegion="Pattern" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+      </context>
+      <context name="pattern_paren" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Operator" context="#pop#pop" String="\)[cgimosx]*" endRegion="Pattern" />
+        <IncludeRules context="regex_pattern_internal_ip" />
+      </context>
+      <context name="pattern_sq" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr attribute="Operator" context="#pop#pop" String="'[cgimosx]*" endRegion="Pattern" />
+        <IncludeRules context="regex_pattern_internal" />
+      </context>
+
+      <!-- rules internal stuff wrt regex patterns -->
+      <context name="regex_pattern_internal_rules_1" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#stay" String="#.*$" firstNonSpace="true" />
+        <RegExpr attribute="Pattern Character Class" context="#stay" String="\\[anDdSsWw]" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\\[ABbEGLlNUuQdQZz]" />
+        <RegExpr attribute="Special Variable" context="#stay" String="\\[\d]+" />
+        <RegExpr attribute="Pattern" context="#stay" String="\\." />
+      </context>
+      <context name="regex_pattern_internal_rules_2" lineEndContext="#stay">
+        <Detect2Chars attribute="Pattern Internal Operator" context="pat_ext" char="(" char1="?" />
+        <DetectChar attribute="Pattern Internal Operator" context="pat_char_class" char="[" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="[()?^*+|]" />
+        <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\{[\d, ]+\}" />
+        <DetectChar attribute="Pattern Internal Operator" context="#stay" char="$" />
+        <RegExpr attribute="Comment" context="#stay" String="\s{3,}#.*$" />
+      </context>
+      <context name="regex_pattern_internal" attribute="Pattern" lineEndContext="#stay">
+        <IncludeRules context="regex_pattern_internal_rules_1" />
+        <IncludeRules context="regex_pattern_internal_rules_2" />
+      </context>
+      <context name="regex_pattern_internal_ip" attribute="Pattern" lineEndContext="#stay" >
+        <IncludeRules context="regex_pattern_internal_rules_1" />
+        <!-- NOTE the below means that the special variables $' $], $} and $> are not supported
+             within interpolated PATTERNs (apart from $(, $) and ${ and $| not supported by perl).
+             This is because perl considers
+             s{foo$} {bar} OK as well as s{foo$}} {bar}, and detecting that is a huge work overload
+             for something that is unlikely to happen. -->
+        <RegExpr attribute="Data Type" context="find_variable_unsafe" String="[$@][^]\s{}()|&gt;']" lookAhead="true" />
+        <IncludeRules context="regex_pattern_internal_rules_2" />
+      </context>
+      <context name="pat_ext" attribute="Pattern Internal Operator" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#pop" String="\#[^)]*" />
+        <RegExpr attribute="Pattern Internal Operator" context="#pop" String="[:=!&gt;&lt;]+" />
+        <DetectChar attribute="Pattern Internal Operator" context="#pop" char=")" />
+      </context>
+      <context name="pat_char_class" attribute="Pattern Character Class" lineEndContext="#stay">
+        <DetectChar attribute="Pattern Internal Operator" context="#stay" char="^" />
+        <Detect2Chars attribute="Pattern Character Class" context="#stay" char="\" char1="\" />
+        <Detect2Chars attribute="Pattern Character Class" context="#stay" char="\" char1="]" />
+        <RegExpr attribute="Pattern Character Class" context="#stay" String="\[:^?[a-z]+:\]" />
+        <DetectChar attribute="Pattern Internal Operator" context="#pop" char="]" />
+      </context>
+
+      <!-- ====== Variables ====== -->
+      <context name="find_variable" attribute="Data Type" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" >
+        <RegExpr attribute="Special Variable" context="var_detect" String="\$[0-9]+" />
+        <RegExpr attribute="Special Variable" context="var_detect" String="[@\$](?:[\+\-_]\B|ARGV\b|INC\b)" />
+        <RegExpr attribute="Special Variable" context="var_detect" String="[%\$](?:INC\b|ENV\b|SIG\b)" />
+        <RegExpr attribute="Data Type" context="var_detect" String="\$\$[\$\w_]" />
+        <RegExpr attribute="Data Type" context="var_detect" String="\$[#_][\w_]" />
+        <RegExpr attribute="Data Type" context="var_detect" String="\$+::" />
+        <RegExpr attribute="Special Variable" context="#stay" String="\$[^a-zA-Z0-9\s{][A-Z]?" />
+        <RegExpr attribute="Data Type" context="var_detect" String="[\$@%]\{[\w_]+\}" />
+        <AnyChar attribute="Data Type" context="var_detect" String="$@%" />
+        <RegExpr attribute="Data Type" context="var_detect" String="\*[a-zA-Z_]+" />
+        <RegExpr attribute="Special Variable" context="#stay" String="\*[^a-zA-Z0-9\s{][A-Z]?" />
+        <!-- this should be a rare case! -->
+        <AnyChar attribute="Operator" context="#pop" String="$@%*" />
+      </context>
+      <!-- This does not check fo a trailing slash, for usage in strings. -->
+      <context name="find_variable_unsafe" attribute="Data Type" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" >
+        <RegExpr attribute="Special Variable" context="var_detect_unsafe" String="\$[0-9]+" />
+        <RegExpr attribute="Special Variable" context="var_detect_unsafe" String="[@\$](?:[\+\-_]\B|ARGV\b|INC\b)" />
+        <RegExpr attribute="Special Variable" context="var_detect_unsafe" String="[%\$](?:INC\b|ENV\b|SIG\b)" />
+        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\$\$[\$\w_]" />
+        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\$[#_][\w_]" />
+        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\$+::" />
+        <RegExpr attribute="Special Variable" context="#stay" String="\$[^a-zA-Z0-9\s{][A-Z]?" />
+        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="[\$@%]\{[\w_]+\}" />
+        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="[\$@%]" />
+        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\*\w+" />
+        <AnyChar attribute="Operator" context="#pop" String="$@%*" />
+      </context>
+      <context name="var_detect"  attribute="Data Type" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+        <IncludeRules context="var_detect_rules" />
+        <IncludeRules context="slash_safe_escape" />
+      </context>
+      <context name="var_detect_unsafe"  attribute="Data Type" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+        <IncludeRules context="var_detect_rules" />
+      </context>
+      <context name="var_detect_rules" attribute="Data Type" lineEndContext="#pop#pop" >
+        <RegExpr attribute="Data Type" context="#stay" String="[\w_]+" />
+        <Detect2Chars attribute="Normal Text" context="#stay" char=":" char1=":" />
+        <DetectChar attribute="Operator" context="#stay" char="'" />
+        <Detect2Chars attribute="Normal Text" context="#stay" char="-" char1="&gt;" />
+        <!-- safe with operator / -->
+        <Detect2Chars attribute="Normal Text" context="#stay" char="+" char1="+" />
+        <Detect2Chars attribute="Normal Text" context="#stay" char="-" char1="-" />
+      </context>
+
+
+      <!-- ====== Word lists ====== -->
+      <context name="quote_word" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <RegExpr attribute="Normal Text" context="#stay" String="\\%1" dynamic="true" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="1" dynamic="true" endRegion="Wordlist" />
+      </context>
+      <context name="quote_word_paren" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1=")" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char=")" endRegion="Wordlist" />
+      </context>
+      <context name="quote_word_brace" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1="}" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="}" endRegion="Wordlist" />
+      </context>
+      <context name="quote_word_bracket" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1="]" />
+        <DetectChar attribute="Operator" context="#pop#pop#pop" char="]" endRegion="Wordlist" />
+      </context>
+
+      <!-- ====== Here Documents ====== -->
+      <context name="find_here_document" attribute="Normal Text" lineEndContext="#pop" >
+        <RegExpr attribute="Keyword" context="here_document" String="(\w+)\s*;?" />
+        <RegExpr attribute="Keyword" context="here_document" String="\s*&quot;([^&quot;]+)&quot;\s*;?" />
+        <RegExpr attribute="Keyword" context="here_document" String="\s*`([^`]+)`\s*;?" />
+        <RegExpr attribute="Keyword" context="here_document_dumb" String="\s*'([^']+)'\s*;?" />
+      </context>
+      <context name="here_document" attribute="String (interpolated)" lineEndContext="#stay" dynamic="true">
+        <DetectSpaces />
+        <RegExpr attribute="Keyword" context="#pop#pop" String="%1" column="0" dynamic="true" endRegion="HereDocument"/>
+        <RegExpr attribute="Keyword" context="here_document" String="\=\s*&lt;&lt;\s*[&quot;']?([A-Z0-9_\-]+)[&quot;']?" beginRegion="HEREDoc" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
+      <context name="here_document_dumb" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
+        <DetectSpaces />
+        <RegExpr attribute="Keyword" context="#pop#pop" String="%1" column="0" dynamic="true" endRegion="HereDocument"/>
+        <DetectIdentifier />
+      </context>
+
+      <!-- ====== Misc ====== -->
+      <context name="data_handle" attribute="Data" lineEndContext="#stay">
+        <RegExpr attribute="Pod" context="pod" String="\=(?:head[1-6]|over|back|item|for|begin|end|pod)\s+.*" column="0" beginRegion="POD"/>
+        <StringDetect attribute="Keyword" context="normal" String="__END__" firstNonSpace="true" />
+      </context>
+      <context name="end_handle" attribute="Nothing" lineEndContext="#stay">
+        <RegExpr attribute="Pod" context="pod" String="^\=(?:head[1-6]|over|back|item|for|begin|end|pod)\s*.*"/>
+        <StringDetect attribute="Keyword" context="data_handle" String="__DATA__" firstNonSpace="true" />
+      </context>
+
+      <context name="Backticked" attribute="String (interpolated)" lineEndContext="#stay">
+        <IncludeRules context="ipstring_internal"/>
+        <DetectChar attribute="Operator" context="#pop" char="`"/>
+      </context>
+
+      <context name="slash_safe_escape" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="Normal Text" context="#pop" String="\s*\]?\s*/" />
+        <RegExpr attribute="Normal Text" context="#pop" String="\s*\}?\s*/" endRegion="Block" />
+        <RegExpr attribute="Normal Text" context="#pop" String="\s*\)?\s*/" />
+        <keyword attribute="Keyword" context="#pop" String="keywords" />
+      </context>
+
+      <context name="package_qualified_blank" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr attribute="Normal Text" context="#pop" String="[\w_]+" />
+      </context>
+
+      <context name="sub_name_def" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="Function" context="#stay" String="\w+" />
+        <RegExpr attribute="Normal Text" context="find_variable" String="\$\S" lookAhead="true" />
+        <RegExpr attribute="Normal Text" context="sub_arg_definition" String="\s*\(" />
+        <Detect2Chars attribute="Normal Text" context="#stay" char=":" char1=":" />
+      </context>
+
+      <context name="sub_arg_definition" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop">
+        <AnyChar attribute="Data Type" context="#stay" String="*$@%" />
+        <AnyChar attribute="Normal Text" context="#stay" String="&amp;\[];" />
+        <DetectChar attribute="Normal Text" context="slash_safe_escape" char=")" />
+      </context>
+
+      <context name="pod" attribute="Pod" lineEndContext="#stay">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <RegExpr attribute="Pod" context="#stay" String="\=(?:head[1-6]|over|back|item|for|begin|end|pod)\s*.*" column="0" beginRegion="POD" endRegion="POD"/>
+        <RegExpr attribute="Pod" context="#pop" String="\=cut.*$" column="0" endRegion="POD"/>
+      </context>
+
+      <context name="comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
+      </context>
+
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text"               defStyleNum="dsNormal" />
+      <itemData name="Keyword"                   defStyleNum="dsKeyword" />
+      <itemData name="Pragma"                    defStyleNum="dsKeyword" />
+      <itemData name="Function"                  defStyleNum="dsFunction" />
+      <itemData name="Operator"                  defStyleNum="dsKeyword" color="#008000"/>
+      <itemData name="Data Type"                 defStyleNum="dsDataType" />
+      <itemData name="Special Variable"          defStyleNum="dsDataType" color="#C00000" selColor="#C00000" bold="0" italic="0" />
+      <itemData name="Decimal"                   defStyleNum="dsDecVal" />
+      <itemData name="Octal"                     defStyleNum="dsBaseN" />
+      <itemData name="Hex"                       defStyleNum="dsBaseN" />
+      <itemData name="Float"                     defStyleNum="dsFloat" />
+      <itemData name="String"                    defStyleNum="dsString" color="#FF6C6C" selColor="#FF6C6C" bold="0" italic="0" />
+      <itemData name="String (interpolated)"     defStyleNum="dsString" />
+      <itemData name="String Special Character"  defStyleNum="dsChar" />
+      <itemData name="Pattern"                   defStyleNum="dsOthers" />
+      <itemData name="Pattern Internal Operator" defStyleNum="dsChar" />
+      <itemData name="Pattern Character Class"   defStyleNum="dsBaseN" />
+      <itemData name="Data"                      defStyleNum="dsNormal" />
+      <itemData name="Comment"                   defStyleNum="dsComment" />
+      <itemData name="Pod"                       defStyleNum="dsComment" />
+      <itemData name="Nothing"                   defStyleNum="dsComment" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="#" />
+    </comments>
+    <keywords casesensitive="1" />
+  </general>
+</language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
diff --git a/xml/php.xml b/xml/php.xml
new file mode 100644
--- /dev/null
+++ b/xml/php.xml
@@ -0,0 +1,6572 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Changes:
+
+[ Version 1.32 (2007-12-02) ]
+
+- When leaving PHP context, make sure to close all brace regions (braces open a nested phpsource context for this purpose). This is a WORKAROUND for bug #143022 until feature #103257 is available.
+
+[ Version 1.31 (2007-11-29) ]
+
+- Add support for backtick operator. This has basically the same syntax as double quotes, so the two share most rules.
+
+[ Version 1.28 (2006-11-02) ]
+
+- Moved the special method names to a dedicated section (the coloration will default to the coloration of functions, but it can be customized independently, to revert to the previous coloration styles, that is, black, and bold).
+
+[ Version 1.27 (2006-11-01) ]
+
+- Added new special method names, from PHP 5.
+- Moved the special method names to the function list.
+
+[  Version 1.26 (2006-01-26) ]
+
+- Added alternative syntax control structures, and named logical operators ("and", "or", and "xor") (by Nicola Gigante).
+
+-->
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="PHP/PHP" version="1.32" kateversion="2.4" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">
+  <highlighting>
+    <list name="control structures">
+      <item>as</item>
+      <item>case</item>
+      <item>default</item>
+      <item>if</item>
+      <item>else</item>
+      <item>elseif</item>
+      <item>while</item>
+      <item>do</item>
+      <item>for</item>
+      <item>foreach</item>
+      <item>break</item>
+      <item>continue</item>
+      <item>switch</item>
+      <item>declare</item>
+      <item>return</item>
+      <item>require</item>
+      <item>include</item>
+      <item>require_once</item>
+      <item>include_once</item>
+      <item>endif</item>
+      <item>endwhile</item>
+      <item>endfor</item>
+      <item>endforeach</item>
+      <item>endswitch</item>
+    </list>
+    <list name="keywords">
+      <item> abstract </item>
+      <item> catch </item>
+      <item> class </item>
+      <item> clone </item>
+      <item> const </item>
+      <item> extends </item>
+      <item> final </item>
+      <item> function </item>
+      <item> implements </item>
+      <item> instanceof </item>
+      <item> interface </item>
+      <item> new </item>
+      <item> self </item>
+      <item> static </item>
+      <item> parent </item>
+      <item> private </item>
+      <item> protected </item>
+      <item> public </item>
+      <item> throw </item>
+      <item> try </item>
+      <item> and </item>
+      <item> or </item>
+      <item> xor </item>
+	<item> var </item>
+	<item> __FILE__ </item>
+	<item> __LINE__ </item>
+	<item> E_ERROR </item>
+	<item> E_WARNING </item>
+	<item> E_PARSE </item>
+	<item> E_NOTICE </item>
+	<item> E_STRICT </item>
+	<item> E_CORE_ERROR </item>
+	<item> E_CORE_WARNING </item>
+	<item> E_COMPILE_ERROR </item>
+	<item> E_COMPILE_WARNING </item>
+	<item> E_USER_ERROR </item>
+	<item> E_USER_WARNING </item>
+	<item> E_USER_NOTICE </item>
+	<item> E_ALL </item>
+	<item> TRUE </item>
+	<item> FALSE </item>
+	<item> ZEND_THREAD_SAFE </item>
+	<item> NULL </item>
+	<item> PHP_VERSION </item>
+	<item> PHP_OS </item>
+	<item> PHP_SAPI </item>
+	<item> DEFAULT_INCLUDE_PATH </item>
+	<item> PEAR_INSTALL_DIR </item>
+	<item> PEAR_EXTENSION_DIR </item>
+	<item> PHP_EXTENSION_DIR </item>
+	<item> PHP_PREFIX </item>
+	<item> PHP_BINDIR </item>
+	<item> PHP_LIBDIR </item>
+	<item> PHP_DATADIR </item>
+	<item> PHP_SYSCONFDIR </item>
+	<item> PHP_LOCALSTATEDIR </item>
+	<item> PHP_CONFIG_FILE_PATH </item>
+	<item> PHP_CONFIG_FILE_SCAN_DIR </item>
+	<item> PHP_SHLIB_SUFFIX </item>
+	<item> PHP_EOL </item>
+	<item> PHP_OUTPUT_HANDLER_START </item>
+	<item> PHP_OUTPUT_HANDLER_CONT </item>
+	<item> PHP_OUTPUT_HANDLER_END </item>
+	<item> UPLOAD_ERR_OK </item>
+	<item> UPLOAD_ERR_INI_SIZE </item>
+	<item> UPLOAD_ERR_FORM_SIZE </item>
+	<item> UPLOAD_ERR_PARTIAL </item>
+	<item> UPLOAD_ERR_NO_FILE </item>
+	<item> UPLOAD_ERR_NO_TMP_DIR </item>
+	<item> P_STATIC </item>
+	<item> P_PUBLIC </item>
+	<item> P_PROTECTED </item>
+	<item> P_PRIVATE </item>
+	<item> M_STATIC </item>
+	<item> M_PUBLIC </item>
+	<item> M_PROTECTED </item>
+	<item> M_PRIVATE </item>
+	<item> M_ABSTRACT </item>
+	<item> M_FINAL </item>
+	<item> C_IMPLICIT_ABSTRACT </item>
+	<item> C_EXPLICIT_ABSTRACT </item>
+	<item> C_FINAL </item>
+	<item> XML_ERROR_NONE </item>
+	<item> XML_ERROR_NO_MEMORY </item>
+	<item> XML_ERROR_SYNTAX </item>
+	<item> XML_ERROR_NO_ELEMENTS </item>
+	<item> XML_ERROR_INVALID_TOKEN </item>
+	<item> XML_ERROR_UNCLOSED_TOKEN </item>
+	<item> XML_ERROR_PARTIAL_CHAR </item>
+	<item> XML_ERROR_TAG_MISMATCH </item>
+	<item> XML_ERROR_DUPLICATE_ATTRIBUTE </item>
+	<item> XML_ERROR_JUNK_AFTER_DOC_ELEMENT </item>
+	<item> XML_ERROR_PARAM_ENTITY_REF </item>
+	<item> XML_ERROR_UNDEFINED_ENTITY </item>
+	<item> XML_ERROR_RECURSIVE_ENTITY_REF </item>
+	<item> XML_ERROR_ASYNC_ENTITY </item>
+	<item> XML_ERROR_BAD_CHAR_REF </item>
+	<item> XML_ERROR_BINARY_ENTITY_REF </item>
+	<item> XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF </item>
+	<item> XML_ERROR_MISPLACED_XML_PI </item>
+	<item> XML_ERROR_UNKNOWN_ENCODING </item>
+	<item> XML_ERROR_INCORRECT_ENCODING </item>
+	<item> XML_ERROR_UNCLOSED_CDATA_SECTION </item>
+	<item> XML_ERROR_EXTERNAL_ENTITY_HANDLING </item>
+	<item> XML_OPTION_CASE_FOLDING </item>
+	<item> XML_OPTION_TARGET_ENCODING </item>
+	<item> XML_OPTION_SKIP_TAGSTART </item>
+	<item> XML_OPTION_SKIP_WHITE </item>
+	<item> XML_SAX_IMPL </item>
+	<item> CONNECTION_ABORTED </item>
+	<item> CONNECTION_NORMAL </item>
+	<item> CONNECTION_TIMEOUT </item>
+	<item> INI_USER </item>
+	<item> INI_PERDIR </item>
+	<item> INI_SYSTEM </item>
+	<item> INI_ALL </item>
+	<item> SUNFUNCS_RET_TIMESTAMP </item>
+	<item> SUNFUNCS_RET_STRING </item>
+	<item> SUNFUNCS_RET_DOUBLE </item>
+	<item> M_E </item>
+	<item> M_LOG2E </item>
+	<item> M_LOG10E </item>
+	<item> M_LN2 </item>
+	<item> M_LN10 </item>
+	<item> M_PI </item>
+	<item> M_PI_2 </item>
+	<item> M_PI_4 </item>
+	<item> M_1_PI </item>
+	<item> M_2_PI </item>
+	<item> M_2_SQRTPI </item>
+	<item> M_SQRT2 </item>
+	<item> M_SQRT1_2 </item>
+	<item> INF </item>
+	<item> NAN </item>
+	<item> INFO_GENERAL </item>
+	<item> INFO_CREDITS </item>
+	<item> INFO_CONFIGURATION </item>
+	<item> INFO_MODULES </item>
+	<item> INFO_ENVIRONMENT </item>
+	<item> INFO_VARIABLES </item>
+	<item> INFO_LICENSE </item>
+	<item> INFO_ALL </item>
+	<item> CREDITS_GROUP </item>
+	<item> CREDITS_GENERAL </item>
+	<item> CREDITS_SAPI </item>
+	<item> CREDITS_MODULES </item>
+	<item> CREDITS_DOCS </item>
+	<item> CREDITS_FULLPAGE </item>
+	<item> CREDITS_QA </item>
+	<item> CREDITS_ALL </item>
+	<item> HTML_SPECIALCHARS </item>
+	<item> HTML_ENTITIES </item>
+	<item> ENT_COMPAT </item>
+	<item> ENT_QUOTES </item>
+	<item> ENT_NOQUOTES </item>
+	<item> STR_PAD_LEFT </item>
+	<item> STR_PAD_RIGHT </item>
+	<item> STR_PAD_BOTH </item>
+	<item> PATHINFO_DIRNAME </item>
+	<item> PATHINFO_BASENAME </item>
+	<item> PATHINFO_EXTENSION </item>
+	<item> CHAR_MAX </item>
+	<item> LC_CTYPE </item>
+	<item> LC_NUMERIC </item>
+	<item> LC_TIME </item>
+	<item> LC_COLLATE </item>
+	<item> LC_MONETARY </item>
+	<item> LC_ALL </item>
+	<item> LC_MESSAGES </item>
+	<item> SEEK_SET </item>
+	<item> SEEK_CUR </item>
+	<item> SEEK_END </item>
+	<item> LOCK_SH </item>
+	<item> LOCK_EX </item>
+	<item> LOCK_UN </item>
+	<item> LOCK_NB </item>
+	<item> STREAM_NOTIFY_CONNECT </item>
+	<item> STREAM_NOTIFY_AUTH_REQUIRED </item>
+	<item> STREAM_NOTIFY_AUTH_RESULT </item>
+	<item> STREAM_NOTIFY_MIME_TYPE_IS </item>
+	<item> STREAM_NOTIFY_FILE_SIZE_IS </item>
+	<item> STREAM_NOTIFY_REDIRECTED </item>
+	<item> STREAM_NOTIFY_PROGRESS </item>
+	<item> STREAM_NOTIFY_FAILURE </item>
+	<item> STREAM_NOTIFY_COMPLETED </item>
+	<item> STREAM_NOTIFY_RESOLVE </item>
+	<item> STREAM_NOTIFY_SEVERITY_INFO </item>
+	<item> STREAM_NOTIFY_SEVERITY_WARN </item>
+	<item> STREAM_NOTIFY_SEVERITY_ERR </item>
+	<item> STREAM_FILTER_READ </item>
+	<item> STREAM_FILTER_WRITE </item>
+	<item> STREAM_FILTER_ALL </item>
+	<item> STREAM_CLIENT_PERSISTENT </item>
+	<item> STREAM_CLIENT_ASYNC_CONNECT </item>
+	<item> STREAM_CLIENT_CONNECT </item>
+	<item> STREAM_PEEK </item>
+	<item> STREAM_OOB </item>
+	<item> STREAM_SERVER_BIND </item>
+	<item> STREAM_SERVER_LISTEN </item>
+	<item> FILE_USE_INCLUDE_PATH </item>
+	<item> FILE_IGNORE_NEW_LINES </item>
+	<item> FILE_SKIP_EMPTY_LINES </item>
+	<item> FILE_APPEND </item>
+	<item> FILE_NO_DEFAULT_CONTEXT </item>
+	<item> FNM_NOESCAPE </item>
+	<item> FNM_PATHNAME </item>
+	<item> FNM_PERIOD </item>
+	<item> FNM_CASEFOLD </item>
+	<item> PSFS_PASS_ON </item>
+	<item> PSFS_FEED_ME </item>
+	<item> PSFS_ERR_FATAL </item>
+	<item> PSFS_FLAG_NORMAL </item>
+	<item> PSFS_FLAG_FLUSH_INC </item>
+	<item> PSFS_FLAG_FLUSH_CLOSE </item>
+	<item> ABDAY_1 </item>
+	<item> ABDAY_2 </item>
+	<item> ABDAY_3 </item>
+	<item> ABDAY_4 </item>
+	<item> ABDAY_5 </item>
+	<item> ABDAY_6 </item>
+	<item> ABDAY_7 </item>
+	<item> DAY_1 </item>
+	<item> DAY_2 </item>
+	<item> DAY_3 </item>
+	<item> DAY_4 </item>
+	<item> DAY_5 </item>
+	<item> DAY_6 </item>
+	<item> DAY_7 </item>
+	<item> ABMON_1 </item>
+	<item> ABMON_2 </item>
+	<item> ABMON_3 </item>
+	<item> ABMON_4 </item>
+	<item> ABMON_5 </item>
+	<item> ABMON_6 </item>
+	<item> ABMON_7 </item>
+	<item> ABMON_8 </item>
+	<item> ABMON_9 </item>
+	<item> ABMON_10 </item>
+	<item> ABMON_11 </item>
+	<item> ABMON_12 </item>
+	<item> MON_1 </item>
+	<item> MON_2 </item>
+	<item> MON_3 </item>
+	<item> MON_4 </item>
+	<item> MON_5 </item>
+	<item> MON_6 </item>
+	<item> MON_7 </item>
+	<item> MON_8 </item>
+	<item> MON_9 </item>
+	<item> MON_10 </item>
+	<item> MON_11 </item>
+	<item> MON_12 </item>
+	<item> AM_STR </item>
+	<item> PM_STR </item>
+	<item> D_T_FMT </item>
+	<item> D_FMT </item>
+	<item> T_FMT </item>
+	<item> T_FMT_AMPM </item>
+	<item> ERA </item>
+	<item> ERA_D_T_FMT </item>
+	<item> ERA_D_FMT </item>
+	<item> ERA_T_FMT </item>
+	<item> ALT_DIGITS </item>
+	<item> CRNCYSTR </item>
+	<item> RADIXCHAR </item>
+	<item> THOUSEP </item>
+	<item> YESEXPR </item>
+	<item> NOEXPR </item>
+	<item> CODESET </item>
+	<item> CRYPT_SALT_LENGTH </item>
+	<item> CRYPT_STD_DES </item>
+	<item> CRYPT_EXT_DES </item>
+	<item> CRYPT_MD5 </item>
+	<item> CRYPT_BLOWFISH </item>
+	<item> DIRECTORY_SEPARATOR </item>
+	<item> PATH_SEPARATOR </item>
+	<item> GLOB_BRACE </item>
+	<item> GLOB_MARK </item>
+	<item> GLOB_NOSORT </item>
+	<item> GLOB_NOCHECK </item>
+	<item> GLOB_NOESCAPE </item>
+	<item> GLOB_ONLYDIR </item>
+	<item> LOG_EMERG </item>
+	<item> LOG_ALERT </item>
+	<item> LOG_CRIT </item>
+	<item> LOG_ERR </item>
+	<item> LOG_WARNING </item>
+	<item> LOG_NOTICE </item>
+	<item> LOG_INFO </item>
+	<item> LOG_DEBUG </item>
+	<item> LOG_KERN </item>
+	<item> LOG_USER </item>
+	<item> LOG_MAIL </item>
+	<item> LOG_DAEMON </item>
+	<item> LOG_AUTH </item>
+	<item> LOG_SYSLOG </item>
+	<item> LOG_LPR </item>
+	<item> LOG_NEWS </item>
+	<item> LOG_UUCP </item>
+	<item> LOG_CRON </item>
+	<item> LOG_AUTHPRIV </item>
+	<item> LOG_LOCAL0 </item>
+	<item> LOG_LOCAL1 </item>
+	<item> LOG_LOCAL2 </item>
+	<item> LOG_LOCAL3 </item>
+	<item> LOG_LOCAL4 </item>
+	<item> LOG_LOCAL5 </item>
+	<item> LOG_LOCAL6 </item>
+	<item> LOG_LOCAL7 </item>
+	<item> LOG_PID </item>
+	<item> LOG_CONS </item>
+	<item> LOG_ODELAY </item>
+	<item> LOG_NDELAY </item>
+	<item> LOG_NOWAIT </item>
+	<item> LOG_PERROR </item>
+	<item> EXTR_OVERWRITE </item>
+	<item> EXTR_SKIP </item>
+	<item> EXTR_PREFIX_SAME </item>
+	<item> EXTR_PREFIX_ALL </item>
+	<item> EXTR_PREFIX_INVALID </item>
+	<item> EXTR_PREFIX_IF_EXISTS </item>
+	<item> EXTR_IF_EXISTS </item>
+	<item> EXTR_REFS </item>
+	<item> SORT_ASC </item>
+	<item> SORT_DESC </item>
+	<item> SORT_REGULAR </item>
+	<item> SORT_NUMERIC </item>
+	<item> SORT_STRING </item>
+	<item> SORT_LOCALE_STRING </item>
+	<item> CASE_LOWER </item>
+	<item> CASE_UPPER </item>
+	<item> COUNT_NORMAL </item>
+	<item> COUNT_RECURSIVE </item>
+	<item> ASSERT_ACTIVE </item>
+	<item> ASSERT_CALLBACK </item>
+	<item> ASSERT_BAIL </item>
+	<item> ASSERT_WARNING </item>
+	<item> ASSERT_QUIET_EVAL </item>
+	<item> STREAM_USE_PATH </item>
+	<item> STREAM_IGNORE_URL </item>
+	<item> STREAM_ENFORCE_SAFE_MODE </item>
+	<item> STREAM_REPORT_ERRORS </item>
+	<item> STREAM_MUST_SEEK </item>
+	<item> STREAM_URL_STAT_LINK </item>
+	<item> STREAM_URL_STAT_QUIET </item>
+	<item> STREAM_MKDIR_RECURSIVE </item>
+	<item> IMAGETYPE_GIF </item>
+	<item> IMAGETYPE_JPEG </item>
+	<item> IMAGETYPE_PNG </item>
+	<item> IMAGETYPE_SWF </item>
+	<item> IMAGETYPE_PSD </item>
+	<item> IMAGETYPE_BMP </item>
+	<item> IMAGETYPE_TIFF_II </item>
+	<item> IMAGETYPE_TIFF_MM </item>
+	<item> IMAGETYPE_JPC </item>
+	<item> IMAGETYPE_JP2 </item>
+	<item> IMAGETYPE_JPX </item>
+	<item> IMAGETYPE_JB2 </item>
+	<item> IMAGETYPE_IFF </item>
+	<item> IMAGETYPE_WBMP </item>
+	<item> IMAGETYPE_JPEG2000 </item>
+	<item> IMAGETYPE_XBM </item>
+	<item> DNS_A </item>
+	<item> DNS_NS </item>
+	<item> DNS_CNAME </item>
+	<item> DNS_SOA </item>
+	<item> DNS_PTR </item>
+	<item> DNS_HINFO </item>
+	<item> DNS_MX </item>
+	<item> DNS_TXT </item>
+	<item> DNS_SRV </item>
+	<item> DNS_NAPTR </item>
+	<item> DNS_AAAA </item>
+	<item> DNS_ANY </item>
+	<item> DNS_ALL </item>
+	<item> RIT_LEAVES_ONLY </item>
+	<item> RIT_SELF_FIRST </item>
+	<item> RIT_CHILD_FIRST </item>
+	<item> CIT_CALL_TOSTRING </item>
+	<item> CIT_CATCH_GET_CHILD </item>
+	<item> PREG_PATTERN_ORDER </item>
+	<item> PREG_SET_ORDER </item>
+	<item> PREG_OFFSET_CAPTURE </item>
+	<item> PREG_SPLIT_NO_EMPTY </item>
+	<item> PREG_SPLIT_DELIM_CAPTURE </item>
+	<item> PREG_SPLIT_OFFSET_CAPTURE </item>
+	<item> PREG_GREP_INVERT </item>
+	<item> CAL_GREGORIAN </item>
+	<item> CAL_JULIAN </item>
+	<item> CAL_JEWISH </item>
+	<item> CAL_FRENCH </item>
+	<item> CAL_NUM_CALS </item>
+	<item> CAL_DOW_DAYNO </item>
+	<item> CAL_DOW_SHORT </item>
+	<item> CAL_DOW_LONG </item>
+	<item> CAL_MONTH_GREGORIAN_SHORT </item>
+	<item> CAL_MONTH_GREGORIAN_LONG </item>
+	<item> CAL_MONTH_JULIAN_SHORT </item>
+	<item> CAL_MONTH_JULIAN_LONG </item>
+	<item> CAL_MONTH_JEWISH </item>
+	<item> CAL_MONTH_FRENCH </item>
+	<item> CAL_EASTER_DEFAULT </item>
+	<item> CAL_EASTER_ROMAN </item>
+	<item> CAL_EASTER_ALWAYS_GREGORIAN </item>
+	<item> CAL_EASTER_ALWAYS_JULIAN </item>
+	<item> CAL_JEWISH_ADD_ALAFIM_GERESH </item>
+	<item> CAL_JEWISH_ADD_ALAFIM </item>
+	<item> CAL_JEWISH_ADD_GERESHAYIM </item>
+	<item> CURLOPT_DNS_USE_GLOBAL_CACHE </item>
+	<item> CURLOPT_DNS_CACHE_TIMEOUT </item>
+	<item> CURLOPT_PORT </item>
+	<item> CURLOPT_FILE </item>
+	<item> CURLOPT_READDATA </item>
+	<item> CURLOPT_INFILE </item>
+	<item> CURLOPT_INFILESIZE </item>
+	<item> CURLOPT_URL </item>
+	<item> CURLOPT_PROXY </item>
+	<item> CURLOPT_VERBOSE </item>
+	<item> CURLOPT_HEADER </item>
+	<item> CURLOPT_HTTPHEADER </item>
+	<item> CURLOPT_NOPROGRESS </item>
+	<item> CURLOPT_NOBODY </item>
+	<item> CURLOPT_FAILONERROR </item>
+	<item> CURLOPT_UPLOAD </item>
+	<item> CURLOPT_POST </item>
+	<item> CURLOPT_FTPLISTONLY </item>
+	<item> CURLOPT_FTPAPPEND </item>
+	<item> CURLOPT_NETRC </item>
+	<item> CURLOPT_FOLLOWLOCATION </item>
+	<item> CURLOPT_FTPASCII </item>
+	<item> CURLOPT_PUT </item>
+	<item> CURLOPT_MUTE </item>
+	<item> CURLOPT_USERPWD </item>
+	<item> CURLOPT_PROXYUSERPWD </item>
+	<item> CURLOPT_RANGE </item>
+	<item> CURLOPT_TIMEOUT </item>
+	<item> CURLOPT_POSTFIELDS </item>
+	<item> CURLOPT_REFERER </item>
+	<item> CURLOPT_USERAGENT </item>
+	<item> CURLOPT_FTPPORT </item>
+	<item> CURLOPT_FTP_USE_EPSV </item>
+	<item> CURLOPT_LOW_SPEED_LIMIT </item>
+	<item> CURLOPT_LOW_SPEED_TIME </item>
+	<item> CURLOPT_RESUME_FROM </item>
+	<item> CURLOPT_COOKIE </item>
+	<item> CURLOPT_SSLCERT </item>
+	<item> CURLOPT_SSLCERTPASSWD </item>
+	<item> CURLOPT_WRITEHEADER </item>
+	<item> CURLOPT_SSL_VERIFYHOST </item>
+	<item> CURLOPT_COOKIEFILE </item>
+	<item> CURLOPT_SSLVERSION </item>
+	<item> CURLOPT_TIMECONDITION </item>
+	<item> CURLOPT_TIMEVALUE </item>
+	<item> CURLOPT_CUSTOMREQUEST </item>
+	<item> CURLOPT_STDERR </item>
+	<item> CURLOPT_TRANSFERTEXT </item>
+	<item> CURLOPT_RETURNTRANSFER </item>
+	<item> CURLOPT_QUOTE </item>
+	<item> CURLOPT_POSTQUOTE </item>
+	<item> CURLOPT_INTERFACE </item>
+	<item> CURLOPT_KRB4LEVEL </item>
+	<item> CURLOPT_HTTPPROXYTUNNEL </item>
+	<item> CURLOPT_FILETIME </item>
+	<item> CURLOPT_WRITEFUNCTION </item>
+	<item> CURLOPT_READFUNCTION </item>
+	<item> CURLOPT_PASSWDFUNCTION </item>
+	<item> CURLOPT_HEADERFUNCTION </item>
+	<item> CURLOPT_MAXREDIRS </item>
+	<item> CURLOPT_MAXCONNECTS </item>
+	<item> CURLOPT_CLOSEPOLICY </item>
+	<item> CURLOPT_FRESH_CONNECT </item>
+	<item> CURLOPT_FORBID_REUSE </item>
+	<item> CURLOPT_RANDOM_FILE </item>
+	<item> CURLOPT_EGDSOCKET </item>
+	<item> CURLOPT_CONNECTTIMEOUT </item>
+	<item> CURLOPT_SSL_VERIFYPEER </item>
+	<item> CURLOPT_CAINFO </item>
+	<item> CURLOPT_CAPATH </item>
+	<item> CURLOPT_COOKIEJAR </item>
+	<item> CURLOPT_SSL_CIPHER_LIST </item>
+	<item> CURLOPT_BINARYTRANSFER </item>
+	<item> CURLOPT_NOSIGNAL </item>
+	<item> CURLOPT_PROXYTYPE </item>
+	<item> CURLOPT_BUFFERSIZE </item>
+	<item> CURLOPT_HTTPGET </item>
+	<item> CURLOPT_HTTP_VERSION </item>
+	<item> CURLOPT_SSLKEY </item>
+	<item> CURLOPT_SSLKEYTYPE </item>
+	<item> CURLOPT_SSLKEYPASSWD </item>
+	<item> CURLOPT_SSLENGINE </item>
+	<item> CURLOPT_SSLENGINE_DEFAULT </item>
+	<item> CURLOPT_SSLCERTTYPE </item>
+	<item> CURLOPT_CRLF </item>
+	<item> CURLOPT_ENCODING </item>
+	<item> CURLOPT_PROXYPORT </item>
+	<item> CURLOPT_UNRESTRICTED_AUTH </item>
+	<item> CURLOPT_FTP_USE_EPRT </item>
+	<item> CURLOPT_HTTP200ALIASES </item>
+	<item> CURL_TIMECOND_IFMODSINCE </item>
+	<item> CURL_TIMECOND_IFUNMODSINCE </item>
+	<item> CURL_TIMECOND_LASTMOD </item>
+	<item> CURLOPT_HTTPAUTH </item>
+	<item> CURLAUTH_BASIC </item>
+	<item> CURLAUTH_DIGEST </item>
+	<item> CURLAUTH_GSSNEGOTIATE </item>
+	<item> CURLAUTH_NTLM </item>
+	<item> CURLAUTH_ANY </item>
+	<item> CURLAUTH_ANYSAFE </item>
+	<item> CURLOPT_PROXYAUTH </item>
+	<item> CURLCLOSEPOLICY_LEAST_RECENTLY_USED </item>
+	<item> CURLCLOSEPOLICY_LEAST_TRAFFIC </item>
+	<item> CURLCLOSEPOLICY_SLOWEST </item>
+	<item> CURLCLOSEPOLICY_CALLBACK </item>
+	<item> CURLCLOSEPOLICY_OLDEST </item>
+	<item> CURLINFO_EFFECTIVE_URL </item>
+	<item> CURLINFO_HTTP_CODE </item>
+	<item> CURLINFO_HEADER_SIZE </item>
+	<item> CURLINFO_REQUEST_SIZE </item>
+	<item> CURLINFO_TOTAL_TIME </item>
+	<item> CURLINFO_NAMELOOKUP_TIME </item>
+	<item> CURLINFO_CONNECT_TIME </item>
+	<item> CURLINFO_PRETRANSFER_TIME </item>
+	<item> CURLINFO_SIZE_UPLOAD </item>
+	<item> CURLINFO_SIZE_DOWNLOAD </item>
+	<item> CURLINFO_SPEED_DOWNLOAD </item>
+	<item> CURLINFO_SPEED_UPLOAD </item>
+	<item> CURLINFO_FILETIME </item>
+	<item> CURLINFO_SSL_VERIFYRESULT </item>
+	<item> CURLINFO_CONTENT_LENGTH_DOWNLOAD </item>
+	<item> CURLINFO_CONTENT_LENGTH_UPLOAD </item>
+	<item> CURLINFO_STARTTRANSFER_TIME </item>
+	<item> CURLINFO_CONTENT_TYPE </item>
+	<item> CURLINFO_REDIRECT_TIME </item>
+	<item> CURLINFO_REDIRECT_COUNT </item>
+	<item> CURL_VERSION_IPV6 </item>
+	<item> CURL_VERSION_KERBEROS4 </item>
+	<item> CURL_VERSION_SSL </item>
+	<item> CURL_VERSION_LIBZ </item>
+	<item> CURLVERSION_NOW </item>
+	<item> CURLE_OK </item>
+	<item> CURLE_UNSUPPORTED_PROTOCOL </item>
+	<item> CURLE_FAILED_INIT </item>
+	<item> CURLE_URL_MALFORMAT </item>
+	<item> CURLE_URL_MALFORMAT_USER </item>
+	<item> CURLE_COULDNT_RESOLVE_PROXY </item>
+	<item> CURLE_COULDNT_RESOLVE_HOST </item>
+	<item> CURLE_COULDNT_CONNECT </item>
+	<item> CURLE_FTP_WEIRD_SERVER_REPLY </item>
+	<item> CURLE_FTP_ACCESS_DENIED </item>
+	<item> CURLE_FTP_USER_PASSWORD_INCORRECT </item>
+	<item> CURLE_FTP_WEIRD_PASS_REPLY </item>
+	<item> CURLE_FTP_WEIRD_USER_REPLY </item>
+	<item> CURLE_FTP_WEIRD_PASV_REPLY </item>
+	<item> CURLE_FTP_WEIRD_227_FORMAT </item>
+	<item> CURLE_FTP_CANT_GET_HOST </item>
+	<item> CURLE_FTP_CANT_RECONNECT </item>
+	<item> CURLE_FTP_COULDNT_SET_BINARY </item>
+	<item> CURLE_PARTIAL_FILE </item>
+	<item> CURLE_FTP_COULDNT_RETR_FILE </item>
+	<item> CURLE_FTP_WRITE_ERROR </item>
+	<item> CURLE_FTP_QUOTE_ERROR </item>
+	<item> CURLE_HTTP_NOT_FOUND </item>
+	<item> CURLE_WRITE_ERROR </item>
+	<item> CURLE_MALFORMAT_USER </item>
+	<item> CURLE_FTP_COULDNT_STOR_FILE </item>
+	<item> CURLE_READ_ERROR </item>
+	<item> CURLE_OUT_OF_MEMORY </item>
+	<item> CURLE_OPERATION_TIMEOUTED </item>
+	<item> CURLE_FTP_COULDNT_SET_ASCII </item>
+	<item> CURLE_FTP_PORT_FAILED </item>
+	<item> CURLE_FTP_COULDNT_USE_REST </item>
+	<item> CURLE_FTP_COULDNT_GET_SIZE </item>
+	<item> CURLE_HTTP_RANGE_ERROR </item>
+	<item> CURLE_HTTP_POST_ERROR </item>
+	<item> CURLE_SSL_CONNECT_ERROR </item>
+	<item> CURLE_FTP_BAD_DOWNLOAD_RESUME </item>
+	<item> CURLE_FILE_COULDNT_READ_FILE </item>
+	<item> CURLE_LDAP_CANNOT_BIND </item>
+	<item> CURLE_LDAP_SEARCH_FAILED </item>
+	<item> CURLE_LIBRARY_NOT_FOUND </item>
+	<item> CURLE_FUNCTION_NOT_FOUND </item>
+	<item> CURLE_ABORTED_BY_CALLBACK </item>
+	<item> CURLE_BAD_FUNCTION_ARGUMENT </item>
+	<item> CURLE_BAD_CALLING_ORDER </item>
+	<item> CURLE_HTTP_PORT_FAILED </item>
+	<item> CURLE_BAD_PASSWORD_ENTERED </item>
+	<item> CURLE_TOO_MANY_REDIRECTS </item>
+	<item> CURLE_UNKNOWN_TELNET_OPTION </item>
+	<item> CURLE_TELNET_OPTION_SYNTAX </item>
+	<item> CURLE_OBSOLETE </item>
+	<item> CURLE_SSL_PEER_CERTIFICATE </item>
+	<item> CURLE_GOT_NOTHING </item>
+	<item> CURLE_SSL_ENGINE_NOTFOUND </item>
+	<item> CURLE_SSL_ENGINE_SETFAILED </item>
+	<item> CURLE_SEND_ERROR </item>
+	<item> CURLE_RECV_ERROR </item>
+	<item> CURLE_SHARE_IN_USE </item>
+	<item> CURLE_SSL_CERTPROBLEM </item>
+	<item> CURLE_SSL_CIPHER </item>
+	<item> CURLE_SSL_CACERT </item>
+	<item> CURLE_BAD_CONTENT_ENCODING </item>
+	<item> CURLPROXY_HTTP </item>
+	<item> CURLPROXY_SOCKS5 </item>
+	<item> CURL_NETRC_OPTIONAL </item>
+	<item> CURL_NETRC_IGNORED </item>
+	<item> CURL_NETRC_REQUIRED </item>
+	<item> CURL_HTTP_VERSION_NONE </item>
+	<item> CURL_HTTP_VERSION_1_0 </item>
+	<item> CURL_HTTP_VERSION_1_1 </item>
+	<item> CURLM_CALL_MULTI_PERFORM </item>
+	<item> CURLM_OK </item>
+	<item> CURLM_BAD_HANDLE </item>
+	<item> CURLM_BAD_EASY_HANDLE </item>
+	<item> CURLM_OUT_OF_MEMORY </item>
+	<item> CURLM_INTERNAL_ERROR </item>
+	<item> CURLMSG_DONE </item>
+	<item> DBX_MYSQL </item>
+	<item> DBX_ODBC </item>
+	<item> DBX_PGSQL </item>
+	<item> DBX_MSSQL </item>
+	<item> DBX_FBSQL </item>
+	<item> DBX_OCI8 </item>
+	<item> DBX_SYBASECT </item>
+	<item> DBX_SQLITE </item>
+	<item> DBX_PERSISTENT </item>
+	<item> DBX_RESULT_INFO </item>
+	<item> DBX_RESULT_INDEX </item>
+	<item> DBX_RESULT_ASSOC </item>
+	<item> DBX_RESULT_UNBUFFERED </item>
+	<item> DBX_COLNAMES_UNCHANGED </item>
+	<item> DBX_COLNAMES_UPPERCASE </item>
+	<item> DBX_COLNAMES_LOWERCASE </item>
+	<item> DBX_CMP_NATIVE </item>
+	<item> DBX_CMP_TEXT </item>
+	<item> DBX_CMP_NUMBER </item>
+	<item> DBX_CMP_ASC </item>
+	<item> DBX_CMP_DESC </item>
+	<item> O_RDONLY </item>
+	<item> O_WRONLY </item>
+	<item> O_RDWR </item>
+	<item> O_CREAT </item>
+	<item> O_EXCL </item>
+	<item> O_TRUNC </item>
+	<item> O_APPEND </item>
+	<item> O_NONBLOCK </item>
+	<item> O_NDELAY </item>
+	<item> O_SYNC </item>
+	<item> O_ASYNC </item>
+	<item> O_NOCTTY </item>
+	<item> S_IRWXU </item>
+	<item> S_IRUSR </item>
+	<item> S_IWUSR </item>
+	<item> S_IXUSR </item>
+	<item> S_IRWXG </item>
+	<item> S_IRGRP </item>
+	<item> S_IWGRP </item>
+	<item> S_IXGRP </item>
+	<item> S_IRWXO </item>
+	<item> S_IROTH </item>
+	<item> S_IWOTH </item>
+	<item> S_IXOTH </item>
+	<item> F_DUPFD </item>
+	<item> F_GETFD </item>
+	<item> F_GETFL </item>
+	<item> F_SETFL </item>
+	<item> F_GETLK </item>
+	<item> F_SETLK </item>
+	<item> F_SETLKW </item>
+	<item> F_SETOWN </item>
+	<item> F_GETOWN </item>
+	<item> F_UNLCK </item>
+	<item> F_RDLCK </item>
+	<item> F_WRLCK </item>
+	<item> XML_ELEMENT_NODE </item>
+	<item> XML_ATTRIBUTE_NODE </item>
+	<item> XML_TEXT_NODE </item>
+	<item> XML_CDATA_SECTION_NODE </item>
+	<item> XML_ENTITY_REF_NODE </item>
+	<item> XML_ENTITY_NODE </item>
+	<item> XML_PI_NODE </item>
+	<item> XML_COMMENT_NODE </item>
+	<item> XML_DOCUMENT_NODE </item>
+	<item> XML_DOCUMENT_TYPE_NODE </item>
+	<item> XML_DOCUMENT_FRAG_NODE </item>
+	<item> XML_NOTATION_NODE </item>
+	<item> XML_HTML_DOCUMENT_NODE </item>
+	<item> XML_DTD_NODE </item>
+	<item> XML_ELEMENT_DECL_NODE </item>
+	<item> XML_ATTRIBUTE_DECL_NODE </item>
+	<item> XML_ENTITY_DECL_NODE </item>
+	<item> XML_NAMESPACE_DECL_NODE </item>
+	<item> XML_LOCAL_NAMESPACE </item>
+	<item> XML_ATTRIBUTE_CDATA </item>
+	<item> XML_ATTRIBUTE_ID </item>
+	<item> XML_ATTRIBUTE_IDREF </item>
+	<item> XML_ATTRIBUTE_IDREFS </item>
+	<item> XML_ATTRIBUTE_ENTITY </item>
+	<item> XML_ATTRIBUTE_NMTOKEN </item>
+	<item> XML_ATTRIBUTE_NMTOKENS </item>
+	<item> XML_ATTRIBUTE_ENUMERATION </item>
+	<item> XML_ATTRIBUTE_NOTATION </item>
+	<item> DOM_PHP_ERR </item>
+	<item> DOM_INDEX_SIZE_ERR </item>
+	<item> DOMSTRING_SIZE_ERR </item>
+	<item> DOM_HIERARCHY_REQUEST_ERR </item>
+	<item> DOM_WRONG_DOCUMENT_ERR </item>
+	<item> DOM_INVALID_CHARACTER_ERR </item>
+	<item> DOM_NO_DATA_ALLOWED_ERR </item>
+	<item> DOM_NO_MODIFICATION_ALLOWED_ERR </item>
+	<item> DOM_NOT_FOUND_ERR </item>
+	<item> DOM_NOT_SUPPORTED_ERR </item>
+	<item> DOM_INUSE_ATTRIBUTE_ERR </item>
+	<item> DOM_INVALID_STATE_ERR </item>
+	<item> DOM_SYNTAX_ERR </item>
+	<item> DOM_INVALID_MODIFICATION_ERR </item>
+	<item> DOM_NAMESPACE_ERR </item>
+	<item> DOM_INVALID_ACCESS_ERR </item>
+	<item> DOM_VALIDATION_ERR </item>
+	<item> EXIF_USE_MBSTRING </item>
+	<item> FAMChanged </item>
+	<item> FAMDeleted </item>
+	<item> FAMStartExecuting </item>
+	<item> FAMStopExecuting </item>
+	<item> FAMCreated </item>
+	<item> FAMMoved </item>
+	<item> FAMAcknowledge </item>
+	<item> FAMExists </item>
+	<item> FAMEndExist </item>
+	<item> FTP_ASCII </item>
+	<item> FTP_TEXT </item>
+	<item> FTP_BINARY </item>
+	<item> FTP_IMAGE </item>
+	<item> FTP_AUTORESUME </item>
+	<item> FTP_TIMEOUT_SEC </item>
+	<item> FTP_AUTOSEEK </item>
+	<item> FTP_FAILED </item>
+	<item> FTP_FINISHED </item>
+	<item> FTP_MOREDATA </item>
+	<item> IMG_GIF </item>
+	<item> IMG_JPG </item>
+	<item> IMG_JPEG </item>
+	<item> IMG_PNG </item>
+	<item> IMG_WBMP </item>
+	<item> IMG_XPM </item>
+	<item> IMG_COLOR_TILED </item>
+	<item> IMG_COLOR_STYLED </item>
+	<item> IMG_COLOR_BRUSHED </item>
+	<item> IMG_COLOR_STYLEDBRUSHED </item>
+	<item> IMG_COLOR_TRANSPARENT </item>
+	<item> IMG_ARC_ROUNDED </item>
+	<item> IMG_ARC_PIE </item>
+	<item> IMG_ARC_CHORD </item>
+	<item> IMG_ARC_NOFILL </item>
+	<item> IMG_ARC_EDGED </item>
+	<item> IMG_GD2_RAW </item>
+	<item> IMG_GD2_COMPRESSED </item>
+	<item> IMG_EFFECT_REPLACE </item>
+	<item> IMG_EFFECT_ALPHABLEND </item>
+	<item> IMG_EFFECT_NORMAL </item>
+	<item> IMG_EFFECT_OVERLAY </item>
+	<item> GD_BUNDLED </item>
+	<item> IMG_FILTER_NEGATE </item>
+	<item> IMG_FILTER_GRAYSCALE </item>
+	<item> IMG_FILTER_BRIGHTNESS </item>
+	<item> IMG_FILTER_CONTRAST </item>
+	<item> IMG_FILTER_COLORIZE </item>
+	<item> IMG_FILTER_EDGEDETECT </item>
+	<item> IMG_FILTER_GAUSSIAN_BLUR </item>
+	<item> IMG_FILTER_SELECTIVE_BLUR </item>
+	<item> IMG_FILTER_EMBOSS </item>
+	<item> IMG_FILTER_MEAN_REMOVAL </item>
+	<item> IMG_FILTER_SMOOTH </item>
+	<item> GMP_ROUND_ZERO </item>
+	<item> GMP_ROUND_PLUSINF </item>
+	<item> GMP_ROUND_MINUSINF </item>
+	<item> ICONV_IMPL </item>
+	<item> ICONV_VERSION </item>
+	<item> ICONV_MIME_DECODE_STRICT </item>
+	<item> ICONV_MIME_DECODE_CONTINUE_ON_ERROR </item>
+	<item> NIL </item>
+	<item> IMAP_OPENTIMEOUT </item>
+	<item> IMAP_READTIMEOUT </item>
+	<item> IMAP_WRITETIMEOUT </item>
+	<item> IMAP_CLOSETIMEOUT </item>
+	<item> OP_DEBUG </item>
+	<item> OP_READONLY </item>
+	<item> OP_ANONYMOUS </item>
+	<item> OP_SHORTCACHE </item>
+	<item> OP_SILENT </item>
+	<item> OP_PROTOTYPE </item>
+	<item> OP_HALFOPEN </item>
+	<item> OP_EXPUNGE </item>
+	<item> OP_SECURE </item>
+	<item> CL_EXPUNGE </item>
+	<item> FT_UID </item>
+	<item> FT_PEEK </item>
+	<item> FT_NOT </item>
+	<item> FT_INTERNAL </item>
+	<item> FT_PREFETCHTEXT </item>
+	<item> ST_UID </item>
+	<item> ST_SILENT </item>
+	<item> ST_SET </item>
+	<item> CP_UID </item>
+	<item> CP_MOVE </item>
+	<item> SE_UID </item>
+	<item> SE_FREE </item>
+	<item> SE_NOPREFETCH </item>
+	<item> SO_FREE </item>
+	<item> SO_NOSERVER </item>
+	<item> SA_MESSAGES </item>
+	<item> SA_RECENT </item>
+	<item> SA_UNSEEN </item>
+	<item> SA_UIDNEXT </item>
+	<item> SA_UIDVALIDITY </item>
+	<item> SA_ALL </item>
+	<item> LATT_NOINFERIORS </item>
+	<item> LATT_NOSELECT </item>
+	<item> LATT_MARKED </item>
+	<item> LATT_UNMARKED </item>
+	<item> LATT_REFERRAL </item>
+	<item> LATT_HASCHILDREN </item>
+	<item> LATT_HASNOCHILDREN </item>
+	<item> SORTDATE </item>
+	<item> SORTARRIVAL </item>
+	<item> SORTFROM </item>
+	<item> SORTSUBJECT </item>
+	<item> SORTTO </item>
+	<item> SORTCC </item>
+	<item> SORTSIZE </item>
+	<item> TYPETEXT </item>
+	<item> TYPEMULTIPART </item>
+	<item> TYPEMESSAGE </item>
+	<item> TYPEAPPLICATION </item>
+	<item> TYPEAUDIO </item>
+	<item> TYPEIMAGE </item>
+	<item> TYPEVIDEO </item>
+	<item> TYPEMODEL </item>
+	<item> TYPEOTHER </item>
+	<item> ENC7BIT </item>
+	<item> ENC8BIT </item>
+	<item> ENCBINARY </item>
+	<item> ENCBASE64 </item>
+	<item> ENCQUOTEDPRINTABLE </item>
+	<item> ENCOTHER </item>
+	<item> LDAP_DEREF_NEVER </item>
+	<item> LDAP_DEREF_SEARCHING </item>
+	<item> LDAP_DEREF_FINDING </item>
+	<item> LDAP_DEREF_ALWAYS </item>
+	<item> LDAP_OPT_DEREF </item>
+	<item> LDAP_OPT_SIZELIMIT </item>
+	<item> LDAP_OPT_TIMELIMIT </item>
+	<item> LDAP_OPT_PROTOCOL_VERSION </item>
+	<item> LDAP_OPT_ERROR_NUMBER </item>
+	<item> LDAP_OPT_REFERRALS </item>
+	<item> LDAP_OPT_RESTART </item>
+	<item> LDAP_OPT_HOST_NAME </item>
+	<item> LDAP_OPT_ERROR_STRING </item>
+	<item> LDAP_OPT_MATCHED_DN </item>
+	<item> LDAP_OPT_SERVER_CONTROLS </item>
+	<item> LDAP_OPT_CLIENT_CONTROLS </item>
+	<item> LDAP_OPT_DEBUG_LEVEL </item>
+	<item> MB_OVERLOAD_MAIL </item>
+	<item> MB_OVERLOAD_STRING </item>
+	<item> MB_OVERLOAD_REGEX </item>
+	<item> MB_CASE_UPPER </item>
+	<item> MB_CASE_LOWER </item>
+	<item> MB_CASE_TITLE </item>
+	<item> MCRYPT_ENCRYPT </item>
+	<item> MCRYPT_DECRYPT </item>
+	<item> MCRYPT_DEV_RANDOM </item>
+	<item> MCRYPT_DEV_URANDOM </item>
+	<item> MCRYPT_RAND </item>
+	<item> MCRYPT_3DES </item>
+	<item> MCRYPT_ARCFOUR_IV </item>
+	<item> MCRYPT_ARCFOUR </item>
+	<item> MCRYPT_BLOWFISH </item>
+	<item> MCRYPT_BLOWFISH_COMPAT </item>
+	<item> MCRYPT_CAST_128 </item>
+	<item> MCRYPT_CAST_256 </item>
+	<item> MCRYPT_CRYPT </item>
+	<item> MCRYPT_DES </item>
+	<item> MCRYPT_ENIGNA </item>
+	<item> MCRYPT_GOST </item>
+	<item> MCRYPT_LOKI97 </item>
+	<item> MCRYPT_PANAMA </item>
+	<item> MCRYPT_RC2 </item>
+	<item> MCRYPT_RIJNDAEL_128 </item>
+	<item> MCRYPT_RIJNDAEL_192 </item>
+	<item> MCRYPT_RIJNDAEL_256 </item>
+	<item> MCRYPT_SAFER64 </item>
+	<item> MCRYPT_SAFER128 </item>
+	<item> MCRYPT_SAFERPLUS </item>
+	<item> MCRYPT_SERPENT </item>
+	<item> MCRYPT_THREEWAY </item>
+	<item> MCRYPT_TRIPLEDES </item>
+	<item> MCRYPT_TWOFISH </item>
+	<item> MCRYPT_WAKE </item>
+	<item> MCRYPT_XTEA </item>
+	<item> MCRYPT_IDEA </item>
+	<item> MCRYPT_MARS </item>
+	<item> MCRYPT_RC6 </item>
+	<item> MCRYPT_SKIPJACK </item>
+	<item> MCRYPT_MODE_CBC </item>
+	<item> MCRYPT_MODE_CFB </item>
+	<item> MCRYPT_MODE_ECB </item>
+	<item> MCRYPT_MODE_NOFB </item>
+	<item> MCRYPT_MODE_OFB </item>
+	<item> MCRYPT_MODE_STREAM </item>
+	<item> MHASH_CRC32 </item>
+	<item> MHASH_MD5 </item>
+	<item> MHASH_SHA1 </item>
+	<item> MHASH_HAVAL256 </item>
+	<item> MHASH_RIPEMD160 </item>
+	<item> MHASH_TIGER </item>
+	<item> MHASH_GOST </item>
+	<item> MHASH_CRC32B </item>
+	<item> MHASH_HAVAL224 </item>
+	<item> MHASH_HAVAL192 </item>
+	<item> MHASH_HAVAL160 </item>
+	<item> MHASH_HAVAL128 </item>
+	<item> MHASH_TIGER128 </item>
+	<item> MHASH_TIGER160 </item>
+	<item> MHASH_MD4 </item>
+	<item> MHASH_SHA256 </item>
+	<item> MHASH_ADLER32 </item>
+	<item> MHASH_SHA224 </item>
+	<item> MHASH_SHA512 </item>
+	<item> MHASH_SHA384 </item>
+	<item> MHASH_WHIRLPOOL </item>
+	<item> MHASH_RIPEMD128 </item>
+	<item> MHASH_RIPEMD256 </item>
+	<item> MHASH_RIPEMD320 </item>
+	<item> MHASH_SNEFRU128 </item>
+	<item> MHASH_SNEFRU256 </item>
+	<item> MHASH_MD2 </item>
+	<item> MYSQL_ASSOC </item>
+	<item> MYSQL_NUM </item>
+	<item> MYSQL_BOTH </item>
+	<item> MYSQL_CLIENT_COMPRESS </item>
+	<item> MYSQL_CLIENT_SSL </item>
+	<item> MYSQL_CLIENT_INTERACTIVE </item>
+	<item> MYSQL_CLIENT_IGNORE_SPACE </item>
+	<item> MYSQLI_READ_DEFAULT_GROUP </item>
+	<item> MYSQLI_READ_DEFAULT_FILE </item>
+	<item> MYSQLI_OPT_CONNECT_TIMEOUT </item>
+	<item> MYSQLI_OPT_LOCAL_INFILE </item>
+	<item> MYSQLI_INIT_COMMAND </item>
+	<item> MYSQLI_CLIENT_SSL </item>
+	<item> MYSQLI_CLIENT_COMPRESS </item>
+	<item> MYSQLI_CLIENT_INTERACTIVE </item>
+	<item> MYSQLI_CLIENT_IGNORE_SPACE </item>
+	<item> MYSQLI_CLIENT_NO_SCHEMA </item>
+	<item> MYSQLI_CLIENT_FOUND_ROWS </item>
+	<item> MYSQLI_STORE_RESULT </item>
+	<item> MYSQLI_USE_RESULT </item>
+	<item> MYSQLI_ASSOC </item>
+	<item> MYSQLI_NUM </item>
+	<item> MYSQLI_BOTH </item>
+	<item> MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH </item>
+	<item> MYSQLI_NOT_NULL_FLAG </item>
+	<item> MYSQLI_PRI_KEY_FLAG </item>
+	<item> MYSQLI_UNIQUE_KEY_FLAG </item>
+	<item> MYSQLI_MULTIPLE_KEY_FLAG </item>
+	<item> MYSQLI_BLOB_FLAG </item>
+	<item> MYSQLI_UNSIGNED_FLAG </item>
+	<item> MYSQLI_ZEROFILL_FLAG </item>
+	<item> MYSQLI_AUTO_INCREMENT_FLAG </item>
+	<item> MYSQLI_TIMESTAMP_FLAG </item>
+	<item> MYSQLI_SET_FLAG </item>
+	<item> MYSQLI_NUM_FLAG </item>
+	<item> MYSQLI_PART_KEY_FLAG </item>
+	<item> MYSQLI_GROUP_FLAG </item>
+	<item> MYSQLI_TYPE_DECIMAL </item>
+	<item> MYSQLI_TYPE_TINY </item>
+	<item> MYSQLI_TYPE_SHORT </item>
+	<item> MYSQLI_TYPE_LONG </item>
+	<item> MYSQLI_TYPE_FLOAT </item>
+	<item> MYSQLI_TYPE_DOUBLE </item>
+	<item> MYSQLI_TYPE_NULL </item>
+	<item> MYSQLI_TYPE_TIMESTAMP </item>
+	<item> MYSQLI_TYPE_LONGLONG </item>
+	<item> MYSQLI_TYPE_INT24 </item>
+	<item> MYSQLI_TYPE_DATE </item>
+	<item> MYSQLI_TYPE_TIME </item>
+	<item> MYSQLI_TYPE_DATETIME </item>
+	<item> MYSQLI_TYPE_YEAR </item>
+	<item> MYSQLI_TYPE_NEWDATE </item>
+	<item> MYSQLI_TYPE_ENUM </item>
+	<item> MYSQLI_TYPE_SET </item>
+	<item> MYSQLI_TYPE_TINY_BLOB </item>
+	<item> MYSQLI_TYPE_MEDIUM_BLOB </item>
+	<item> MYSQLI_TYPE_LONG_BLOB </item>
+	<item> MYSQLI_TYPE_BLOB </item>
+	<item> MYSQLI_TYPE_VAR_STRING </item>
+	<item> MYSQLI_TYPE_STRING </item>
+	<item> MYSQLI_TYPE_CHAR </item>
+	<item> MYSQLI_TYPE_INTERVAL </item>
+	<item> MYSQLI_TYPE_GEOMETRY </item>
+	<item> MYSQLI_RPL_MASTER </item>
+	<item> MYSQLI_RPL_SLAVE </item>
+	<item> MYSQLI_RPL_ADMIN </item>
+	<item> MYSQLI_NO_DATA </item>
+	<item> MYSQLI_REPORT_INDEX </item>
+	<item> MYSQLI_REPORT_ERROR </item>
+	<item> MYSQLI_REPORT_ALL </item>
+	<item> MYSQLI_REPORT_OFF </item>
+	<item> NCURSES_COLOR_BLACK </item>
+	<item> NCURSES_COLOR_RED </item>
+	<item> NCURSES_COLOR_GREEN </item>
+	<item> NCURSES_COLOR_YELLOW </item>
+	<item> NCURSES_COLOR_BLUE </item>
+	<item> NCURSES_COLOR_MAGENTA </item>
+	<item> NCURSES_COLOR_CYAN </item>
+	<item> NCURSES_COLOR_WHITE </item>
+	<item> NCURSES_KEY_DOWN </item>
+	<item> NCURSES_KEY_UP </item>
+	<item> NCURSES_KEY_LEFT </item>
+	<item> NCURSES_KEY_RIGHT </item>
+	<item> NCURSES_KEY_BACKSPACE </item>
+	<item> NCURSES_KEY_MOUSE </item>
+	<item> NCURSES_KEY_F0 </item>
+	<item> NCURSES_KEY_F1 </item>
+	<item> NCURSES_KEY_F2 </item>
+	<item> NCURSES_KEY_F3 </item>
+	<item> NCURSES_KEY_F4 </item>
+	<item> NCURSES_KEY_F5 </item>
+	<item> NCURSES_KEY_F6 </item>
+	<item> NCURSES_KEY_F7 </item>
+	<item> NCURSES_KEY_F8 </item>
+	<item> NCURSES_KEY_F9 </item>
+	<item> NCURSES_KEY_F10 </item>
+	<item> NCURSES_KEY_F11 </item>
+	<item> NCURSES_KEY_F12 </item>
+	<item> NCURSES_KEY_DL </item>
+	<item> NCURSES_KEY_IL </item>
+	<item> NCURSES_KEY_DC </item>
+	<item> NCURSES_KEY_IC </item>
+	<item> NCURSES_KEY_EIC </item>
+	<item> NCURSES_KEY_CLEAR </item>
+	<item> NCURSES_KEY_EOS </item>
+	<item> NCURSES_KEY_EOL </item>
+	<item> NCURSES_KEY_SF </item>
+	<item> NCURSES_KEY_SR </item>
+	<item> NCURSES_KEY_NPAGE </item>
+	<item> NCURSES_KEY_PPAGE </item>
+	<item> NCURSES_KEY_STAB </item>
+	<item> NCURSES_KEY_CTAB </item>
+	<item> NCURSES_KEY_CATAB </item>
+	<item> NCURSES_KEY_ENTER </item>
+	<item> NCURSES_KEY_SRESET </item>
+	<item> NCURSES_KEY_RESET </item>
+	<item> NCURSES_KEY_PRINT </item>
+	<item> NCURSES_KEY_LL </item>
+	<item> NCURSES_KEY_A1 </item>
+	<item> NCURSES_KEY_A3 </item>
+	<item> NCURSES_KEY_B2 </item>
+	<item> NCURSES_KEY_C1 </item>
+	<item> NCURSES_KEY_C3 </item>
+	<item> NCURSES_KEY_BTAB </item>
+	<item> NCURSES_KEY_BEG </item>
+	<item> NCURSES_KEY_CANCEL </item>
+	<item> NCURSES_KEY_CLOSE </item>
+	<item> NCURSES_KEY_COMMAND </item>
+	<item> NCURSES_KEY_COPY </item>
+	<item> NCURSES_KEY_CREATE </item>
+	<item> NCURSES_KEY_END </item>
+	<item> NCURSES_KEY_EXIT </item>
+	<item> NCURSES_KEY_FIND </item>
+	<item> NCURSES_KEY_HELP </item>
+	<item> NCURSES_KEY_MARK </item>
+	<item> NCURSES_KEY_MESSAGE </item>
+	<item> NCURSES_KEY_MOVE </item>
+	<item> NCURSES_KEY_NEXT </item>
+	<item> NCURSES_KEY_OPEN </item>
+	<item> NCURSES_KEY_OPTIONS </item>
+	<item> NCURSES_KEY_PREVIOUS </item>
+	<item> NCURSES_KEY_REDO </item>
+	<item> NCURSES_KEY_REFERENCE </item>
+	<item> NCURSES_KEY_REFRESH </item>
+	<item> NCURSES_KEY_REPLACE </item>
+	<item> NCURSES_KEY_RESTART </item>
+	<item> NCURSES_KEY_RESUME </item>
+	<item> NCURSES_KEY_SAVE </item>
+	<item> NCURSES_KEY_SBEG </item>
+	<item> NCURSES_KEY_SCANCEL </item>
+	<item> NCURSES_KEY_SCOMMAND </item>
+	<item> NCURSES_KEY_SCOPY </item>
+	<item> NCURSES_KEY_SCREATE </item>
+	<item> NCURSES_KEY_SDC </item>
+	<item> NCURSES_KEY_SDL </item>
+	<item> NCURSES_KEY_SELECT </item>
+	<item> NCURSES_KEY_SEND </item>
+	<item> NCURSES_KEY_SEOL </item>
+	<item> NCURSES_KEY_SEXIT </item>
+	<item> NCURSES_KEY_SFIND </item>
+	<item> NCURSES_KEY_SHELP </item>
+	<item> NCURSES_KEY_SHOME </item>
+	<item> NCURSES_KEY_SIC </item>
+	<item> NCURSES_KEY_SLEFT </item>
+	<item> NCURSES_KEY_SMESSAGE </item>
+	<item> NCURSES_KEY_SMOVE </item>
+	<item> NCURSES_KEY_SNEXT </item>
+	<item> NCURSES_KEY_SOPTIONS </item>
+	<item> NCURSES_KEY_SPREVIOUS </item>
+	<item> NCURSES_KEY_SPRINT </item>
+	<item> NCURSES_KEY_SREDO </item>
+	<item> NCURSES_KEY_SREPLACE </item>
+	<item> NCURSES_KEY_SRIGHT </item>
+	<item> NCURSES_KEY_SRSUME </item>
+	<item> NCURSES_KEY_SSAVE </item>
+	<item> NCURSES_KEY_SSUSPEND </item>
+	<item> NCURSES_KEY_SUNDO </item>
+	<item> NCURSES_KEY_SUSPEND </item>
+	<item> NCURSES_KEY_UNDO </item>
+	<item> NCURSES_KEY_RESIZE </item>
+	<item> NCURSES_A_NORMAL </item>
+	<item> NCURSES_A_STANDOUT </item>
+	<item> NCURSES_A_UNDERLINE </item>
+	<item> NCURSES_A_REVERSE </item>
+	<item> NCURSES_A_BLINK </item>
+	<item> NCURSES_A_DIM </item>
+	<item> NCURSES_A_BOLD </item>
+	<item> NCURSES_A_PROTECT </item>
+	<item> NCURSES_A_INVIS </item>
+	<item> NCURSES_A_ALTCHARSET </item>
+	<item> NCURSES_A_CHARTEXT </item>
+	<item> NCURSES_BUTTON1_PRESSED </item>
+	<item> NCURSES_BUTTON1_RELEASED </item>
+	<item> NCURSES_BUTTON1_CLICKED </item>
+	<item> NCURSES_BUTTON1_DOUBLE_CLICKED </item>
+	<item> NCURSES_BUTTON1_TRIPLE_CLICKED </item>
+	<item> NCURSES_BUTTON2_PRESSED </item>
+	<item> NCURSES_BUTTON2_RELEASED </item>
+	<item> NCURSES_BUTTON2_CLICKED </item>
+	<item> NCURSES_BUTTON2_DOUBLE_CLICKED </item>
+	<item> NCURSES_BUTTON2_TRIPLE_CLICKED </item>
+	<item> NCURSES_BUTTON3_PRESSED </item>
+	<item> NCURSES_BUTTON3_RELEASED </item>
+	<item> NCURSES_BUTTON3_CLICKED </item>
+	<item> NCURSES_BUTTON3_DOUBLE_CLICKED </item>
+	<item> NCURSES_BUTTON3_TRIPLE_CLICKED </item>
+	<item> NCURSES_BUTTON4_PRESSED </item>
+	<item> NCURSES_BUTTON4_RELEASED </item>
+	<item> NCURSES_BUTTON4_CLICKED </item>
+	<item> NCURSES_BUTTON4_DOUBLE_CLICKED </item>
+	<item> NCURSES_BUTTON4_TRIPLE_CLICKED </item>
+	<item> NCURSES_BUTTON_SHIFT </item>
+	<item> NCURSES_BUTTON_CTRL </item>
+	<item> NCURSES_BUTTON_ALT </item>
+	<item> NCURSES_ALL_MOUSE_EVENTS </item>
+	<item> NCURSES_REPORT_MOUSE_POSITION </item>
+	<item> ODBC_TYPE </item>
+	<item> ODBC_BINMODE_PASSTHRU </item>
+	<item> ODBC_BINMODE_RETURN </item>
+	<item> ODBC_BINMODE_CONVERT </item>
+	<item> SQL_ODBC_CURSORS </item>
+	<item> SQL_CUR_USE_DRIVER </item>
+	<item> SQL_CUR_USE_IF_NEEDED </item>
+	<item> SQL_CUR_USE_ODBC </item>
+	<item> SQL_CONCURRENCY </item>
+	<item> SQL_CONCUR_READ_ONLY </item>
+	<item> SQL_CONCUR_LOCK </item>
+	<item> SQL_CONCUR_ROWVER </item>
+	<item> SQL_CONCUR_VALUES </item>
+	<item> SQL_CURSOR_TYPE </item>
+	<item> SQL_CURSOR_FORWARD_ONLY </item>
+	<item> SQL_CURSOR_KEYSET_DRIVEN </item>
+	<item> SQL_CURSOR_DYNAMIC </item>
+	<item> SQL_CURSOR_STATIC </item>
+	<item> SQL_KEYSET_SIZE </item>
+	<item> SQL_FETCH_FIRST </item>
+	<item> SQL_FETCH_NEXT </item>
+	<item> SQL_CHAR </item>
+	<item> SQL_VARCHAR </item>
+	<item> SQL_LONGVARCHAR </item>
+	<item> SQL_DECIMAL </item>
+	<item> SQL_NUMERIC </item>
+	<item> SQL_BIT </item>
+	<item> SQL_TINYINT </item>
+	<item> SQL_SMALLINT </item>
+	<item> SQL_INTEGER </item>
+	<item> SQL_BIGINT </item>
+	<item> SQL_REAL </item>
+	<item> SQL_FLOAT </item>
+	<item> SQL_DOUBLE </item>
+	<item> SQL_BINARY </item>
+	<item> SQL_VARBINARY </item>
+	<item> SQL_LONGVARBINARY </item>
+	<item> SQL_DATE </item>
+	<item> SQL_TIME </item>
+	<item> SQL_TIMESTAMP </item>
+	<item> X509_PURPOSE_SSL_CLIENT </item>
+	<item> X509_PURPOSE_SSL_SERVER </item>
+	<item> X509_PURPOSE_NS_SSL_SERVER </item>
+	<item> X509_PURPOSE_SMIME_SIGN </item>
+	<item> X509_PURPOSE_SMIME_ENCRYPT </item>
+	<item> X509_PURPOSE_CRL_SIGN </item>
+	<item> X509_PURPOSE_ANY </item>
+	<item> OPENSSL_ALGO_SHA1 </item>
+	<item> OPENSSL_ALGO_MD5 </item>
+	<item> OPENSSL_ALGO_MD4 </item>
+	<item> OPENSSL_ALGO_MD2 </item>
+	<item> PKCS7_DETACHED </item>
+	<item> PKCS7_TEXT </item>
+	<item> PKCS7_NOINTERN </item>
+	<item> PKCS7_NOVERIFY </item>
+	<item> PKCS7_NOCHAIN </item>
+	<item> PKCS7_NOCERTS </item>
+	<item> PKCS7_NOATTR </item>
+	<item> PKCS7_BINARY </item>
+	<item> PKCS7_NOSIGS </item>
+	<item> OPENSSL_PKCS1_PADDING </item>
+	<item> OPENSSL_SSLV23_PADDING </item>
+	<item> OPENSSL_NO_PADDING </item>
+	<item> OPENSSL_PKCS1_OAEP_PADDING </item>
+	<item> OPENSSL_CIPHER_RC2_40 </item>
+	<item> OPENSSL_CIPHER_RC2_128 </item>
+	<item> OPENSSL_CIPHER_RC2_64 </item>
+	<item> OPENSSL_CIPHER_DES </item>
+	<item> OPENSSL_CIPHER_3DES </item>
+	<item> OPENSSL_KEYTYPE_RSA </item>
+	<item> OPENSSL_KEYTYPE_DSA </item>
+	<item> OPENSSL_KEYTYPE_DH </item>
+	<item> WNOHANG </item>
+	<item> WUNTRACED </item>
+	<item> SIG_IGN </item>
+	<item> SIG_DFL </item>
+	<item> SIG_ERR </item>
+	<item> SIGHUP </item>
+	<item> SIGINT </item>
+	<item> SIGQUIT </item>
+	<item> SIGILL </item>
+	<item> SIGTRAP </item>
+	<item> SIGABRT </item>
+	<item> SIGIOT </item>
+	<item> SIGBUS </item>
+	<item> SIGFPE </item>
+	<item> SIGKILL </item>
+	<item> SIGUSR1 </item>
+	<item> SIGSEGV </item>
+	<item> SIGUSR2 </item>
+	<item> SIGPIPE </item>
+	<item> SIGALRM </item>
+	<item> SIGTERM </item>
+	<item> SIGSTKFLT </item>
+	<item> SIGCLD </item>
+	<item> SIGCHLD </item>
+	<item> SIGCONT </item>
+	<item> SIGSTOP </item>
+	<item> SIGTSTP </item>
+	<item> SIGTTIN </item>
+	<item> SIGTTOU </item>
+	<item> SIGURG </item>
+	<item> SIGXCPU </item>
+	<item> SIGXFSZ </item>
+	<item> SIGVTALRM </item>
+	<item> SIGPROF </item>
+	<item> SIGWINCH </item>
+	<item> SIGPOLL </item>
+	<item> SIGIO </item>
+	<item> SIGPWR </item>
+	<item> SIGSYS </item>
+	<item> SIGBABY </item>
+	<item> PRIO_PGRP </item>
+	<item> PRIO_USER </item>
+	<item> PRIO_PROCESS </item>
+	<item> PGSQL_CONNECT_FORCE_NEW </item>
+	<item> PGSQL_ASSOC </item>
+	<item> PGSQL_NUM </item>
+	<item> PGSQL_BOTH </item>
+	<item> PGSQL_CONNECTION_BAD </item>
+	<item> PGSQL_CONNECTION_OK </item>
+	<item> PGSQL_SEEK_SET </item>
+	<item> PGSQL_SEEK_CUR </item>
+	<item> PGSQL_SEEK_END </item>
+	<item> PGSQL_STATUS_LONG </item>
+	<item> PGSQL_STATUS_STRING </item>
+	<item> PGSQL_EMPTY_QUERY </item>
+	<item> PGSQL_COMMAND_OK </item>
+	<item> PGSQL_TUPLES_OK </item>
+	<item> PGSQL_COPY_OUT </item>
+	<item> PGSQL_COPY_IN </item>
+	<item> PGSQL_BAD_RESPONSE </item>
+	<item> PGSQL_NONFATAL_ERROR </item>
+	<item> PGSQL_FATAL_ERROR </item>
+	<item> PGSQL_CONV_IGNORE_DEFAULT </item>
+	<item> PGSQL_CONV_FORCE_NULL </item>
+	<item> PGSQL_CONV_IGNORE_NOT_NULL </item>
+	<item> PGSQL_DML_NO_CONV </item>
+	<item> PGSQL_DML_EXEC </item>
+	<item> PGSQL_DML_ASYNC </item>
+	<item> PGSQL_DML_STRING </item>
+	<item> SNMP_VALUE_LIBRARY </item>
+	<item> SNMP_VALUE_PLAIN </item>
+	<item> SNMP_VALUE_OBJECT </item>
+	<item> SNMP_BIT_STR </item>
+	<item> SNMP_OCTET_STR </item>
+	<item> SNMP_OPAQUE </item>
+	<item> SNMP_NULL </item>
+	<item> SNMP_OBJECT_ID </item>
+	<item> SNMP_IPADDRESS </item>
+	<item> SNMP_COUNTER </item>
+	<item> SNMP_UNSIGNED </item>
+	<item> SNMP_TIMETICKS </item>
+	<item> SNMP_UINTEGER </item>
+	<item> SNMP_INTEGER </item>
+	<item> SNMP_COUNTER64 </item>
+	<item> SOAP_1_1 </item>
+	<item> SOAP_1_2 </item>
+	<item> SOAP_PERSISTENCE_SESSION </item>
+	<item> SOAP_PERSISTENCE_REQUEST </item>
+	<item> SOAP_FUNCTIONS_ALL </item>
+	<item> SOAP_ENCODED </item>
+	<item> SOAP_LITERAL </item>
+	<item> SOAP_RPC </item>
+	<item> SOAP_DOCUMENT </item>
+	<item> SOAP_ACTOR_NEXT </item>
+	<item> SOAP_ACTOR_NONE </item>
+	<item> SOAP_ACTOR_UNLIMATERECEIVER </item>
+	<item> SOAP_COMPRESSION_ACCEPT </item>
+	<item> SOAP_COMPRESSION_GZIP </item>
+	<item> SOAP_COMPRESSION_DEFLATE </item>
+	<item> UNKNOWN_TYPE </item>
+	<item> XSD_STRING </item>
+	<item> XSD_BOOLEAN </item>
+	<item> XSD_DECIMAL </item>
+	<item> XSD_FLOAT </item>
+	<item> XSD_DOUBLE </item>
+	<item> XSD_DURATION </item>
+	<item> XSD_DATETIME </item>
+	<item> XSD_TIME </item>
+	<item> XSD_DATE </item>
+	<item> XSD_GYEARMONTH </item>
+	<item> XSD_GYEAR </item>
+	<item> XSD_GMONTHDAY </item>
+	<item> XSD_GDAY </item>
+	<item> XSD_GMONTH </item>
+	<item> XSD_HEXBINARY </item>
+	<item> XSD_BASE64BINARY </item>
+	<item> XSD_ANYURI </item>
+	<item> XSD_QNAME </item>
+	<item> XSD_NOTATION </item>
+	<item> XSD_NORMALIZEDSTRING </item>
+	<item> XSD_TOKEN </item>
+	<item> XSD_LANGUAGE </item>
+	<item> XSD_NMTOKEN </item>
+	<item> XSD_NAME </item>
+	<item> XSD_NCNAME </item>
+	<item> XSD_ID </item>
+	<item> XSD_IDREF </item>
+	<item> XSD_IDREFS </item>
+	<item> XSD_ENTITY </item>
+	<item> XSD_ENTITIES </item>
+	<item> XSD_INTEGER </item>
+	<item> XSD_NONPOSITIVEINTEGER </item>
+	<item> XSD_NEGATIVEINTEGER </item>
+	<item> XSD_LONG </item>
+	<item> XSD_INT </item>
+	<item> XSD_SHORT </item>
+	<item> XSD_BYTE </item>
+	<item> XSD_NONNEGATIVEINTEGER </item>
+	<item> XSD_UNSIGNEDLONG </item>
+	<item> XSD_UNSIGNEDINT </item>
+	<item> XSD_UNSIGNEDSHORT </item>
+	<item> XSD_UNSIGNEDBYTE </item>
+	<item> XSD_POSITIVEINTEGER </item>
+	<item> XSD_NMTOKENS </item>
+	<item> XSD_ANYTYPE </item>
+	<item> SOAP_ENC_OBJECT </item>
+	<item> SOAP_ENC_ARRAY </item>
+	<item> XSD_1999_TIMEINSTANT </item>
+	<item> XSD_NAMESPACE </item>
+	<item> XSD_1999_NAMESPACE </item>
+	<item> AF_UNIX </item>
+	<item> AF_INET </item>
+	<item> AF_INET6 </item>
+	<item> SOCK_STREAM </item>
+	<item> SOCK_DGRAM </item>
+	<item> SOCK_RAW </item>
+	<item> SOCK_SEQPACKET </item>
+	<item> SOCK_RDM </item>
+	<item> MSG_OOB </item>
+	<item> MSG_WAITALL </item>
+	<item> MSG_PEEK </item>
+	<item> MSG_DONTROUTE </item>
+	<item> SO_DEBUG </item>
+	<item> SO_REUSEADDR </item>
+	<item> SO_KEEPALIVE </item>
+	<item> SO_DONTROUTE </item>
+	<item> SO_LINGER </item>
+	<item> SO_BROADCAST </item>
+	<item> SO_OOBINLINE </item>
+	<item> SO_SNDBUF </item>
+	<item> SO_RCVBUF </item>
+	<item> SO_SNDLOWAT </item>
+	<item> SO_RCVLOWAT </item>
+	<item> SO_SNDTIMEO </item>
+	<item> SO_RCVTIMEO </item>
+	<item> SO_TYPE </item>
+	<item> SO_ERROR </item>
+	<item> SOL_SOCKET </item>
+	<item> SOMAXCONN </item>
+	<item> PHP_NORMAL_READ </item>
+	<item> PHP_BINARY_READ </item>
+	<item> SOCKET_EPERM </item>
+	<item> SOCKET_ENOENT </item>
+	<item> SOCKET_EINTR </item>
+	<item> SOCKET_EIO </item>
+	<item> SOCKET_ENXIO </item>
+	<item> SOCKET_E2BIG </item>
+	<item> SOCKET_EBADF </item>
+	<item> SOCKET_EAGAIN </item>
+	<item> SOCKET_ENOMEM </item>
+	<item> SOCKET_EACCES </item>
+	<item> SOCKET_EFAULT </item>
+	<item> SOCKET_ENOTBLK </item>
+	<item> SOCKET_EBUSY </item>
+	<item> SOCKET_EEXIST </item>
+	<item> SOCKET_EXDEV </item>
+	<item> SOCKET_ENODEV </item>
+	<item> SOCKET_ENOTDIR </item>
+	<item> SOCKET_EISDIR </item>
+	<item> SOCKET_EINVAL </item>
+	<item> SOCKET_ENFILE </item>
+	<item> SOCKET_EMFILE </item>
+	<item> SOCKET_ENOTTY </item>
+	<item> SOCKET_ENOSPC </item>
+	<item> SOCKET_ESPIPE </item>
+	<item> SOCKET_EROFS </item>
+	<item> SOCKET_EMLINK </item>
+	<item> SOCKET_EPIPE </item>
+	<item> SOCKET_ENAMETOOLONG </item>
+	<item> SOCKET_ENOLCK </item>
+	<item> SOCKET_ENOSYS </item>
+	<item> SOCKET_ENOTEMPTY </item>
+	<item> SOCKET_ELOOP </item>
+	<item> SOCKET_EWOULDBLOCK </item>
+	<item> SOCKET_ENOMSG </item>
+	<item> SOCKET_EIDRM </item>
+	<item> SOCKET_ECHRNG </item>
+	<item> SOCKET_EL2NSYNC </item>
+	<item> SOCKET_EL3HLT </item>
+	<item> SOCKET_EL3RST </item>
+	<item> SOCKET_ELNRNG </item>
+	<item> SOCKET_EUNATCH </item>
+	<item> SOCKET_ENOCSI </item>
+	<item> SOCKET_EL2HLT </item>
+	<item> SOCKET_EBADE </item>
+	<item> SOCKET_EBADR </item>
+	<item> SOCKET_EXFULL </item>
+	<item> SOCKET_ENOANO </item>
+	<item> SOCKET_EBADRQC </item>
+	<item> SOCKET_EBADSLT </item>
+	<item> SOCKET_ENOSTR </item>
+	<item> SOCKET_ENODATA </item>
+	<item> SOCKET_ETIME </item>
+	<item> SOCKET_ENOSR </item>
+	<item> SOCKET_ENONET </item>
+	<item> SOCKET_EREMOTE </item>
+	<item> SOCKET_ENOLINK </item>
+	<item> SOCKET_EADV </item>
+	<item> SOCKET_ESRMNT </item>
+	<item> SOCKET_ECOMM </item>
+	<item> SOCKET_EPROTO </item>
+	<item> SOCKET_EMULTIHOP </item>
+	<item> SOCKET_EBADMSG </item>
+	<item> SOCKET_ENOTUNIQ </item>
+	<item> SOCKET_EBADFD </item>
+	<item> SOCKET_EREMCHG </item>
+	<item> SOCKET_ERESTART </item>
+	<item> SOCKET_ESTRPIPE </item>
+	<item> SOCKET_EUSERS </item>
+	<item> SOCKET_ENOTSOCK </item>
+	<item> SOCKET_EDESTADDRREQ </item>
+	<item> SOCKET_EMSGSIZE </item>
+	<item> SOCKET_EPROTOTYPE </item>
+	<item> SOCKET_ENOPROTOOPT </item>
+	<item> SOCKET_EPROTONOSUPPORT </item>
+	<item> SOCKET_ESOCKTNOSUPPORT </item>
+	<item> SOCKET_EOPNOTSUPP </item>
+	<item> SOCKET_EPFNOSUPPORT </item>
+	<item> SOCKET_EAFNOSUPPORT </item>
+	<item> SOCKET_EADDRINUSE </item>
+	<item> SOCKET_EADDRNOTAVAIL </item>
+	<item> SOCKET_ENETDOWN </item>
+	<item> SOCKET_ENETUNREACH </item>
+	<item> SOCKET_ENETRESET </item>
+	<item> SOCKET_ECONNABORTED </item>
+	<item> SOCKET_ECONNRESET </item>
+	<item> SOCKET_ENOBUFS </item>
+	<item> SOCKET_EISCONN </item>
+	<item> SOCKET_ENOTCONN </item>
+	<item> SOCKET_ESHUTDOWN </item>
+	<item> SOCKET_ETOOMANYREFS </item>
+	<item> SOCKET_ETIMEDOUT </item>
+	<item> SOCKET_ECONNREFUSED </item>
+	<item> SOCKET_EHOSTDOWN </item>
+	<item> SOCKET_EHOSTUNREACH </item>
+	<item> SOCKET_EALREADY </item>
+	<item> SOCKET_EINPROGRESS </item>
+	<item> SOCKET_EISNAM </item>
+	<item> SOCKET_EREMOTEIO </item>
+	<item> SOCKET_EDQUOT </item>
+	<item> SOCKET_ENOMEDIUM </item>
+	<item> SOCKET_EMEDIUMTYPE </item>
+	<item> SOL_TCP </item>
+	<item> SOL_UDP </item>
+	<item> SQLITE_BOTH </item>
+	<item> SQLITE_NUM </item>
+	<item> SQLITE_ASSOC </item>
+	<item> SQLITE_OK </item>
+	<item> SQLITE_ERROR </item>
+	<item> SQLITE_INTERNAL </item>
+	<item> SQLITE_PERM </item>
+	<item> SQLITE_ABORT </item>
+	<item> SQLITE_BUSY </item>
+	<item> SQLITE_LOCKED </item>
+	<item> SQLITE_NOMEM </item>
+	<item> SQLITE_READONLY </item>
+	<item> SQLITE_INTERRUPT </item>
+	<item> SQLITE_IOERR </item>
+	<item> SQLITE_CORRUPT </item>
+	<item> SQLITE_NOTFOUND </item>
+	<item> SQLITE_FULL </item>
+	<item> SQLITE_CANTOPEN </item>
+	<item> SQLITE_PROTOCOL </item>
+	<item> SQLITE_EMPTY </item>
+	<item> SQLITE_SCHEMA </item>
+	<item> SQLITE_TOOBIG </item>
+	<item> SQLITE_CONSTRAINT </item>
+	<item> SQLITE_MISMATCH </item>
+	<item> SQLITE_MISUSE </item>
+	<item> SQLITE_NOLFS </item>
+	<item> SQLITE_AUTH </item>
+	<item> SQLITE_FORMAT </item>
+	<item> SQLITE_ROW </item>
+	<item> SQLITE_DONE </item>
+	<item> MSG_IPC_NOWAIT </item>
+	<item> MSG_NOERROR </item>
+	<item> MSG_EXCEPT </item>
+	<item> T_INCLUDE </item>
+	<item> T_INCLUDE_ONCE </item>
+	<item> T_EVAL </item>
+	<item> T_REQUIRE </item>
+	<item> T_REQUIRE_ONCE </item>
+	<item> T_LOGICAL_OR </item>
+	<item> T_LOGICAL_XOR </item>
+	<item> T_LOGICAL_AND </item>
+	<item> T_PRINT </item>
+	<item> T_PLUS_EQUAL </item>
+	<item> T_MINUS_EQUAL </item>
+	<item> T_MUL_EQUAL </item>
+	<item> T_DIV_EQUAL </item>
+	<item> T_CONCAT_EQUAL </item>
+	<item> T_MOD_EQUAL </item>
+	<item> T_AND_EQUAL </item>
+	<item> T_OR_EQUAL </item>
+	<item> T_XOR_EQUAL </item>
+	<item> T_SL_EQUAL </item>
+	<item> T_SR_EQUAL </item>
+	<item> T_BOOLEAN_OR </item>
+	<item> T_BOOLEAN_AND </item>
+	<item> T_IS_EQUAL </item>
+	<item> T_IS_NOT_EQUAL </item>
+	<item> T_IS_IDENTICAL </item>
+	<item> T_IS_NOT_IDENTICAL </item>
+	<item> T_IS_SMALLER_OR_EQUAL </item>
+	<item> T_IS_GREATER_OR_EQUAL </item>
+	<item> T_SL </item>
+	<item> T_SR </item>
+	<item> T_INC </item>
+	<item> T_DEC </item>
+	<item> T_INT_CAST </item>
+	<item> T_DOUBLE_CAST </item>
+	<item> T_STRING_CAST </item>
+	<item> T_ARRAY_CAST </item>
+	<item> T_OBJECT_CAST </item>
+	<item> T_BOOL_CAST </item>
+	<item> T_UNSET_CAST </item>
+	<item> T_NEW </item>
+	<item> T_EXIT </item>
+	<item> T_IF </item>
+	<item> T_ELSEIF </item>
+	<item> T_ELSE </item>
+	<item> T_ENDIF </item>
+	<item> T_LNUMBER </item>
+	<item> T_DNUMBER </item>
+	<item> T_STRING </item>
+	<item> T_STRING_VARNAME </item>
+	<item> T_VARIABLE </item>
+	<item> T_NUM_STRING </item>
+	<item> T_INLINE_HTML </item>
+	<item> T_CHARACTER </item>
+	<item> T_BAD_CHARACTER </item>
+	<item> T_ENCAPSED_AND_WHITESPACE </item>
+	<item> T_CONSTANT_ENCAPSED_STRING </item>
+	<item> T_ECHO </item>
+	<item> T_DO </item>
+	<item> T_WHILE </item>
+	<item> T_ENDWHILE </item>
+	<item> T_FOR </item>
+	<item> T_ENDFOR </item>
+	<item> T_FOREACH </item>
+	<item> T_ENDFOREACH </item>
+	<item> T_DECLARE </item>
+	<item> T_ENDDECLARE </item>
+	<item> T_AS </item>
+	<item> T_SWITCH </item>
+	<item> T_ENDSWITCH </item>
+	<item> T_CASE </item>
+	<item> T_DEFAULT </item>
+	<item> T_BREAK </item>
+	<item> T_CONTINUE </item>
+	<item> T_FUNCTION </item>
+	<item> T_CONST </item>
+	<item> T_RETURN </item>
+	<item> T_USE </item>
+	<item> T_GLOBAL </item>
+	<item> T_STATIC </item>
+	<item> T_VAR </item>
+	<item> T_UNSET </item>
+	<item> T_ISSET </item>
+	<item> T_EMPTY </item>
+	<item> T_CLASS </item>
+	<item> T_EXTENDS </item>
+	<item> T_INTERFACE </item>
+	<item> T_IMPLEMENTS </item>
+	<item> T_OBJECT_OPERATOR </item>
+	<item> T_DOUBLE_ARROW </item>
+	<item> T_LIST </item>
+	<item> T_ARRAY </item>
+	<item> T_CLASS_C </item>
+	<item> T_FUNC_C </item>
+	<item> T_METHOD_C </item>
+	<item> T_LINE </item>
+	<item> T_FILE </item>
+	<item> T_COMMENT </item>
+	<item> T_DOC_COMMENT </item>
+	<item> T_OPEN_TAG </item>
+	<item> T_OPEN_TAG_WITH_ECHO </item>
+	<item> T_CLOSE_TAG </item>
+	<item> T_WHITESPACE </item>
+	<item> T_START_HEREDOC </item>
+	<item> T_END_HEREDOC </item>
+	<item> T_DOLLAR_OPEN_CURLY_BRACES </item>
+	<item> T_CURLY_OPEN </item>
+	<item> T_PAAMAYIM_NEKUDOTAYIM </item>
+	<item> T_DOUBLE_COLON </item>
+	<item> T_ABSTRACT </item>
+	<item> T_CATCH </item>
+	<item> T_FINAL </item>
+	<item> T_INSTANCEOF </item>
+	<item> T_PRIVATE </item>
+	<item> T_PROTECTED </item>
+	<item> T_PUBLIC </item>
+	<item> T_THROW </item>
+	<item> T_TRY </item>
+	<item> T_CLONE </item>
+	<item> XSL_CLONE_AUTO </item>
+	<item> XSL_CLONE_NEVER </item>
+	<item> XSL_CLONE_ALWAYS </item>
+	<item> YPERR_BADARGS </item>
+	<item> YPERR_BADDB </item>
+	<item> YPERR_BUSY </item>
+	<item> YPERR_DOMAIN </item>
+	<item> YPERR_KEY </item>
+	<item> YPERR_MAP </item>
+	<item> YPERR_NODOM </item>
+	<item> YPERR_NOMORE </item>
+	<item> YPERR_PMAP </item>
+	<item> YPERR_RESRC </item>
+	<item> YPERR_RPC </item>
+	<item> YPERR_YPBIND </item>
+	<item> YPERR_YPERR </item>
+	<item> YPERR_YPSERV </item>
+	<item> YPERR_VERS </item>
+	<item> FORCE_GZIP </item>
+	<item> FORCE_DEFLATE </item>
+	<item> E_ERROR </item>
+	<item> E_WARNING </item>
+	<item> E_PARSE </item>
+	<item> E_NOTICE </item>
+	<item> E_STRICT </item>
+	<item> E_CORE_ERROR </item>
+	<item> E_CORE_WARNING </item>
+	<item> E_COMPILE_ERROR </item>
+	<item> E_COMPILE_WARNING </item>
+	<item> E_USER_ERROR </item>
+	<item> E_USER_WARNING </item>
+	<item> E_USER_NOTICE </item>
+	<item> E_ALL </item>
+	<item> TRUE </item>
+	<item> FALSE </item>
+	<item> ZEND_THREAD_SAFE </item>
+	<item> NULL </item>
+	<item> PHP_VERSION </item>
+	<item> PHP_OS </item>
+	<item> PHP_SAPI </item>
+	<item> DEFAULT_INCLUDE_PATH </item>
+	<item> PEAR_INSTALL_DIR </item>
+	<item> PEAR_EXTENSION_DIR </item>
+	<item> PHP_EXTENSION_DIR </item>
+	<item> PHP_PREFIX </item>
+	<item> PHP_BINDIR </item>
+	<item> PHP_LIBDIR </item>
+	<item> PHP_DATADIR </item>
+	<item> PHP_SYSCONFDIR </item>
+	<item> PHP_LOCALSTATEDIR </item>
+	<item> PHP_CONFIG_FILE_PATH </item>
+	<item> PHP_CONFIG_FILE_SCAN_DIR </item>
+	<item> PHP_SHLIB_SUFFIX </item>
+	<item> PHP_EOL </item>
+	<item> PHP_OUTPUT_HANDLER_START </item>
+	<item> PHP_OUTPUT_HANDLER_CONT </item>
+	<item> PHP_OUTPUT_HANDLER_END </item>
+	<item> UPLOAD_ERR_OK </item>
+	<item> UPLOAD_ERR_INI_SIZE </item>
+	<item> UPLOAD_ERR_FORM_SIZE </item>
+	<item> UPLOAD_ERR_PARTIAL </item>
+	<item> UPLOAD_ERR_NO_FILE </item>
+	<item> UPLOAD_ERR_NO_TMP_DIR </item>
+	<item> P_STATIC </item>
+	<item> P_PUBLIC </item>
+	<item> P_PROTECTED </item>
+	<item> P_PRIVATE </item>
+	<item> M_STATIC </item>
+	<item> M_PUBLIC </item>
+	<item> M_PROTECTED </item>
+	<item> M_PRIVATE </item>
+	<item> M_ABSTRACT </item>
+	<item> M_FINAL </item>
+	<item> C_IMPLICIT_ABSTRACT </item>
+	<item> C_EXPLICIT_ABSTRACT </item>
+	<item> C_FINAL </item>
+	<item> XML_ERROR_NONE </item>
+	<item> XML_ERROR_NO_MEMORY </item>
+	<item> XML_ERROR_SYNTAX </item>
+	<item> XML_ERROR_NO_ELEMENTS </item>
+	<item> XML_ERROR_INVALID_TOKEN </item>
+	<item> XML_ERROR_UNCLOSED_TOKEN </item>
+	<item> XML_ERROR_PARTIAL_CHAR </item>
+	<item> XML_ERROR_TAG_MISMATCH </item>
+	<item> XML_ERROR_DUPLICATE_ATTRIBUTE </item>
+	<item> XML_ERROR_JUNK_AFTER_DOC_ELEMENT </item>
+	<item> XML_ERROR_PARAM_ENTITY_REF </item>
+	<item> XML_ERROR_UNDEFINED_ENTITY </item>
+	<item> XML_ERROR_RECURSIVE_ENTITY_REF </item>
+	<item> XML_ERROR_ASYNC_ENTITY </item>
+	<item> XML_ERROR_BAD_CHAR_REF </item>
+	<item> XML_ERROR_BINARY_ENTITY_REF </item>
+	<item> XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF </item>
+	<item> XML_ERROR_MISPLACED_XML_PI </item>
+	<item> XML_ERROR_UNKNOWN_ENCODING </item>
+	<item> XML_ERROR_INCORRECT_ENCODING </item>
+	<item> XML_ERROR_UNCLOSED_CDATA_SECTION </item>
+	<item> XML_ERROR_EXTERNAL_ENTITY_HANDLING </item>
+	<item> XML_OPTION_CASE_FOLDING </item>
+	<item> XML_OPTION_TARGET_ENCODING </item>
+	<item> XML_OPTION_SKIP_TAGSTART </item>
+	<item> XML_OPTION_SKIP_WHITE </item>
+	<item> XML_SAX_IMPL </item>
+	<item> CONNECTION_ABORTED </item>
+	<item> CONNECTION_NORMAL </item>
+	<item> CONNECTION_TIMEOUT </item>
+	<item> INI_USER </item>
+	<item> INI_PERDIR </item>
+	<item> INI_SYSTEM </item>
+	<item> INI_ALL </item>
+	<item> SUNFUNCS_RET_TIMESTAMP </item>
+	<item> SUNFUNCS_RET_STRING </item>
+	<item> SUNFUNCS_RET_DOUBLE </item>
+	<item> M_E </item>
+	<item> M_LOG2E </item>
+	<item> M_LOG10E </item>
+	<item> M_LN2 </item>
+	<item> M_LN10 </item>
+	<item> M_PI </item>
+	<item> M_PI_2 </item>
+	<item> M_PI_4 </item>
+	<item> M_1_PI </item>
+	<item> M_2_PI </item>
+	<item> M_2_SQRTPI </item>
+	<item> M_SQRT2 </item>
+	<item> M_SQRT1_2 </item>
+	<item> INF </item>
+	<item> NAN </item>
+	<item> INFO_GENERAL </item>
+	<item> INFO_CREDITS </item>
+	<item> INFO_CONFIGURATION </item>
+	<item> INFO_MODULES </item>
+	<item> INFO_ENVIRONMENT </item>
+	<item> INFO_VARIABLES </item>
+	<item> INFO_LICENSE </item>
+	<item> INFO_ALL </item>
+	<item> CREDITS_GROUP </item>
+	<item> CREDITS_GENERAL </item>
+	<item> CREDITS_SAPI </item>
+	<item> CREDITS_MODULES </item>
+	<item> CREDITS_DOCS </item>
+	<item> CREDITS_FULLPAGE </item>
+	<item> CREDITS_QA </item>
+	<item> CREDITS_ALL </item>
+	<item> HTML_SPECIALCHARS </item>
+	<item> HTML_ENTITIES </item>
+	<item> ENT_COMPAT </item>
+	<item> ENT_QUOTES </item>
+	<item> ENT_NOQUOTES </item>
+	<item> STR_PAD_LEFT </item>
+	<item> STR_PAD_RIGHT </item>
+	<item> STR_PAD_BOTH </item>
+	<item> PATHINFO_DIRNAME </item>
+	<item> PATHINFO_BASENAME </item>
+	<item> PATHINFO_EXTENSION </item>
+	<item> CHAR_MAX </item>
+	<item> LC_CTYPE </item>
+	<item> LC_NUMERIC </item>
+	<item> LC_TIME </item>
+	<item> LC_COLLATE </item>
+	<item> LC_MONETARY </item>
+	<item> LC_ALL </item>
+	<item> LC_MESSAGES </item>
+	<item> SEEK_SET </item>
+	<item> SEEK_CUR </item>
+	<item> SEEK_END </item>
+	<item> LOCK_SH </item>
+	<item> LOCK_EX </item>
+	<item> LOCK_UN </item>
+	<item> LOCK_NB </item>
+	<item> STREAM_NOTIFY_CONNECT </item>
+	<item> STREAM_NOTIFY_AUTH_REQUIRED </item>
+	<item> STREAM_NOTIFY_AUTH_RESULT </item>
+	<item> STREAM_NOTIFY_MIME_TYPE_IS </item>
+	<item> STREAM_NOTIFY_FILE_SIZE_IS </item>
+	<item> STREAM_NOTIFY_REDIRECTED </item>
+	<item> STREAM_NOTIFY_PROGRESS </item>
+	<item> STREAM_NOTIFY_FAILURE </item>
+	<item> STREAM_NOTIFY_COMPLETED </item>
+	<item> STREAM_NOTIFY_RESOLVE </item>
+	<item> STREAM_NOTIFY_SEVERITY_INFO </item>
+	<item> STREAM_NOTIFY_SEVERITY_WARN </item>
+	<item> STREAM_NOTIFY_SEVERITY_ERR </item>
+	<item> STREAM_FILTER_READ </item>
+	<item> STREAM_FILTER_WRITE </item>
+	<item> STREAM_FILTER_ALL </item>
+	<item> STREAM_CLIENT_PERSISTENT </item>
+	<item> STREAM_CLIENT_ASYNC_CONNECT </item>
+	<item> STREAM_CLIENT_CONNECT </item>
+	<item> STREAM_PEEK </item>
+	<item> STREAM_OOB </item>
+	<item> STREAM_SERVER_BIND </item>
+	<item> STREAM_SERVER_LISTEN </item>
+	<item> FILE_USE_INCLUDE_PATH </item>
+	<item> FILE_IGNORE_NEW_LINES </item>
+	<item> FILE_SKIP_EMPTY_LINES </item>
+	<item> FILE_APPEND </item>
+	<item> FILE_NO_DEFAULT_CONTEXT </item>
+	<item> FNM_NOESCAPE </item>
+	<item> FNM_PATHNAME </item>
+	<item> FNM_PERIOD </item>
+	<item> FNM_CASEFOLD </item>
+	<item> PSFS_PASS_ON </item>
+	<item> PSFS_FEED_ME </item>
+	<item> PSFS_ERR_FATAL </item>
+	<item> PSFS_FLAG_NORMAL </item>
+	<item> PSFS_FLAG_FLUSH_INC </item>
+	<item> PSFS_FLAG_FLUSH_CLOSE </item>
+	<item> ABDAY_1 </item>
+	<item> ABDAY_2 </item>
+	<item> ABDAY_3 </item>
+	<item> ABDAY_4 </item>
+	<item> ABDAY_5 </item>
+	<item> ABDAY_6 </item>
+	<item> ABDAY_7 </item>
+	<item> DAY_1 </item>
+	<item> DAY_2 </item>
+	<item> DAY_3 </item>
+	<item> DAY_4 </item>
+	<item> DAY_5 </item>
+	<item> DAY_6 </item>
+	<item> DAY_7 </item>
+	<item> ABMON_1 </item>
+	<item> ABMON_2 </item>
+	<item> ABMON_3 </item>
+	<item> ABMON_4 </item>
+	<item> ABMON_5 </item>
+	<item> ABMON_6 </item>
+	<item> ABMON_7 </item>
+	<item> ABMON_8 </item>
+	<item> ABMON_9 </item>
+	<item> ABMON_10 </item>
+	<item> ABMON_11 </item>
+	<item> ABMON_12 </item>
+	<item> MON_1 </item>
+	<item> MON_2 </item>
+	<item> MON_3 </item>
+	<item> MON_4 </item>
+	<item> MON_5 </item>
+	<item> MON_6 </item>
+	<item> MON_7 </item>
+	<item> MON_8 </item>
+	<item> MON_9 </item>
+	<item> MON_10 </item>
+	<item> MON_11 </item>
+	<item> MON_12 </item>
+	<item> AM_STR </item>
+	<item> PM_STR </item>
+	<item> D_T_FMT </item>
+	<item> D_FMT </item>
+	<item> T_FMT </item>
+	<item> T_FMT_AMPM </item>
+	<item> ERA </item>
+	<item> ERA_D_T_FMT </item>
+	<item> ERA_D_FMT </item>
+	<item> ERA_T_FMT </item>
+	<item> ALT_DIGITS </item>
+	<item> CRNCYSTR </item>
+	<item> RADIXCHAR </item>
+	<item> THOUSEP </item>
+	<item> YESEXPR </item>
+	<item> NOEXPR </item>
+	<item> CODESET </item>
+	<item> CRYPT_SALT_LENGTH </item>
+	<item> CRYPT_STD_DES </item>
+	<item> CRYPT_EXT_DES </item>
+	<item> CRYPT_MD5 </item>
+	<item> CRYPT_BLOWFISH </item>
+	<item> DIRECTORY_SEPARATOR </item>
+	<item> PATH_SEPARATOR </item>
+	<item> GLOB_BRACE </item>
+	<item> GLOB_MARK </item>
+	<item> GLOB_NOSORT </item>
+	<item> GLOB_NOCHECK </item>
+	<item> GLOB_NOESCAPE </item>
+	<item> GLOB_ONLYDIR </item>
+	<item> LOG_EMERG </item>
+	<item> LOG_ALERT </item>
+	<item> LOG_CRIT </item>
+	<item> LOG_ERR </item>
+	<item> LOG_WARNING </item>
+	<item> LOG_NOTICE </item>
+	<item> LOG_INFO </item>
+	<item> LOG_DEBUG </item>
+	<item> LOG_KERN </item>
+	<item> LOG_USER </item>
+	<item> LOG_MAIL </item>
+	<item> LOG_DAEMON </item>
+	<item> LOG_AUTH </item>
+	<item> LOG_SYSLOG </item>
+	<item> LOG_LPR </item>
+	<item> LOG_NEWS </item>
+	<item> LOG_UUCP </item>
+	<item> LOG_CRON </item>
+	<item> LOG_AUTHPRIV </item>
+	<item> LOG_LOCAL0 </item>
+	<item> LOG_LOCAL1 </item>
+	<item> LOG_LOCAL2 </item>
+	<item> LOG_LOCAL3 </item>
+	<item> LOG_LOCAL4 </item>
+	<item> LOG_LOCAL5 </item>
+	<item> LOG_LOCAL6 </item>
+	<item> LOG_LOCAL7 </item>
+	<item> LOG_PID </item>
+	<item> LOG_CONS </item>
+	<item> LOG_ODELAY </item>
+	<item> LOG_NDELAY </item>
+	<item> LOG_NOWAIT </item>
+	<item> LOG_PERROR </item>
+	<item> EXTR_OVERWRITE </item>
+	<item> EXTR_SKIP </item>
+	<item> EXTR_PREFIX_SAME </item>
+	<item> EXTR_PREFIX_ALL </item>
+	<item> EXTR_PREFIX_INVALID </item>
+	<item> EXTR_PREFIX_IF_EXISTS </item>
+	<item> EXTR_IF_EXISTS </item>
+	<item> EXTR_REFS </item>
+	<item> SORT_ASC </item>
+	<item> SORT_DESC </item>
+	<item> SORT_REGULAR </item>
+	<item> SORT_NUMERIC </item>
+	<item> SORT_STRING </item>
+	<item> SORT_LOCALE_STRING </item>
+	<item> CASE_LOWER </item>
+	<item> CASE_UPPER </item>
+	<item> COUNT_NORMAL </item>
+	<item> COUNT_RECURSIVE </item>
+	<item> ASSERT_ACTIVE </item>
+	<item> ASSERT_CALLBACK </item>
+	<item> ASSERT_BAIL </item>
+	<item> ASSERT_WARNING </item>
+	<item> ASSERT_QUIET_EVAL </item>
+	<item> STREAM_USE_PATH </item>
+	<item> STREAM_IGNORE_URL </item>
+	<item> STREAM_ENFORCE_SAFE_MODE </item>
+	<item> STREAM_REPORT_ERRORS </item>
+	<item> STREAM_MUST_SEEK </item>
+	<item> STREAM_URL_STAT_LINK </item>
+	<item> STREAM_URL_STAT_QUIET </item>
+	<item> STREAM_MKDIR_RECURSIVE </item>
+	<item> IMAGETYPE_GIF </item>
+	<item> IMAGETYPE_JPEG </item>
+	<item> IMAGETYPE_PNG </item>
+	<item> IMAGETYPE_SWF </item>
+	<item> IMAGETYPE_PSD </item>
+	<item> IMAGETYPE_BMP </item>
+	<item> IMAGETYPE_TIFF_II </item>
+	<item> IMAGETYPE_TIFF_MM </item>
+	<item> IMAGETYPE_JPC </item>
+	<item> IMAGETYPE_JP2 </item>
+	<item> IMAGETYPE_JPX </item>
+	<item> IMAGETYPE_JB2 </item>
+	<item> IMAGETYPE_IFF </item>
+	<item> IMAGETYPE_WBMP </item>
+	<item> IMAGETYPE_JPEG2000 </item>
+	<item> IMAGETYPE_XBM </item>
+	<item> DNS_A </item>
+	<item> DNS_NS </item>
+	<item> DNS_CNAME </item>
+	<item> DNS_SOA </item>
+	<item> DNS_PTR </item>
+	<item> DNS_HINFO </item>
+	<item> DNS_MX </item>
+	<item> DNS_TXT </item>
+	<item> DNS_SRV </item>
+	<item> DNS_NAPTR </item>
+	<item> DNS_AAAA </item>
+	<item> DNS_ANY </item>
+	<item> DNS_ALL </item>
+	<item> RIT_LEAVES_ONLY </item>
+	<item> RIT_SELF_FIRST </item>
+	<item> RIT_CHILD_FIRST </item>
+	<item> CIT_CALL_TOSTRING </item>
+	<item> CIT_CATCH_GET_CHILD </item>
+	<item> PREG_PATTERN_ORDER </item>
+	<item> PREG_SET_ORDER </item>
+	<item> PREG_OFFSET_CAPTURE </item>
+	<item> PREG_SPLIT_NO_EMPTY </item>
+	<item> PREG_SPLIT_DELIM_CAPTURE </item>
+	<item> PREG_SPLIT_OFFSET_CAPTURE </item>
+	<item> PREG_GREP_INVERT </item>
+	<item> CAL_GREGORIAN </item>
+	<item> CAL_JULIAN </item>
+	<item> CAL_JEWISH </item>
+	<item> CAL_FRENCH </item>
+	<item> CAL_NUM_CALS </item>
+	<item> CAL_DOW_DAYNO </item>
+	<item> CAL_DOW_SHORT </item>
+	<item> CAL_DOW_LONG </item>
+	<item> CAL_MONTH_GREGORIAN_SHORT </item>
+	<item> CAL_MONTH_GREGORIAN_LONG </item>
+	<item> CAL_MONTH_JULIAN_SHORT </item>
+	<item> CAL_MONTH_JULIAN_LONG </item>
+	<item> CAL_MONTH_JEWISH </item>
+	<item> CAL_MONTH_FRENCH </item>
+	<item> CAL_EASTER_DEFAULT </item>
+	<item> CAL_EASTER_ROMAN </item>
+	<item> CAL_EASTER_ALWAYS_GREGORIAN </item>
+	<item> CAL_EASTER_ALWAYS_JULIAN </item>
+	<item> CAL_JEWISH_ADD_ALAFIM_GERESH </item>
+	<item> CAL_JEWISH_ADD_ALAFIM </item>
+	<item> CAL_JEWISH_ADD_GERESHAYIM </item>
+	<item> CURLOPT_DNS_USE_GLOBAL_CACHE </item>
+	<item> CURLOPT_DNS_CACHE_TIMEOUT </item>
+	<item> CURLOPT_PORT </item>
+	<item> CURLOPT_FILE </item>
+	<item> CURLOPT_READDATA </item>
+	<item> CURLOPT_INFILE </item>
+	<item> CURLOPT_INFILESIZE </item>
+	<item> CURLOPT_URL </item>
+	<item> CURLOPT_PROXY </item>
+	<item> CURLOPT_VERBOSE </item>
+	<item> CURLOPT_HEADER </item>
+	<item> CURLOPT_HTTPHEADER </item>
+	<item> CURLOPT_NOPROGRESS </item>
+	<item> CURLOPT_NOBODY </item>
+	<item> CURLOPT_FAILONERROR </item>
+	<item> CURLOPT_UPLOAD </item>
+	<item> CURLOPT_POST </item>
+	<item> CURLOPT_FTPLISTONLY </item>
+	<item> CURLOPT_FTPAPPEND </item>
+	<item> CURLOPT_NETRC </item>
+	<item> CURLOPT_FOLLOWLOCATION </item>
+	<item> CURLOPT_FTPASCII </item>
+	<item> CURLOPT_PUT </item>
+	<item> CURLOPT_MUTE </item>
+	<item> CURLOPT_USERPWD </item>
+	<item> CURLOPT_PROXYUSERPWD </item>
+	<item> CURLOPT_RANGE </item>
+	<item> CURLOPT_TIMEOUT </item>
+	<item> CURLOPT_POSTFIELDS </item>
+	<item> CURLOPT_REFERER </item>
+	<item> CURLOPT_USERAGENT </item>
+	<item> CURLOPT_FTPPORT </item>
+	<item> CURLOPT_FTP_USE_EPSV </item>
+	<item> CURLOPT_LOW_SPEED_LIMIT </item>
+	<item> CURLOPT_LOW_SPEED_TIME </item>
+	<item> CURLOPT_RESUME_FROM </item>
+	<item> CURLOPT_COOKIE </item>
+	<item> CURLOPT_SSLCERT </item>
+	<item> CURLOPT_SSLCERTPASSWD </item>
+	<item> CURLOPT_WRITEHEADER </item>
+	<item> CURLOPT_SSL_VERIFYHOST </item>
+	<item> CURLOPT_COOKIEFILE </item>
+	<item> CURLOPT_SSLVERSION </item>
+	<item> CURLOPT_TIMECONDITION </item>
+	<item> CURLOPT_TIMEVALUE </item>
+	<item> CURLOPT_CUSTOMREQUEST </item>
+	<item> CURLOPT_STDERR </item>
+	<item> CURLOPT_TRANSFERTEXT </item>
+	<item> CURLOPT_RETURNTRANSFER </item>
+	<item> CURLOPT_QUOTE </item>
+	<item> CURLOPT_POSTQUOTE </item>
+	<item> CURLOPT_INTERFACE </item>
+	<item> CURLOPT_KRB4LEVEL </item>
+	<item> CURLOPT_HTTPPROXYTUNNEL </item>
+	<item> CURLOPT_FILETIME </item>
+	<item> CURLOPT_WRITEFUNCTION </item>
+	<item> CURLOPT_READFUNCTION </item>
+	<item> CURLOPT_PASSWDFUNCTION </item>
+	<item> CURLOPT_HEADERFUNCTION </item>
+	<item> CURLOPT_MAXREDIRS </item>
+	<item> CURLOPT_MAXCONNECTS </item>
+	<item> CURLOPT_CLOSEPOLICY </item>
+	<item> CURLOPT_FRESH_CONNECT </item>
+	<item> CURLOPT_FORBID_REUSE </item>
+	<item> CURLOPT_RANDOM_FILE </item>
+	<item> CURLOPT_EGDSOCKET </item>
+	<item> CURLOPT_CONNECTTIMEOUT </item>
+	<item> CURLOPT_SSL_VERIFYPEER </item>
+	<item> CURLOPT_CAINFO </item>
+	<item> CURLOPT_CAPATH </item>
+	<item> CURLOPT_COOKIEJAR </item>
+	<item> CURLOPT_SSL_CIPHER_LIST </item>
+	<item> CURLOPT_BINARYTRANSFER </item>
+	<item> CURLOPT_NOSIGNAL </item>
+	<item> CURLOPT_PROXYTYPE </item>
+	<item> CURLOPT_BUFFERSIZE </item>
+	<item> CURLOPT_HTTPGET </item>
+	<item> CURLOPT_HTTP_VERSION </item>
+	<item> CURLOPT_SSLKEY </item>
+	<item> CURLOPT_SSLKEYTYPE </item>
+	<item> CURLOPT_SSLKEYPASSWD </item>
+	<item> CURLOPT_SSLENGINE </item>
+	<item> CURLOPT_SSLENGINE_DEFAULT </item>
+	<item> CURLOPT_SSLCERTTYPE </item>
+	<item> CURLOPT_CRLF </item>
+	<item> CURLOPT_ENCODING </item>
+	<item> CURLOPT_PROXYPORT </item>
+	<item> CURLOPT_UNRESTRICTED_AUTH </item>
+	<item> CURLOPT_FTP_USE_EPRT </item>
+	<item> CURLOPT_HTTP200ALIASES </item>
+	<item> CURL_TIMECOND_IFMODSINCE </item>
+	<item> CURL_TIMECOND_IFUNMODSINCE </item>
+	<item> CURL_TIMECOND_LASTMOD </item>
+	<item> CURLOPT_HTTPAUTH </item>
+	<item> CURLAUTH_BASIC </item>
+	<item> CURLAUTH_DIGEST </item>
+	<item> CURLAUTH_GSSNEGOTIATE </item>
+	<item> CURLAUTH_NTLM </item>
+	<item> CURLAUTH_ANY </item>
+	<item> CURLAUTH_ANYSAFE </item>
+	<item> CURLOPT_PROXYAUTH </item>
+	<item> CURLCLOSEPOLICY_LEAST_RECENTLY_USED </item>
+	<item> CURLCLOSEPOLICY_LEAST_TRAFFIC </item>
+	<item> CURLCLOSEPOLICY_SLOWEST </item>
+	<item> CURLCLOSEPOLICY_CALLBACK </item>
+	<item> CURLCLOSEPOLICY_OLDEST </item>
+	<item> CURLINFO_EFFECTIVE_URL </item>
+	<item> CURLINFO_HTTP_CODE </item>
+	<item> CURLINFO_HEADER_SIZE </item>
+	<item> CURLINFO_REQUEST_SIZE </item>
+	<item> CURLINFO_TOTAL_TIME </item>
+	<item> CURLINFO_NAMELOOKUP_TIME </item>
+	<item> CURLINFO_CONNECT_TIME </item>
+	<item> CURLINFO_PRETRANSFER_TIME </item>
+	<item> CURLINFO_SIZE_UPLOAD </item>
+	<item> CURLINFO_SIZE_DOWNLOAD </item>
+	<item> CURLINFO_SPEED_DOWNLOAD </item>
+	<item> CURLINFO_SPEED_UPLOAD </item>
+	<item> CURLINFO_FILETIME </item>
+	<item> CURLINFO_SSL_VERIFYRESULT </item>
+	<item> CURLINFO_CONTENT_LENGTH_DOWNLOAD </item>
+	<item> CURLINFO_CONTENT_LENGTH_UPLOAD </item>
+	<item> CURLINFO_STARTTRANSFER_TIME </item>
+	<item> CURLINFO_CONTENT_TYPE </item>
+	<item> CURLINFO_REDIRECT_TIME </item>
+	<item> CURLINFO_REDIRECT_COUNT </item>
+	<item> CURL_VERSION_IPV6 </item>
+	<item> CURL_VERSION_KERBEROS4 </item>
+	<item> CURL_VERSION_SSL </item>
+	<item> CURL_VERSION_LIBZ </item>
+	<item> CURLVERSION_NOW </item>
+	<item> CURLE_OK </item>
+	<item> CURLE_UNSUPPORTED_PROTOCOL </item>
+	<item> CURLE_FAILED_INIT </item>
+	<item> CURLE_URL_MALFORMAT </item>
+	<item> CURLE_URL_MALFORMAT_USER </item>
+	<item> CURLE_COULDNT_RESOLVE_PROXY </item>
+	<item> CURLE_COULDNT_RESOLVE_HOST </item>
+	<item> CURLE_COULDNT_CONNECT </item>
+	<item> CURLE_FTP_WEIRD_SERVER_REPLY </item>
+	<item> CURLE_FTP_ACCESS_DENIED </item>
+	<item> CURLE_FTP_USER_PASSWORD_INCORRECT </item>
+	<item> CURLE_FTP_WEIRD_PASS_REPLY </item>
+	<item> CURLE_FTP_WEIRD_USER_REPLY </item>
+	<item> CURLE_FTP_WEIRD_PASV_REPLY </item>
+	<item> CURLE_FTP_WEIRD_227_FORMAT </item>
+	<item> CURLE_FTP_CANT_GET_HOST </item>
+	<item> CURLE_FTP_CANT_RECONNECT </item>
+	<item> CURLE_FTP_COULDNT_SET_BINARY </item>
+	<item> CURLE_PARTIAL_FILE </item>
+	<item> CURLE_FTP_COULDNT_RETR_FILE </item>
+	<item> CURLE_FTP_WRITE_ERROR </item>
+	<item> CURLE_FTP_QUOTE_ERROR </item>
+	<item> CURLE_HTTP_NOT_FOUND </item>
+	<item> CURLE_WRITE_ERROR </item>
+	<item> CURLE_MALFORMAT_USER </item>
+	<item> CURLE_FTP_COULDNT_STOR_FILE </item>
+	<item> CURLE_READ_ERROR </item>
+	<item> CURLE_OUT_OF_MEMORY </item>
+	<item> CURLE_OPERATION_TIMEOUTED </item>
+	<item> CURLE_FTP_COULDNT_SET_ASCII </item>
+	<item> CURLE_FTP_PORT_FAILED </item>
+	<item> CURLE_FTP_COULDNT_USE_REST </item>
+	<item> CURLE_FTP_COULDNT_GET_SIZE </item>
+	<item> CURLE_HTTP_RANGE_ERROR </item>
+	<item> CURLE_HTTP_POST_ERROR </item>
+	<item> CURLE_SSL_CONNECT_ERROR </item>
+	<item> CURLE_FTP_BAD_DOWNLOAD_RESUME </item>
+	<item> CURLE_FILE_COULDNT_READ_FILE </item>
+	<item> CURLE_LDAP_CANNOT_BIND </item>
+	<item> CURLE_LDAP_SEARCH_FAILED </item>
+	<item> CURLE_LIBRARY_NOT_FOUND </item>
+	<item> CURLE_FUNCTION_NOT_FOUND </item>
+	<item> CURLE_ABORTED_BY_CALLBACK </item>
+	<item> CURLE_BAD_FUNCTION_ARGUMENT </item>
+	<item> CURLE_BAD_CALLING_ORDER </item>
+	<item> CURLE_HTTP_PORT_FAILED </item>
+	<item> CURLE_BAD_PASSWORD_ENTERED </item>
+	<item> CURLE_TOO_MANY_REDIRECTS </item>
+	<item> CURLE_UNKNOWN_TELNET_OPTION </item>
+	<item> CURLE_TELNET_OPTION_SYNTAX </item>
+	<item> CURLE_OBSOLETE </item>
+	<item> CURLE_SSL_PEER_CERTIFICATE </item>
+	<item> CURLE_GOT_NOTHING </item>
+	<item> CURLE_SSL_ENGINE_NOTFOUND </item>
+	<item> CURLE_SSL_ENGINE_SETFAILED </item>
+	<item> CURLE_SEND_ERROR </item>
+	<item> CURLE_RECV_ERROR </item>
+	<item> CURLE_SHARE_IN_USE </item>
+	<item> CURLE_SSL_CERTPROBLEM </item>
+	<item> CURLE_SSL_CIPHER </item>
+	<item> CURLE_SSL_CACERT </item>
+	<item> CURLE_BAD_CONTENT_ENCODING </item>
+	<item> CURLPROXY_HTTP </item>
+	<item> CURLPROXY_SOCKS5 </item>
+	<item> CURL_NETRC_OPTIONAL </item>
+	<item> CURL_NETRC_IGNORED </item>
+	<item> CURL_NETRC_REQUIRED </item>
+	<item> CURL_HTTP_VERSION_NONE </item>
+	<item> CURL_HTTP_VERSION_1_0 </item>
+	<item> CURL_HTTP_VERSION_1_1 </item>
+	<item> CURLM_CALL_MULTI_PERFORM </item>
+	<item> CURLM_OK </item>
+	<item> CURLM_BAD_HANDLE </item>
+	<item> CURLM_BAD_EASY_HANDLE </item>
+	<item> CURLM_OUT_OF_MEMORY </item>
+	<item> CURLM_INTERNAL_ERROR </item>
+	<item> CURLMSG_DONE </item>
+	<item> DBX_MYSQL </item>
+	<item> DBX_ODBC </item>
+	<item> DBX_PGSQL </item>
+	<item> DBX_MSSQL </item>
+	<item> DBX_FBSQL </item>
+	<item> DBX_OCI8 </item>
+	<item> DBX_SYBASECT </item>
+	<item> DBX_SQLITE </item>
+	<item> DBX_PERSISTENT </item>
+	<item> DBX_RESULT_INFO </item>
+	<item> DBX_RESULT_INDEX </item>
+	<item> DBX_RESULT_ASSOC </item>
+	<item> DBX_RESULT_UNBUFFERED </item>
+	<item> DBX_COLNAMES_UNCHANGED </item>
+	<item> DBX_COLNAMES_UPPERCASE </item>
+	<item> DBX_COLNAMES_LOWERCASE </item>
+	<item> DBX_CMP_NATIVE </item>
+	<item> DBX_CMP_TEXT </item>
+	<item> DBX_CMP_NUMBER </item>
+	<item> DBX_CMP_ASC </item>
+	<item> DBX_CMP_DESC </item>
+	<item> O_RDONLY </item>
+	<item> O_WRONLY </item>
+	<item> O_RDWR </item>
+	<item> O_CREAT </item>
+	<item> O_EXCL </item>
+	<item> O_TRUNC </item>
+	<item> O_APPEND </item>
+	<item> O_NONBLOCK </item>
+	<item> O_NDELAY </item>
+	<item> O_SYNC </item>
+	<item> O_ASYNC </item>
+	<item> O_NOCTTY </item>
+	<item> S_IRWXU </item>
+	<item> S_IRUSR </item>
+	<item> S_IWUSR </item>
+	<item> S_IXUSR </item>
+	<item> S_IRWXG </item>
+	<item> S_IRGRP </item>
+	<item> S_IWGRP </item>
+	<item> S_IXGRP </item>
+	<item> S_IRWXO </item>
+	<item> S_IROTH </item>
+	<item> S_IWOTH </item>
+	<item> S_IXOTH </item>
+	<item> F_DUPFD </item>
+	<item> F_GETFD </item>
+	<item> F_GETFL </item>
+	<item> F_SETFL </item>
+	<item> F_GETLK </item>
+	<item> F_SETLK </item>
+	<item> F_SETLKW </item>
+	<item> F_SETOWN </item>
+	<item> F_GETOWN </item>
+	<item> F_UNLCK </item>
+	<item> F_RDLCK </item>
+	<item> F_WRLCK </item>
+	<item> XML_ELEMENT_NODE </item>
+	<item> XML_ATTRIBUTE_NODE </item>
+	<item> XML_TEXT_NODE </item>
+	<item> XML_CDATA_SECTION_NODE </item>
+	<item> XML_ENTITY_REF_NODE </item>
+	<item> XML_ENTITY_NODE </item>
+	<item> XML_PI_NODE </item>
+	<item> XML_COMMENT_NODE </item>
+	<item> XML_DOCUMENT_NODE </item>
+	<item> XML_DOCUMENT_TYPE_NODE </item>
+	<item> XML_DOCUMENT_FRAG_NODE </item>
+	<item> XML_NOTATION_NODE </item>
+	<item> XML_HTML_DOCUMENT_NODE </item>
+	<item> XML_DTD_NODE </item>
+	<item> XML_ELEMENT_DECL_NODE </item>
+	<item> XML_ATTRIBUTE_DECL_NODE </item>
+	<item> XML_ENTITY_DECL_NODE </item>
+	<item> XML_NAMESPACE_DECL_NODE </item>
+	<item> XML_LOCAL_NAMESPACE </item>
+	<item> XML_ATTRIBUTE_CDATA </item>
+	<item> XML_ATTRIBUTE_ID </item>
+	<item> XML_ATTRIBUTE_IDREF </item>
+	<item> XML_ATTRIBUTE_IDREFS </item>
+	<item> XML_ATTRIBUTE_ENTITY </item>
+	<item> XML_ATTRIBUTE_NMTOKEN </item>
+	<item> XML_ATTRIBUTE_NMTOKENS </item>
+	<item> XML_ATTRIBUTE_ENUMERATION </item>
+	<item> XML_ATTRIBUTE_NOTATION </item>
+	<item> DOM_PHP_ERR </item>
+	<item> DOM_INDEX_SIZE_ERR </item>
+	<item> DOMSTRING_SIZE_ERR </item>
+	<item> DOM_HIERARCHY_REQUEST_ERR </item>
+	<item> DOM_WRONG_DOCUMENT_ERR </item>
+	<item> DOM_INVALID_CHARACTER_ERR </item>
+	<item> DOM_NO_DATA_ALLOWED_ERR </item>
+	<item> DOM_NO_MODIFICATION_ALLOWED_ERR </item>
+	<item> DOM_NOT_FOUND_ERR </item>
+	<item> DOM_NOT_SUPPORTED_ERR </item>
+	<item> DOM_INUSE_ATTRIBUTE_ERR </item>
+	<item> DOM_INVALID_STATE_ERR </item>
+	<item> DOM_SYNTAX_ERR </item>
+	<item> DOM_INVALID_MODIFICATION_ERR </item>
+	<item> DOM_NAMESPACE_ERR </item>
+	<item> DOM_INVALID_ACCESS_ERR </item>
+	<item> DOM_VALIDATION_ERR </item>
+	<item> EXIF_USE_MBSTRING </item>
+	<item> FAMChanged </item>
+	<item> FAMDeleted </item>
+	<item> FAMStartExecuting </item>
+	<item> FAMStopExecuting </item>
+	<item> FAMCreated </item>
+	<item> FAMMoved </item>
+	<item> FAMAcknowledge </item>
+	<item> FAMExists </item>
+	<item> FAMEndExist </item>
+	<item> FTP_ASCII </item>
+	<item> FTP_TEXT </item>
+	<item> FTP_BINARY </item>
+	<item> FTP_IMAGE </item>
+	<item> FTP_AUTORESUME </item>
+	<item> FTP_TIMEOUT_SEC </item>
+	<item> FTP_AUTOSEEK </item>
+	<item> FTP_FAILED </item>
+	<item> FTP_FINISHED </item>
+	<item> FTP_MOREDATA </item>
+	<item> IMG_GIF </item>
+	<item> IMG_JPG </item>
+	<item> IMG_JPEG </item>
+	<item> IMG_PNG </item>
+	<item> IMG_WBMP </item>
+	<item> IMG_XPM </item>
+	<item> IMG_COLOR_TILED </item>
+	<item> IMG_COLOR_STYLED </item>
+	<item> IMG_COLOR_BRUSHED </item>
+	<item> IMG_COLOR_STYLEDBRUSHED </item>
+	<item> IMG_COLOR_TRANSPARENT </item>
+	<item> IMG_ARC_ROUNDED </item>
+	<item> IMG_ARC_PIE </item>
+	<item> IMG_ARC_CHORD </item>
+	<item> IMG_ARC_NOFILL </item>
+	<item> IMG_ARC_EDGED </item>
+	<item> IMG_GD2_RAW </item>
+	<item> IMG_GD2_COMPRESSED </item>
+	<item> IMG_EFFECT_REPLACE </item>
+	<item> IMG_EFFECT_ALPHABLEND </item>
+	<item> IMG_EFFECT_NORMAL </item>
+	<item> IMG_EFFECT_OVERLAY </item>
+	<item> GD_BUNDLED </item>
+	<item> IMG_FILTER_NEGATE </item>
+	<item> IMG_FILTER_GRAYSCALE </item>
+	<item> IMG_FILTER_BRIGHTNESS </item>
+	<item> IMG_FILTER_CONTRAST </item>
+	<item> IMG_FILTER_COLORIZE </item>
+	<item> IMG_FILTER_EDGEDETECT </item>
+	<item> IMG_FILTER_GAUSSIAN_BLUR </item>
+	<item> IMG_FILTER_SELECTIVE_BLUR </item>
+	<item> IMG_FILTER_EMBOSS </item>
+	<item> IMG_FILTER_MEAN_REMOVAL </item>
+	<item> IMG_FILTER_SMOOTH </item>
+	<item> GMP_ROUND_ZERO </item>
+	<item> GMP_ROUND_PLUSINF </item>
+	<item> GMP_ROUND_MINUSINF </item>
+	<item> ICONV_IMPL </item>
+	<item> ICONV_VERSION </item>
+	<item> ICONV_MIME_DECODE_STRICT </item>
+	<item> ICONV_MIME_DECODE_CONTINUE_ON_ERROR </item>
+	<item> NIL </item>
+	<item> IMAP_OPENTIMEOUT </item>
+	<item> IMAP_READTIMEOUT </item>
+	<item> IMAP_WRITETIMEOUT </item>
+	<item> IMAP_CLOSETIMEOUT </item>
+	<item> OP_DEBUG </item>
+	<item> OP_READONLY </item>
+	<item> OP_ANONYMOUS </item>
+	<item> OP_SHORTCACHE </item>
+	<item> OP_SILENT </item>
+	<item> OP_PROTOTYPE </item>
+	<item> OP_HALFOPEN </item>
+	<item> OP_EXPUNGE </item>
+	<item> OP_SECURE </item>
+	<item> CL_EXPUNGE </item>
+	<item> FT_UID </item>
+	<item> FT_PEEK </item>
+	<item> FT_NOT </item>
+	<item> FT_INTERNAL </item>
+	<item> FT_PREFETCHTEXT </item>
+	<item> ST_UID </item>
+	<item> ST_SILENT </item>
+	<item> ST_SET </item>
+	<item> CP_UID </item>
+	<item> CP_MOVE </item>
+	<item> SE_UID </item>
+	<item> SE_FREE </item>
+	<item> SE_NOPREFETCH </item>
+	<item> SO_FREE </item>
+	<item> SO_NOSERVER </item>
+	<item> SA_MESSAGES </item>
+	<item> SA_RECENT </item>
+	<item> SA_UNSEEN </item>
+	<item> SA_UIDNEXT </item>
+	<item> SA_UIDVALIDITY </item>
+	<item> SA_ALL </item>
+	<item> LATT_NOINFERIORS </item>
+	<item> LATT_NOSELECT </item>
+	<item> LATT_MARKED </item>
+	<item> LATT_UNMARKED </item>
+	<item> LATT_REFERRAL </item>
+	<item> LATT_HASCHILDREN </item>
+	<item> LATT_HASNOCHILDREN </item>
+	<item> SORTDATE </item>
+	<item> SORTARRIVAL </item>
+	<item> SORTFROM </item>
+	<item> SORTSUBJECT </item>
+	<item> SORTTO </item>
+	<item> SORTCC </item>
+	<item> SORTSIZE </item>
+	<item> TYPETEXT </item>
+	<item> TYPEMULTIPART </item>
+	<item> TYPEMESSAGE </item>
+	<item> TYPEAPPLICATION </item>
+	<item> TYPEAUDIO </item>
+	<item> TYPEIMAGE </item>
+	<item> TYPEVIDEO </item>
+	<item> TYPEMODEL </item>
+	<item> TYPEOTHER </item>
+	<item> ENC7BIT </item>
+	<item> ENC8BIT </item>
+	<item> ENCBINARY </item>
+	<item> ENCBASE64 </item>
+	<item> ENCQUOTEDPRINTABLE </item>
+	<item> ENCOTHER </item>
+	<item> LDAP_DEREF_NEVER </item>
+	<item> LDAP_DEREF_SEARCHING </item>
+	<item> LDAP_DEREF_FINDING </item>
+	<item> LDAP_DEREF_ALWAYS </item>
+	<item> LDAP_OPT_DEREF </item>
+	<item> LDAP_OPT_SIZELIMIT </item>
+	<item> LDAP_OPT_TIMELIMIT </item>
+	<item> LDAP_OPT_PROTOCOL_VERSION </item>
+	<item> LDAP_OPT_ERROR_NUMBER </item>
+	<item> LDAP_OPT_REFERRALS </item>
+	<item> LDAP_OPT_RESTART </item>
+	<item> LDAP_OPT_HOST_NAME </item>
+	<item> LDAP_OPT_ERROR_STRING </item>
+	<item> LDAP_OPT_MATCHED_DN </item>
+	<item> LDAP_OPT_SERVER_CONTROLS </item>
+	<item> LDAP_OPT_CLIENT_CONTROLS </item>
+	<item> LDAP_OPT_DEBUG_LEVEL </item>
+	<item> MB_OVERLOAD_MAIL </item>
+	<item> MB_OVERLOAD_STRING </item>
+	<item> MB_OVERLOAD_REGEX </item>
+	<item> MB_CASE_UPPER </item>
+	<item> MB_CASE_LOWER </item>
+	<item> MB_CASE_TITLE </item>
+	<item> MCRYPT_ENCRYPT </item>
+	<item> MCRYPT_DECRYPT </item>
+	<item> MCRYPT_DEV_RANDOM </item>
+	<item> MCRYPT_DEV_URANDOM </item>
+	<item> MCRYPT_RAND </item>
+	<item> MCRYPT_3DES </item>
+	<item> MCRYPT_ARCFOUR_IV </item>
+	<item> MCRYPT_ARCFOUR </item>
+	<item> MCRYPT_BLOWFISH </item>
+	<item> MCRYPT_BLOWFISH_COMPAT </item>
+	<item> MCRYPT_CAST_128 </item>
+	<item> MCRYPT_CAST_256 </item>
+	<item> MCRYPT_CRYPT </item>
+	<item> MCRYPT_DES </item>
+	<item> MCRYPT_ENIGNA </item>
+	<item> MCRYPT_GOST </item>
+	<item> MCRYPT_LOKI97 </item>
+	<item> MCRYPT_PANAMA </item>
+	<item> MCRYPT_RC2 </item>
+	<item> MCRYPT_RIJNDAEL_128 </item>
+	<item> MCRYPT_RIJNDAEL_192 </item>
+	<item> MCRYPT_RIJNDAEL_256 </item>
+	<item> MCRYPT_SAFER64 </item>
+	<item> MCRYPT_SAFER128 </item>
+	<item> MCRYPT_SAFERPLUS </item>
+	<item> MCRYPT_SERPENT </item>
+	<item> MCRYPT_THREEWAY </item>
+	<item> MCRYPT_TRIPLEDES </item>
+	<item> MCRYPT_TWOFISH </item>
+	<item> MCRYPT_WAKE </item>
+	<item> MCRYPT_XTEA </item>
+	<item> MCRYPT_IDEA </item>
+	<item> MCRYPT_MARS </item>
+	<item> MCRYPT_RC6 </item>
+	<item> MCRYPT_SKIPJACK </item>
+	<item> MCRYPT_MODE_CBC </item>
+	<item> MCRYPT_MODE_CFB </item>
+	<item> MCRYPT_MODE_ECB </item>
+	<item> MCRYPT_MODE_NOFB </item>
+	<item> MCRYPT_MODE_OFB </item>
+	<item> MCRYPT_MODE_STREAM </item>
+	<item> MHASH_CRC32 </item>
+	<item> MHASH_MD5 </item>
+	<item> MHASH_SHA1 </item>
+	<item> MHASH_HAVAL256 </item>
+	<item> MHASH_RIPEMD160 </item>
+	<item> MHASH_TIGER </item>
+	<item> MHASH_GOST </item>
+	<item> MHASH_CRC32B </item>
+	<item> MHASH_HAVAL224 </item>
+	<item> MHASH_HAVAL192 </item>
+	<item> MHASH_HAVAL160 </item>
+	<item> MHASH_HAVAL128 </item>
+	<item> MHASH_TIGER128 </item>
+	<item> MHASH_TIGER160 </item>
+	<item> MHASH_MD4 </item>
+	<item> MHASH_SHA256 </item>
+	<item> MHASH_ADLER32 </item>
+	<item> MHASH_SHA224 </item>
+	<item> MHASH_SHA512 </item>
+	<item> MHASH_SHA384 </item>
+	<item> MHASH_WHIRLPOOL </item>
+	<item> MHASH_RIPEMD128 </item>
+	<item> MHASH_RIPEMD256 </item>
+	<item> MHASH_RIPEMD320 </item>
+	<item> MHASH_SNEFRU128 </item>
+	<item> MHASH_SNEFRU256 </item>
+	<item> MHASH_MD2 </item>
+	<item> MYSQL_ASSOC </item>
+	<item> MYSQL_NUM </item>
+	<item> MYSQL_BOTH </item>
+	<item> MYSQL_CLIENT_COMPRESS </item>
+	<item> MYSQL_CLIENT_SSL </item>
+	<item> MYSQL_CLIENT_INTERACTIVE </item>
+	<item> MYSQL_CLIENT_IGNORE_SPACE </item>
+	<item> MYSQLI_READ_DEFAULT_GROUP </item>
+	<item> MYSQLI_READ_DEFAULT_FILE </item>
+	<item> MYSQLI_OPT_CONNECT_TIMEOUT </item>
+	<item> MYSQLI_OPT_LOCAL_INFILE </item>
+	<item> MYSQLI_INIT_COMMAND </item>
+	<item> MYSQLI_CLIENT_SSL </item>
+	<item> MYSQLI_CLIENT_COMPRESS </item>
+	<item> MYSQLI_CLIENT_INTERACTIVE </item>
+	<item> MYSQLI_CLIENT_IGNORE_SPACE </item>
+	<item> MYSQLI_CLIENT_NO_SCHEMA </item>
+	<item> MYSQLI_CLIENT_FOUND_ROWS </item>
+	<item> MYSQLI_STORE_RESULT </item>
+	<item> MYSQLI_USE_RESULT </item>
+	<item> MYSQLI_ASSOC </item>
+	<item> MYSQLI_NUM </item>
+	<item> MYSQLI_BOTH </item>
+	<item> MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH </item>
+	<item> MYSQLI_NOT_NULL_FLAG </item>
+	<item> MYSQLI_PRI_KEY_FLAG </item>
+	<item> MYSQLI_UNIQUE_KEY_FLAG </item>
+	<item> MYSQLI_MULTIPLE_KEY_FLAG </item>
+	<item> MYSQLI_BLOB_FLAG </item>
+	<item> MYSQLI_UNSIGNED_FLAG </item>
+	<item> MYSQLI_ZEROFILL_FLAG </item>
+	<item> MYSQLI_AUTO_INCREMENT_FLAG </item>
+	<item> MYSQLI_TIMESTAMP_FLAG </item>
+	<item> MYSQLI_SET_FLAG </item>
+	<item> MYSQLI_NUM_FLAG </item>
+	<item> MYSQLI_PART_KEY_FLAG </item>
+	<item> MYSQLI_GROUP_FLAG </item>
+	<item> MYSQLI_TYPE_DECIMAL </item>
+	<item> MYSQLI_TYPE_TINY </item>
+	<item> MYSQLI_TYPE_SHORT </item>
+	<item> MYSQLI_TYPE_LONG </item>
+	<item> MYSQLI_TYPE_FLOAT </item>
+	<item> MYSQLI_TYPE_DOUBLE </item>
+	<item> MYSQLI_TYPE_NULL </item>
+	<item> MYSQLI_TYPE_TIMESTAMP </item>
+	<item> MYSQLI_TYPE_LONGLONG </item>
+	<item> MYSQLI_TYPE_INT24 </item>
+	<item> MYSQLI_TYPE_DATE </item>
+	<item> MYSQLI_TYPE_TIME </item>
+	<item> MYSQLI_TYPE_DATETIME </item>
+	<item> MYSQLI_TYPE_YEAR </item>
+	<item> MYSQLI_TYPE_NEWDATE </item>
+	<item> MYSQLI_TYPE_ENUM </item>
+	<item> MYSQLI_TYPE_SET </item>
+	<item> MYSQLI_TYPE_TINY_BLOB </item>
+	<item> MYSQLI_TYPE_MEDIUM_BLOB </item>
+	<item> MYSQLI_TYPE_LONG_BLOB </item>
+	<item> MYSQLI_TYPE_BLOB </item>
+	<item> MYSQLI_TYPE_VAR_STRING </item>
+	<item> MYSQLI_TYPE_STRING </item>
+	<item> MYSQLI_TYPE_CHAR </item>
+	<item> MYSQLI_TYPE_INTERVAL </item>
+	<item> MYSQLI_TYPE_GEOMETRY </item>
+	<item> MYSQLI_RPL_MASTER </item>
+	<item> MYSQLI_RPL_SLAVE </item>
+	<item> MYSQLI_RPL_ADMIN </item>
+	<item> MYSQLI_NO_DATA </item>
+	<item> MYSQLI_REPORT_INDEX </item>
+	<item> MYSQLI_REPORT_ERROR </item>
+	<item> MYSQLI_REPORT_ALL </item>
+	<item> MYSQLI_REPORT_OFF </item>
+	<item> NCURSES_COLOR_BLACK </item>
+	<item> NCURSES_COLOR_RED </item>
+	<item> NCURSES_COLOR_GREEN </item>
+	<item> NCURSES_COLOR_YELLOW </item>
+	<item> NCURSES_COLOR_BLUE </item>
+	<item> NCURSES_COLOR_MAGENTA </item>
+	<item> NCURSES_COLOR_CYAN </item>
+	<item> NCURSES_COLOR_WHITE </item>
+	<item> NCURSES_KEY_DOWN </item>
+	<item> NCURSES_KEY_UP </item>
+	<item> NCURSES_KEY_LEFT </item>
+	<item> NCURSES_KEY_RIGHT </item>
+	<item> NCURSES_KEY_BACKSPACE </item>
+	<item> NCURSES_KEY_MOUSE </item>
+	<item> NCURSES_KEY_F0 </item>
+	<item> NCURSES_KEY_F1 </item>
+	<item> NCURSES_KEY_F2 </item>
+	<item> NCURSES_KEY_F3 </item>
+	<item> NCURSES_KEY_F4 </item>
+	<item> NCURSES_KEY_F5 </item>
+	<item> NCURSES_KEY_F6 </item>
+	<item> NCURSES_KEY_F7 </item>
+	<item> NCURSES_KEY_F8 </item>
+	<item> NCURSES_KEY_F9 </item>
+	<item> NCURSES_KEY_F10 </item>
+	<item> NCURSES_KEY_F11 </item>
+	<item> NCURSES_KEY_F12 </item>
+	<item> NCURSES_KEY_DL </item>
+	<item> NCURSES_KEY_IL </item>
+	<item> NCURSES_KEY_DC </item>
+	<item> NCURSES_KEY_IC </item>
+	<item> NCURSES_KEY_EIC </item>
+	<item> NCURSES_KEY_CLEAR </item>
+	<item> NCURSES_KEY_EOS </item>
+	<item> NCURSES_KEY_EOL </item>
+	<item> NCURSES_KEY_SF </item>
+	<item> NCURSES_KEY_SR </item>
+	<item> NCURSES_KEY_NPAGE </item>
+	<item> NCURSES_KEY_PPAGE </item>
+	<item> NCURSES_KEY_STAB </item>
+	<item> NCURSES_KEY_CTAB </item>
+	<item> NCURSES_KEY_CATAB </item>
+	<item> NCURSES_KEY_ENTER </item>
+	<item> NCURSES_KEY_SRESET </item>
+	<item> NCURSES_KEY_RESET </item>
+	<item> NCURSES_KEY_PRINT </item>
+	<item> NCURSES_KEY_LL </item>
+	<item> NCURSES_KEY_A1 </item>
+	<item> NCURSES_KEY_A3 </item>
+	<item> NCURSES_KEY_B2 </item>
+	<item> NCURSES_KEY_C1 </item>
+	<item> NCURSES_KEY_C3 </item>
+	<item> NCURSES_KEY_BTAB </item>
+	<item> NCURSES_KEY_BEG </item>
+	<item> NCURSES_KEY_CANCEL </item>
+	<item> NCURSES_KEY_CLOSE </item>
+	<item> NCURSES_KEY_COMMAND </item>
+	<item> NCURSES_KEY_COPY </item>
+	<item> NCURSES_KEY_CREATE </item>
+	<item> NCURSES_KEY_END </item>
+	<item> NCURSES_KEY_EXIT </item>
+	<item> NCURSES_KEY_FIND </item>
+	<item> NCURSES_KEY_HELP </item>
+	<item> NCURSES_KEY_MARK </item>
+	<item> NCURSES_KEY_MESSAGE </item>
+	<item> NCURSES_KEY_MOVE </item>
+	<item> NCURSES_KEY_NEXT </item>
+	<item> NCURSES_KEY_OPEN </item>
+	<item> NCURSES_KEY_OPTIONS </item>
+	<item> NCURSES_KEY_PREVIOUS </item>
+	<item> NCURSES_KEY_REDO </item>
+	<item> NCURSES_KEY_REFERENCE </item>
+	<item> NCURSES_KEY_REFRESH </item>
+	<item> NCURSES_KEY_REPLACE </item>
+	<item> NCURSES_KEY_RESTART </item>
+	<item> NCURSES_KEY_RESUME </item>
+	<item> NCURSES_KEY_SAVE </item>
+	<item> NCURSES_KEY_SBEG </item>
+	<item> NCURSES_KEY_SCANCEL </item>
+	<item> NCURSES_KEY_SCOMMAND </item>
+	<item> NCURSES_KEY_SCOPY </item>
+	<item> NCURSES_KEY_SCREATE </item>
+	<item> NCURSES_KEY_SDC </item>
+	<item> NCURSES_KEY_SDL </item>
+	<item> NCURSES_KEY_SELECT </item>
+	<item> NCURSES_KEY_SEND </item>
+	<item> NCURSES_KEY_SEOL </item>
+	<item> NCURSES_KEY_SEXIT </item>
+	<item> NCURSES_KEY_SFIND </item>
+	<item> NCURSES_KEY_SHELP </item>
+	<item> NCURSES_KEY_SHOME </item>
+	<item> NCURSES_KEY_SIC </item>
+	<item> NCURSES_KEY_SLEFT </item>
+	<item> NCURSES_KEY_SMESSAGE </item>
+	<item> NCURSES_KEY_SMOVE </item>
+	<item> NCURSES_KEY_SNEXT </item>
+	<item> NCURSES_KEY_SOPTIONS </item>
+	<item> NCURSES_KEY_SPREVIOUS </item>
+	<item> NCURSES_KEY_SPRINT </item>
+	<item> NCURSES_KEY_SREDO </item>
+	<item> NCURSES_KEY_SREPLACE </item>
+	<item> NCURSES_KEY_SRIGHT </item>
+	<item> NCURSES_KEY_SRSUME </item>
+	<item> NCURSES_KEY_SSAVE </item>
+	<item> NCURSES_KEY_SSUSPEND </item>
+	<item> NCURSES_KEY_SUNDO </item>
+	<item> NCURSES_KEY_SUSPEND </item>
+	<item> NCURSES_KEY_UNDO </item>
+	<item> NCURSES_KEY_RESIZE </item>
+	<item> NCURSES_A_NORMAL </item>
+	<item> NCURSES_A_STANDOUT </item>
+	<item> NCURSES_A_UNDERLINE </item>
+	<item> NCURSES_A_REVERSE </item>
+	<item> NCURSES_A_BLINK </item>
+	<item> NCURSES_A_DIM </item>
+	<item> NCURSES_A_BOLD </item>
+	<item> NCURSES_A_PROTECT </item>
+	<item> NCURSES_A_INVIS </item>
+	<item> NCURSES_A_ALTCHARSET </item>
+	<item> NCURSES_A_CHARTEXT </item>
+	<item> NCURSES_BUTTON1_PRESSED </item>
+	<item> NCURSES_BUTTON1_RELEASED </item>
+	<item> NCURSES_BUTTON1_CLICKED </item>
+	<item> NCURSES_BUTTON1_DOUBLE_CLICKED </item>
+	<item> NCURSES_BUTTON1_TRIPLE_CLICKED </item>
+	<item> NCURSES_BUTTON2_PRESSED </item>
+	<item> NCURSES_BUTTON2_RELEASED </item>
+	<item> NCURSES_BUTTON2_CLICKED </item>
+	<item> NCURSES_BUTTON2_DOUBLE_CLICKED </item>
+	<item> NCURSES_BUTTON2_TRIPLE_CLICKED </item>
+	<item> NCURSES_BUTTON3_PRESSED </item>
+	<item> NCURSES_BUTTON3_RELEASED </item>
+	<item> NCURSES_BUTTON3_CLICKED </item>
+	<item> NCURSES_BUTTON3_DOUBLE_CLICKED </item>
+	<item> NCURSES_BUTTON3_TRIPLE_CLICKED </item>
+	<item> NCURSES_BUTTON4_PRESSED </item>
+	<item> NCURSES_BUTTON4_RELEASED </item>
+	<item> NCURSES_BUTTON4_CLICKED </item>
+	<item> NCURSES_BUTTON4_DOUBLE_CLICKED </item>
+	<item> NCURSES_BUTTON4_TRIPLE_CLICKED </item>
+	<item> NCURSES_BUTTON_SHIFT </item>
+	<item> NCURSES_BUTTON_CTRL </item>
+	<item> NCURSES_BUTTON_ALT </item>
+	<item> NCURSES_ALL_MOUSE_EVENTS </item>
+	<item> NCURSES_REPORT_MOUSE_POSITION </item>
+	<item> ODBC_TYPE </item>
+	<item> ODBC_BINMODE_PASSTHRU </item>
+	<item> ODBC_BINMODE_RETURN </item>
+	<item> ODBC_BINMODE_CONVERT </item>
+	<item> SQL_ODBC_CURSORS </item>
+	<item> SQL_CUR_USE_DRIVER </item>
+	<item> SQL_CUR_USE_IF_NEEDED </item>
+	<item> SQL_CUR_USE_ODBC </item>
+	<item> SQL_CONCURRENCY </item>
+	<item> SQL_CONCUR_READ_ONLY </item>
+	<item> SQL_CONCUR_LOCK </item>
+	<item> SQL_CONCUR_ROWVER </item>
+	<item> SQL_CONCUR_VALUES </item>
+	<item> SQL_CURSOR_TYPE </item>
+	<item> SQL_CURSOR_FORWARD_ONLY </item>
+	<item> SQL_CURSOR_KEYSET_DRIVEN </item>
+	<item> SQL_CURSOR_DYNAMIC </item>
+	<item> SQL_CURSOR_STATIC </item>
+	<item> SQL_KEYSET_SIZE </item>
+	<item> SQL_FETCH_FIRST </item>
+	<item> SQL_FETCH_NEXT </item>
+	<item> SQL_CHAR </item>
+	<item> SQL_VARCHAR </item>
+	<item> SQL_LONGVARCHAR </item>
+	<item> SQL_DECIMAL </item>
+	<item> SQL_NUMERIC </item>
+	<item> SQL_BIT </item>
+	<item> SQL_TINYINT </item>
+	<item> SQL_SMALLINT </item>
+	<item> SQL_INTEGER </item>
+	<item> SQL_BIGINT </item>
+	<item> SQL_REAL </item>
+	<item> SQL_FLOAT </item>
+	<item> SQL_DOUBLE </item>
+	<item> SQL_BINARY </item>
+	<item> SQL_VARBINARY </item>
+	<item> SQL_LONGVARBINARY </item>
+	<item> SQL_DATE </item>
+	<item> SQL_TIME </item>
+	<item> SQL_TIMESTAMP </item>
+	<item> X509_PURPOSE_SSL_CLIENT </item>
+	<item> X509_PURPOSE_SSL_SERVER </item>
+	<item> X509_PURPOSE_NS_SSL_SERVER </item>
+	<item> X509_PURPOSE_SMIME_SIGN </item>
+	<item> X509_PURPOSE_SMIME_ENCRYPT </item>
+	<item> X509_PURPOSE_CRL_SIGN </item>
+	<item> X509_PURPOSE_ANY </item>
+	<item> OPENSSL_ALGO_SHA1 </item>
+	<item> OPENSSL_ALGO_MD5 </item>
+	<item> OPENSSL_ALGO_MD4 </item>
+	<item> OPENSSL_ALGO_MD2 </item>
+	<item> PKCS7_DETACHED </item>
+	<item> PKCS7_TEXT </item>
+	<item> PKCS7_NOINTERN </item>
+	<item> PKCS7_NOVERIFY </item>
+	<item> PKCS7_NOCHAIN </item>
+	<item> PKCS7_NOCERTS </item>
+	<item> PKCS7_NOATTR </item>
+	<item> PKCS7_BINARY </item>
+	<item> PKCS7_NOSIGS </item>
+	<item> OPENSSL_PKCS1_PADDING </item>
+	<item> OPENSSL_SSLV23_PADDING </item>
+	<item> OPENSSL_NO_PADDING </item>
+	<item> OPENSSL_PKCS1_OAEP_PADDING </item>
+	<item> OPENSSL_CIPHER_RC2_40 </item>
+	<item> OPENSSL_CIPHER_RC2_128 </item>
+	<item> OPENSSL_CIPHER_RC2_64 </item>
+	<item> OPENSSL_CIPHER_DES </item>
+	<item> OPENSSL_CIPHER_3DES </item>
+	<item> OPENSSL_KEYTYPE_RSA </item>
+	<item> OPENSSL_KEYTYPE_DSA </item>
+	<item> OPENSSL_KEYTYPE_DH </item>
+	<item> WNOHANG </item>
+	<item> WUNTRACED </item>
+	<item> SIG_IGN </item>
+	<item> SIG_DFL </item>
+	<item> SIG_ERR </item>
+	<item> SIGHUP </item>
+	<item> SIGINT </item>
+	<item> SIGQUIT </item>
+	<item> SIGILL </item>
+	<item> SIGTRAP </item>
+	<item> SIGABRT </item>
+	<item> SIGIOT </item>
+	<item> SIGBUS </item>
+	<item> SIGFPE </item>
+	<item> SIGKILL </item>
+	<item> SIGUSR1 </item>
+	<item> SIGSEGV </item>
+	<item> SIGUSR2 </item>
+	<item> SIGPIPE </item>
+	<item> SIGALRM </item>
+	<item> SIGTERM </item>
+	<item> SIGSTKFLT </item>
+	<item> SIGCLD </item>
+	<item> SIGCHLD </item>
+	<item> SIGCONT </item>
+	<item> SIGSTOP </item>
+	<item> SIGTSTP </item>
+	<item> SIGTTIN </item>
+	<item> SIGTTOU </item>
+	<item> SIGURG </item>
+	<item> SIGXCPU </item>
+	<item> SIGXFSZ </item>
+	<item> SIGVTALRM </item>
+	<item> SIGPROF </item>
+	<item> SIGWINCH </item>
+	<item> SIGPOLL </item>
+	<item> SIGIO </item>
+	<item> SIGPWR </item>
+	<item> SIGSYS </item>
+	<item> SIGBABY </item>
+	<item> PRIO_PGRP </item>
+	<item> PRIO_USER </item>
+	<item> PRIO_PROCESS </item>
+	<item> PGSQL_CONNECT_FORCE_NEW </item>
+	<item> PGSQL_ASSOC </item>
+	<item> PGSQL_NUM </item>
+	<item> PGSQL_BOTH </item>
+	<item> PGSQL_CONNECTION_BAD </item>
+	<item> PGSQL_CONNECTION_OK </item>
+	<item> PGSQL_SEEK_SET </item>
+	<item> PGSQL_SEEK_CUR </item>
+	<item> PGSQL_SEEK_END </item>
+	<item> PGSQL_STATUS_LONG </item>
+	<item> PGSQL_STATUS_STRING </item>
+	<item> PGSQL_EMPTY_QUERY </item>
+	<item> PGSQL_COMMAND_OK </item>
+	<item> PGSQL_TUPLES_OK </item>
+	<item> PGSQL_COPY_OUT </item>
+	<item> PGSQL_COPY_IN </item>
+	<item> PGSQL_BAD_RESPONSE </item>
+	<item> PGSQL_NONFATAL_ERROR </item>
+	<item> PGSQL_FATAL_ERROR </item>
+	<item> PGSQL_CONV_IGNORE_DEFAULT </item>
+	<item> PGSQL_CONV_FORCE_NULL </item>
+	<item> PGSQL_CONV_IGNORE_NOT_NULL </item>
+	<item> PGSQL_DML_NO_CONV </item>
+	<item> PGSQL_DML_EXEC </item>
+	<item> PGSQL_DML_ASYNC </item>
+	<item> PGSQL_DML_STRING </item>
+	<item> SNMP_VALUE_LIBRARY </item>
+	<item> SNMP_VALUE_PLAIN </item>
+	<item> SNMP_VALUE_OBJECT </item>
+	<item> SNMP_BIT_STR </item>
+	<item> SNMP_OCTET_STR </item>
+	<item> SNMP_OPAQUE </item>
+	<item> SNMP_NULL </item>
+	<item> SNMP_OBJECT_ID </item>
+	<item> SNMP_IPADDRESS </item>
+	<item> SNMP_COUNTER </item>
+	<item> SNMP_UNSIGNED </item>
+	<item> SNMP_TIMETICKS </item>
+	<item> SNMP_UINTEGER </item>
+	<item> SNMP_INTEGER </item>
+	<item> SNMP_COUNTER64 </item>
+	<item> SOAP_1_1 </item>
+	<item> SOAP_1_2 </item>
+	<item> SOAP_PERSISTENCE_SESSION </item>
+	<item> SOAP_PERSISTENCE_REQUEST </item>
+	<item> SOAP_FUNCTIONS_ALL </item>
+	<item> SOAP_ENCODED </item>
+	<item> SOAP_LITERAL </item>
+	<item> SOAP_RPC </item>
+	<item> SOAP_DOCUMENT </item>
+	<item> SOAP_ACTOR_NEXT </item>
+	<item> SOAP_ACTOR_NONE </item>
+	<item> SOAP_ACTOR_UNLIMATERECEIVER </item>
+	<item> SOAP_COMPRESSION_ACCEPT </item>
+	<item> SOAP_COMPRESSION_GZIP </item>
+	<item> SOAP_COMPRESSION_DEFLATE </item>
+	<item> UNKNOWN_TYPE </item>
+	<item> XSD_STRING </item>
+	<item> XSD_BOOLEAN </item>
+	<item> XSD_DECIMAL </item>
+	<item> XSD_FLOAT </item>
+	<item> XSD_DOUBLE </item>
+	<item> XSD_DURATION </item>
+	<item> XSD_DATETIME </item>
+	<item> XSD_TIME </item>
+	<item> XSD_DATE </item>
+	<item> XSD_GYEARMONTH </item>
+	<item> XSD_GYEAR </item>
+	<item> XSD_GMONTHDAY </item>
+	<item> XSD_GDAY </item>
+	<item> XSD_GMONTH </item>
+	<item> XSD_HEXBINARY </item>
+	<item> XSD_BASE64BINARY </item>
+	<item> XSD_ANYURI </item>
+	<item> XSD_QNAME </item>
+	<item> XSD_NOTATION </item>
+	<item> XSD_NORMALIZEDSTRING </item>
+	<item> XSD_TOKEN </item>
+	<item> XSD_LANGUAGE </item>
+	<item> XSD_NMTOKEN </item>
+	<item> XSD_NAME </item>
+	<item> XSD_NCNAME </item>
+	<item> XSD_ID </item>
+	<item> XSD_IDREF </item>
+	<item> XSD_IDREFS </item>
+	<item> XSD_ENTITY </item>
+	<item> XSD_ENTITIES </item>
+	<item> XSD_INTEGER </item>
+	<item> XSD_NONPOSITIVEINTEGER </item>
+	<item> XSD_NEGATIVEINTEGER </item>
+	<item> XSD_LONG </item>
+	<item> XSD_INT </item>
+	<item> XSD_SHORT </item>
+	<item> XSD_BYTE </item>
+	<item> XSD_NONNEGATIVEINTEGER </item>
+	<item> XSD_UNSIGNEDLONG </item>
+	<item> XSD_UNSIGNEDINT </item>
+	<item> XSD_UNSIGNEDSHORT </item>
+	<item> XSD_UNSIGNEDBYTE </item>
+	<item> XSD_POSITIVEINTEGER </item>
+	<item> XSD_NMTOKENS </item>
+	<item> XSD_ANYTYPE </item>
+	<item> SOAP_ENC_OBJECT </item>
+	<item> SOAP_ENC_ARRAY </item>
+	<item> XSD_1999_TIMEINSTANT </item>
+	<item> XSD_NAMESPACE </item>
+	<item> XSD_1999_NAMESPACE </item>
+	<item> AF_UNIX </item>
+	<item> AF_INET </item>
+	<item> AF_INET6 </item>
+	<item> SOCK_STREAM </item>
+	<item> SOCK_DGRAM </item>
+	<item> SOCK_RAW </item>
+	<item> SOCK_SEQPACKET </item>
+	<item> SOCK_RDM </item>
+	<item> MSG_OOB </item>
+	<item> MSG_WAITALL </item>
+	<item> MSG_PEEK </item>
+	<item> MSG_DONTROUTE </item>
+	<item> SO_DEBUG </item>
+	<item> SO_REUSEADDR </item>
+	<item> SO_KEEPALIVE </item>
+	<item> SO_DONTROUTE </item>
+	<item> SO_LINGER </item>
+	<item> SO_BROADCAST </item>
+	<item> SO_OOBINLINE </item>
+	<item> SO_SNDBUF </item>
+	<item> SO_RCVBUF </item>
+	<item> SO_SNDLOWAT </item>
+	<item> SO_RCVLOWAT </item>
+	<item> SO_SNDTIMEO </item>
+	<item> SO_RCVTIMEO </item>
+	<item> SO_TYPE </item>
+	<item> SO_ERROR </item>
+	<item> SOL_SOCKET </item>
+	<item> SOMAXCONN </item>
+	<item> PHP_NORMAL_READ </item>
+	<item> PHP_BINARY_READ </item>
+	<item> SOCKET_EPERM </item>
+	<item> SOCKET_ENOENT </item>
+	<item> SOCKET_EINTR </item>
+	<item> SOCKET_EIO </item>
+	<item> SOCKET_ENXIO </item>
+	<item> SOCKET_E2BIG </item>
+	<item> SOCKET_EBADF </item>
+	<item> SOCKET_EAGAIN </item>
+	<item> SOCKET_ENOMEM </item>
+	<item> SOCKET_EACCES </item>
+	<item> SOCKET_EFAULT </item>
+	<item> SOCKET_ENOTBLK </item>
+	<item> SOCKET_EBUSY </item>
+	<item> SOCKET_EEXIST </item>
+	<item> SOCKET_EXDEV </item>
+	<item> SOCKET_ENODEV </item>
+	<item> SOCKET_ENOTDIR </item>
+	<item> SOCKET_EISDIR </item>
+	<item> SOCKET_EINVAL </item>
+	<item> SOCKET_ENFILE </item>
+	<item> SOCKET_EMFILE </item>
+	<item> SOCKET_ENOTTY </item>
+	<item> SOCKET_ENOSPC </item>
+	<item> SOCKET_ESPIPE </item>
+	<item> SOCKET_EROFS </item>
+	<item> SOCKET_EMLINK </item>
+	<item> SOCKET_EPIPE </item>
+	<item> SOCKET_ENAMETOOLONG </item>
+	<item> SOCKET_ENOLCK </item>
+	<item> SOCKET_ENOSYS </item>
+	<item> SOCKET_ENOTEMPTY </item>
+	<item> SOCKET_ELOOP </item>
+	<item> SOCKET_EWOULDBLOCK </item>
+	<item> SOCKET_ENOMSG </item>
+	<item> SOCKET_EIDRM </item>
+	<item> SOCKET_ECHRNG </item>
+	<item> SOCKET_EL2NSYNC </item>
+	<item> SOCKET_EL3HLT </item>
+	<item> SOCKET_EL3RST </item>
+	<item> SOCKET_ELNRNG </item>
+	<item> SOCKET_EUNATCH </item>
+	<item> SOCKET_ENOCSI </item>
+	<item> SOCKET_EL2HLT </item>
+	<item> SOCKET_EBADE </item>
+	<item> SOCKET_EBADR </item>
+	<item> SOCKET_EXFULL </item>
+	<item> SOCKET_ENOANO </item>
+	<item> SOCKET_EBADRQC </item>
+	<item> SOCKET_EBADSLT </item>
+	<item> SOCKET_ENOSTR </item>
+	<item> SOCKET_ENODATA </item>
+	<item> SOCKET_ETIME </item>
+	<item> SOCKET_ENOSR </item>
+	<item> SOCKET_ENONET </item>
+	<item> SOCKET_EREMOTE </item>
+	<item> SOCKET_ENOLINK </item>
+	<item> SOCKET_EADV </item>
+	<item> SOCKET_ESRMNT </item>
+	<item> SOCKET_ECOMM </item>
+	<item> SOCKET_EPROTO </item>
+	<item> SOCKET_EMULTIHOP </item>
+	<item> SOCKET_EBADMSG </item>
+	<item> SOCKET_ENOTUNIQ </item>
+	<item> SOCKET_EBADFD </item>
+	<item> SOCKET_EREMCHG </item>
+	<item> SOCKET_ERESTART </item>
+	<item> SOCKET_ESTRPIPE </item>
+	<item> SOCKET_EUSERS </item>
+	<item> SOCKET_ENOTSOCK </item>
+	<item> SOCKET_EDESTADDRREQ </item>
+	<item> SOCKET_EMSGSIZE </item>
+	<item> SOCKET_EPROTOTYPE </item>
+	<item> SOCKET_ENOPROTOOPT </item>
+	<item> SOCKET_EPROTONOSUPPORT </item>
+	<item> SOCKET_ESOCKTNOSUPPORT </item>
+	<item> SOCKET_EOPNOTSUPP </item>
+	<item> SOCKET_EPFNOSUPPORT </item>
+	<item> SOCKET_EAFNOSUPPORT </item>
+	<item> SOCKET_EADDRINUSE </item>
+	<item> SOCKET_EADDRNOTAVAIL </item>
+	<item> SOCKET_ENETDOWN </item>
+	<item> SOCKET_ENETUNREACH </item>
+	<item> SOCKET_ENETRESET </item>
+	<item> SOCKET_ECONNABORTED </item>
+	<item> SOCKET_ECONNRESET </item>
+	<item> SOCKET_ENOBUFS </item>
+	<item> SOCKET_EISCONN </item>
+	<item> SOCKET_ENOTCONN </item>
+	<item> SOCKET_ESHUTDOWN </item>
+	<item> SOCKET_ETOOMANYREFS </item>
+	<item> SOCKET_ETIMEDOUT </item>
+	<item> SOCKET_ECONNREFUSED </item>
+	<item> SOCKET_EHOSTDOWN </item>
+	<item> SOCKET_EHOSTUNREACH </item>
+	<item> SOCKET_EALREADY </item>
+	<item> SOCKET_EINPROGRESS </item>
+	<item> SOCKET_EISNAM </item>
+	<item> SOCKET_EREMOTEIO </item>
+	<item> SOCKET_EDQUOT </item>
+	<item> SOCKET_ENOMEDIUM </item>
+	<item> SOCKET_EMEDIUMTYPE </item>
+	<item> SOL_TCP </item>
+	<item> SOL_UDP </item>
+	<item> SQLITE_BOTH </item>
+	<item> SQLITE_NUM </item>
+	<item> SQLITE_ASSOC </item>
+	<item> SQLITE_OK </item>
+	<item> SQLITE_ERROR </item>
+	<item> SQLITE_INTERNAL </item>
+	<item> SQLITE_PERM </item>
+	<item> SQLITE_ABORT </item>
+	<item> SQLITE_BUSY </item>
+	<item> SQLITE_LOCKED </item>
+	<item> SQLITE_NOMEM </item>
+	<item> SQLITE_READONLY </item>
+	<item> SQLITE_INTERRUPT </item>
+	<item> SQLITE_IOERR </item>
+	<item> SQLITE_CORRUPT </item>
+	<item> SQLITE_NOTFOUND </item>
+	<item> SQLITE_FULL </item>
+	<item> SQLITE_CANTOPEN </item>
+	<item> SQLITE_PROTOCOL </item>
+	<item> SQLITE_EMPTY </item>
+	<item> SQLITE_SCHEMA </item>
+	<item> SQLITE_TOOBIG </item>
+	<item> SQLITE_CONSTRAINT </item>
+	<item> SQLITE_MISMATCH </item>
+	<item> SQLITE_MISUSE </item>
+	<item> SQLITE_NOLFS </item>
+	<item> SQLITE_AUTH </item>
+	<item> SQLITE_FORMAT </item>
+	<item> SQLITE_ROW </item>
+	<item> SQLITE_DONE </item>
+	<item> MSG_IPC_NOWAIT </item>
+	<item> MSG_NOERROR </item>
+	<item> MSG_EXCEPT </item>
+	<item> T_INCLUDE </item>
+	<item> T_INCLUDE_ONCE </item>
+	<item> T_EVAL </item>
+	<item> T_REQUIRE </item>
+	<item> T_REQUIRE_ONCE </item>
+	<item> T_LOGICAL_OR </item>
+	<item> T_LOGICAL_XOR </item>
+	<item> T_LOGICAL_AND </item>
+	<item> T_PRINT </item>
+	<item> T_PLUS_EQUAL </item>
+	<item> T_MINUS_EQUAL </item>
+	<item> T_MUL_EQUAL </item>
+	<item> T_DIV_EQUAL </item>
+	<item> T_CONCAT_EQUAL </item>
+	<item> T_MOD_EQUAL </item>
+	<item> T_AND_EQUAL </item>
+	<item> T_OR_EQUAL </item>
+	<item> T_XOR_EQUAL </item>
+	<item> T_SL_EQUAL </item>
+	<item> T_SR_EQUAL </item>
+	<item> T_BOOLEAN_OR </item>
+	<item> T_BOOLEAN_AND </item>
+	<item> T_IS_EQUAL </item>
+	<item> T_IS_NOT_EQUAL </item>
+	<item> T_IS_IDENTICAL </item>
+	<item> T_IS_NOT_IDENTICAL </item>
+	<item> T_IS_SMALLER_OR_EQUAL </item>
+	<item> T_IS_GREATER_OR_EQUAL </item>
+	<item> T_SL </item>
+	<item> T_SR </item>
+	<item> T_INC </item>
+	<item> T_DEC </item>
+	<item> T_INT_CAST </item>
+	<item> T_DOUBLE_CAST </item>
+	<item> T_STRING_CAST </item>
+	<item> T_ARRAY_CAST </item>
+	<item> T_OBJECT_CAST </item>
+	<item> T_BOOL_CAST </item>
+	<item> T_UNSET_CAST </item>
+	<item> T_NEW </item>
+	<item> T_EXIT </item>
+	<item> T_IF </item>
+	<item> T_ELSEIF </item>
+	<item> T_ELSE </item>
+	<item> T_ENDIF </item>
+	<item> T_LNUMBER </item>
+	<item> T_DNUMBER </item>
+	<item> T_STRING </item>
+	<item> T_STRING_VARNAME </item>
+	<item> T_VARIABLE </item>
+	<item> T_NUM_STRING </item>
+	<item> T_INLINE_HTML </item>
+	<item> T_CHARACTER </item>
+	<item> T_BAD_CHARACTER </item>
+	<item> T_ENCAPSED_AND_WHITESPACE </item>
+	<item> T_CONSTANT_ENCAPSED_STRING </item>
+	<item> T_ECHO </item>
+	<item> T_DO </item>
+	<item> T_WHILE </item>
+	<item> T_ENDWHILE </item>
+	<item> T_FOR </item>
+	<item> T_ENDFOR </item>
+	<item> T_FOREACH </item>
+	<item> T_ENDFOREACH </item>
+	<item> T_DECLARE </item>
+	<item> T_ENDDECLARE </item>
+	<item> T_AS </item>
+	<item> T_SWITCH </item>
+	<item> T_ENDSWITCH </item>
+	<item> T_CASE </item>
+	<item> T_DEFAULT </item>
+	<item> T_BREAK </item>
+	<item> T_CONTINUE </item>
+	<item> T_FUNCTION </item>
+	<item> T_CONST </item>
+	<item> T_RETURN </item>
+	<item> T_USE </item>
+	<item> T_GLOBAL </item>
+	<item> T_STATIC </item>
+	<item> T_VAR </item>
+	<item> T_UNSET </item>
+	<item> T_ISSET </item>
+	<item> T_EMPTY </item>
+	<item> T_CLASS </item>
+	<item> T_EXTENDS </item>
+	<item> T_INTERFACE </item>
+	<item> T_IMPLEMENTS </item>
+	<item> T_OBJECT_OPERATOR </item>
+	<item> T_DOUBLE_ARROW </item>
+	<item> T_LIST </item>
+	<item> T_ARRAY </item>
+	<item> T_CLASS_C </item>
+	<item> T_FUNC_C </item>
+	<item> T_METHOD_C </item>
+	<item> T_LINE </item>
+	<item> T_FILE </item>
+	<item> T_COMMENT </item>
+	<item> T_DOC_COMMENT </item>
+	<item> T_OPEN_TAG </item>
+	<item> T_OPEN_TAG_WITH_ECHO </item>
+	<item> T_CLOSE_TAG </item>
+	<item> T_WHITESPACE </item>
+	<item> T_START_HEREDOC </item>
+	<item> T_END_HEREDOC </item>
+	<item> T_DOLLAR_OPEN_CURLY_BRACES </item>
+	<item> T_CURLY_OPEN </item>
+	<item> T_PAAMAYIM_NEKUDOTAYIM </item>
+	<item> T_DOUBLE_COLON </item>
+	<item> T_ABSTRACT </item>
+	<item> T_CATCH </item>
+	<item> T_FINAL </item>
+	<item> T_INSTANCEOF </item>
+	<item> T_PRIVATE </item>
+	<item> T_PROTECTED </item>
+	<item> T_PUBLIC </item>
+	<item> T_THROW </item>
+	<item> T_TRY </item>
+	<item> T_CLONE </item>
+	<item> XSL_CLONE_AUTO </item>
+	<item> XSL_CLONE_NEVER </item>
+	<item> XSL_CLONE_ALWAYS </item>
+	<item> YPERR_BADARGS </item>
+	<item> YPERR_BADDB </item>
+	<item> YPERR_BUSY </item>
+	<item> YPERR_DOMAIN </item>
+	<item> YPERR_KEY </item>
+	<item> YPERR_MAP </item>
+	<item> YPERR_NODOM </item>
+	<item> YPERR_NOMORE </item>
+	<item> YPERR_PMAP </item>
+	<item> YPERR_RESRC </item>
+	<item> YPERR_RPC </item>
+	<item> YPERR_YPBIND </item>
+	<item> YPERR_YPERR </item>
+	<item> YPERR_YPSERV </item>
+	<item> YPERR_VERS </item>
+	<item> FORCE_GZIP </item>
+	<item> FORCE_DEFLATE </item>
+
+
+    </list>
+
+    <list name="special_methods">
+	<item> __autoload </item>
+	<item> __call </item>
+	<item> __clone </item>
+	<item> __construct </item>
+	<item> __destruct </item>
+	<item> __get </item>
+	<item> __isset </item>
+	<item> __set </item>
+	<item> __set_state </item>
+	<item> __sleep </item>
+	<item> __toString </item>
+	<item> __unset </item>
+	<item> __wakeup </item> 
+    </list>
+
+    <list name="functions">
+	    <item> abs </item>
+	    <item> acos </item>
+	    <item> acosh </item>
+	    <item> addcslashes </item>
+	    <item> addslashes </item>
+	    <item> apache_get_modules </item>
+	    <item> apache_get_version </item>
+	    <item> apache_getenv </item>
+	    <item> apache_lookup_uri </item>
+	    <item> apache_note </item>
+	    <item> apache_request_headers </item>
+	    <item> apache_response_headers </item>
+	    <item> apache_setenv </item>
+	    <item> array </item>
+	    <item> array_change_key_case </item>
+	    <item> array_chunk </item>
+	    <item> array_combine </item>
+	    <item> array_count_values </item>
+	    <item> array_diff </item>
+	    <item> array_diff_assoc </item>
+	    <item> array_diff_key </item>
+	    <item> array_diff_uassoc </item>
+	    <item> array_diff_ukey </item>
+	    <item> array_diff </item>
+	    <item> array_fill </item>
+	    <item> array_filter </item>
+	    <item> array_flip </item>
+	    <item> array_intersect </item>
+	    <item> array_intersect_assoc </item>
+	    <item> array_intersect_key </item>
+	    <item> array_intersect_uassoc </item>
+	    <item> array_intersect_ukey </item>
+	    <item> array_intersect </item>
+	    <item> array_key_exists </item>
+	    <item> array_keys </item>
+	    <item> array_map </item>
+	    <item> array_merge </item>
+	    <item> array_merge_recursive </item>
+	    <item> array_multisort </item>
+	    <item> array_pad </item>
+	    <item> array_pop </item>
+	    <item> array_product </item>
+	    <item> array_push </item>
+	    <item> array_rand </item>
+	    <item> array_reduce </item>
+	    <item> array_reverse </item>
+	    <item> array_search </item>
+	    <item> array_shift </item>
+	    <item> array_slice </item>
+	    <item> array_splice </item>
+	    <item> array_sum </item>
+	    <item> array_udiff </item>
+	    <item> array_udiff_assoc </item>
+	    <item> array_udiff_uassoc </item>
+	    <item> array_uintersect </item>
+	    <item> array_uintersect_assoc </item>
+	    <item> array_uintersect_uassoc </item>
+	    <item> array_uintersect </item>
+	    <item> array_unique </item>
+	    <item> array_unshift </item>
+	    <item> array_values </item>
+	    <item> array_walk </item>
+	    <item> array_walk_recursive </item>
+	    <item> arsort </item>
+	    <item> ascii2ebcdic </item>
+	    <item> asin </item>
+	    <item> asinh </item>
+	    <item> asort </item>
+	    <item> aspell_check </item>
+	    <item> aspell_check_raw </item>
+	    <item> aspell_new </item>
+	    <item> aspell_suggest </item>
+	    <item> assert </item>
+	    <item> assert_options </item>
+	    <item> atan </item>
+	    <item> atan2 </item>
+	    <item> atanh </item>
+	    <item> base64_decode </item>
+	    <item> base64_encode </item>
+	    <item> base_convert </item>
+	    <item> basename </item>
+	    <item> bcadd </item>
+	    <item> bccomp </item>
+	    <item> bcdiv </item>
+	    <item> bcmod </item>
+	    <item> bcmul </item>
+	    <item> bcpow </item>
+	    <item> bcpowmod </item>
+	    <item> bcscale </item>
+	    <item> bcsqrt </item>
+	    <item> bcsub </item>
+	    <item> bin2hex </item>
+	    <item> bind_textdomain_codeset </item>
+	    <item> bindec </item>
+	    <item> bindtextdomain </item>
+	    <item> bzclose </item>
+	    <item> bzcompress </item>
+	    <item> bzdecompress </item>
+	    <item> bzerrno </item>
+	    <item> bzerror </item>
+	    <item> bzerrstr </item>
+	    <item> bzflush </item>
+	    <item> bzopen </item>
+	    <item> bzread </item>
+	    <item> bzwrite </item>
+	    <item> cal_days_in_month </item>
+	    <item> cal_from_jd </item>
+	    <item> cal_info </item>
+	    <item> cal_to_jd </item>
+	    <item> call_user_func </item>
+	    <item> call_user_func_array </item>
+	    <item> call_user_method </item>
+	    <item> call_user_method_array </item>
+	    <item> ccvs_add </item>
+	    <item> ccvs_auth </item>
+	    <item> ccvs_command </item>
+	    <item> ccvs_count </item>
+	    <item> ccvs_delete </item>
+	    <item> ccvs_done </item>
+	    <item> ccvs_init </item>
+	    <item> ccvs_lookup </item>
+	    <item> ccvs_new </item>
+	    <item> ccvs_report </item>
+	    <item> ccvs_return </item>
+	    <item> ccvs_reverse </item>
+	    <item> ccvs_sale </item>
+	    <item> ccvs_status </item>
+	    <item> ccvs_textvalue </item>
+	    <item> ccvs_void </item>
+	    <item> ceil </item>
+	    <item> chdir </item>
+	    <item> checkdate </item>
+	    <item> checkdnsrr </item>
+	    <item> chgrp </item>
+	    <item> chmod </item>
+	    <item> chop </item>
+	    <item> chown </item>
+	    <item> chr </item>
+	    <item> chroot </item>
+	    <item> chunk_split </item>
+	    <item> class_exists </item>
+	    <item> class_implements </item>
+	    <item> class_parents </item>
+	    <item> clearstatcache </item>
+	    <item> closedir </item>
+	    <item> closelog </item>
+	    <item> com </item>
+	    <item> com_addref </item>
+	    <item> com_get </item>
+	    <item> com_invoke </item>
+	    <item> com_isenum </item>
+	    <item> com_load </item>
+	    <item> com_load_typelib </item>
+	    <item> com_propget </item>
+	    <item> com_propput </item>
+	    <item> com_propset </item>
+	    <item> com_release </item>
+	    <item> com_set </item>
+	    <item> compact </item>
+	    <item> connection_aborted </item>
+	    <item> connection_status </item>
+	    <item> connection_timeout </item>
+	    <item> constant </item>
+	    <item> convert_cyr_string </item>
+	    <item> convert_uudecode </item>
+	    <item> convert_uuencode </item>
+	    <item> copy </item>
+	    <item> cos </item>
+	    <item> cosh </item>
+	    <item> count </item>
+	    <item> count_chars </item>
+	    <item> cpdf_add_annotation </item>
+	    <item> cpdf_add_outline </item>
+	    <item> cpdf_arc </item>
+	    <item> cpdf_begin_text </item>
+	    <item> cpdf_circle </item>
+	    <item> cpdf_clip </item>
+	    <item> cpdf_close </item>
+	    <item> cpdf_closepath </item>
+	    <item> cpdf_closepath_fill_stroke </item>
+	    <item> cpdf_closepath_stroke </item>
+	    <item> cpdf_continue_text </item>
+	    <item> cpdf_curveto </item>
+	    <item> cpdf_end_text </item>
+	    <item> cpdf_fill </item>
+	    <item> cpdf_fill_stroke </item>
+	    <item> cpdf_finalize </item>
+	    <item> cpdf_finalize_page </item>
+	    <item> cpdf_global_set_document_limits </item>
+	    <item> cpdf_import_jpeg </item>
+	    <item> cpdf_lineto </item>
+	    <item> cpdf_moveto </item>
+	    <item> cpdf_newpath </item>
+	    <item> cpdf_open </item>
+	    <item> cpdf_output_buffer </item>
+	    <item> cpdf_page_init </item>
+	    <item> cpdf_place_inline_image </item>
+	    <item> cpdf_rect </item>
+	    <item> cpdf_restore </item>
+	    <item> cpdf_rlineto </item>
+	    <item> cpdf_rmoveto </item>
+	    <item> cpdf_rotate </item>
+	    <item> cpdf_rotate_text </item>
+	    <item> cpdf_save </item>
+	    <item> cpdf_save_to_file </item>
+	    <item> cpdf_scale </item>
+	    <item> cpdf_set_action_url </item>
+	    <item> cpdf_set_char_spacing </item>
+	    <item> cpdf_set_creator </item>
+	    <item> cpdf_set_current_page </item>
+	    <item> cpdf_set_font </item>
+	    <item> cpdf_set_font_directories </item>
+	    <item> cpdf_set_font_map_file </item>
+	    <item> cpdf_set_horiz_scaling </item>
+	    <item> cpdf_set_keywords </item>
+	    <item> cpdf_set_leading </item>
+	    <item> cpdf_set_page_animation </item>
+	    <item> cpdf_set_subject </item>
+	    <item> cpdf_set_text_matrix </item>
+	    <item> cpdf_set_text_pos </item>
+	    <item> cpdf_set_text_rendering </item>
+	    <item> cpdf_set_text_rise </item>
+	    <item> cpdf_set_title </item>
+	    <item> cpdf_set_viewer_preferences </item>
+	    <item> cpdf_set_word_spacing </item>
+	    <item> cpdf_setdash </item>
+	    <item> cpdf_setflat </item>
+	    <item> cpdf_setgray </item>
+	    <item> cpdf_setgray_fill </item>
+	    <item> cpdf_setgray_stroke </item>
+	    <item> cpdf_setlinecap </item>
+	    <item> cpdf_setlinejoin </item>
+	    <item> cpdf_setlinewidth </item>
+	    <item> cpdf_setmiterlimit </item>
+	    <item> cpdf_setrgbcolor </item>
+	    <item> cpdf_setrgbcolor_fill </item>
+	    <item> cpdf_setrgbcolor_stroke </item>
+	    <item> cpdf_show </item>
+	    <item> cpdf_show_xy </item>
+	    <item> cpdf_stringwidth </item>
+	    <item> cpdf_stroke </item>
+	    <item> cpdf_text </item>
+	    <item> cpdf_translate </item>
+	    <item> crack_check </item>
+	    <item> crack_closedict </item>
+	    <item> crack_getlastmessage </item>
+	    <item> crack_opendict </item>
+	    <item> crc32 </item>
+	    <item> create_function </item>
+	    <item> crypt </item>
+	    <item> ctype_alnum </item>
+	    <item> ctype_alpha </item>
+	    <item> ctype_cntrl </item>
+	    <item> ctype_digit </item>
+	    <item> ctype_graph </item>
+	    <item> ctype_lower </item>
+	    <item> ctype_print </item>
+	    <item> ctype_punct </item>
+	    <item> ctype_space </item>
+	    <item> ctype_upper </item>
+	    <item> ctype_xdigit </item>
+	    <item> curl_close </item>
+	    <item> curl_copy_handle </item>
+	    <item> curl_errno </item>
+	    <item> curl_error </item>
+	    <item> curl_exec </item>
+	    <item> curl_getinfo </item>
+	    <item> curl_init </item>
+	    <item> curl_multi_add_handle </item>
+	    <item> curl_multi_close </item>
+	    <item> curl_multi_exec </item>
+	    <item> curl_multi_getcontent </item>
+	    <item> curl_multi_info_read </item>
+	    <item> curl_multi_init </item>
+	    <item> curl_multi_remove_handle </item>
+	    <item> curl_multi_select </item>
+	    <item> curl_setopt </item>
+	    <item> curl_version </item>
+	    <item> current </item>
+	    <item> cybercash_base64_decode </item>
+	    <item> cybercash_base64_encode </item>
+	    <item> cybercash_decr </item>
+	    <item> cybercash_encr </item>
+	    <item> cybermut_creerformulairecm </item>
+	    <item> cybermut_creerreponsecm </item>
+	    <item> cybermut_testmac </item>
+	    <item> cyrus_authenticate </item>
+	    <item> cyrus_bind </item>
+	    <item> cyrus_close </item>
+	    <item> cyrus_connect </item>
+	    <item> cyrus_query </item>
+	    <item> cyrus_unbind </item>
+	    <item> date </item>
+	    <item> date_sunrise </item>
+	    <item> date_sunset </item>
+	    <item> dba_close </item>
+	    <item> dba_delete </item>
+	    <item> dba_exists </item>
+	    <item> dba_fetch </item>
+	    <item> dba_firstkey </item>
+	    <item> dba_handlers </item>
+	    <item> dba_insert </item>
+	    <item> dba_key_split </item>
+	    <item> dba_list </item>
+	    <item> dba_nextkey </item>
+	    <item> dba_open </item>
+	    <item> dba_optimize </item>
+	    <item> dba_popen </item>
+	    <item> dba_replace </item>
+	    <item> dba_sync </item>
+	    <item> dbase_add_record </item>
+	    <item> dbase_close </item>
+	    <item> dbase_create </item>
+	    <item> dbase_delete_record </item>
+	    <item> dbase_get_header_info </item>
+	    <item> dbase_get_record </item>
+	    <item> dbase_get_record_with_names </item>
+	    <item> dbase_numfields </item>
+	    <item> dbase_numrecords </item>
+	    <item> dbase_open </item>
+	    <item> dbase_pack </item>
+	    <item> dbase_replace_record </item>
+	    <item> dblist </item>
+	    <item> dbmclose </item>
+	    <item> dbmdelete </item>
+	    <item> dbmexists </item>
+	    <item> dbmfetch </item>
+	    <item> dbmfirstkey </item>
+	    <item> dbminsert </item>
+	    <item> dbmnextkey </item>
+	    <item> dbmopen </item>
+	    <item> dbmreplace </item>
+	    <item> dbplus_add </item>
+	    <item> dbplus_aql </item>
+	    <item> dbplus_chdir </item>
+	    <item> dbplus_close </item>
+	    <item> dbplus_curr </item>
+	    <item> dbplus_errcode </item>
+	    <item> dbplus_errno </item>
+	    <item> dbplus_find </item>
+	    <item> dbplus_first </item>
+	    <item> dbplus_flush </item>
+	    <item> dbplus_freealllocks </item>
+	    <item> dbplus_freelock </item>
+	    <item> dbplus_freerlocks </item>
+	    <item> dbplus_getlock </item>
+	    <item> dbplus_getunique </item>
+	    <item> dbplus_info </item>
+	    <item> dbplus_last </item>
+	    <item> dbplus_lockrel </item>
+	    <item> dbplus_next </item>
+	    <item> dbplus_open </item>
+	    <item> dbplus_prev </item>
+	    <item> dbplus_rchperm </item>
+	    <item> dbplus_rcreate </item>
+	    <item> dbplus_rcrtexact </item>
+	    <item> dbplus_rcrtlike </item>
+	    <item> dbplus_resolve </item>
+	    <item> dbplus_restorepos </item>
+	    <item> dbplus_rkeys </item>
+	    <item> dbplus_ropen </item>
+	    <item> dbplus_rquery </item>
+	    <item> dbplus_rrename </item>
+	    <item> dbplus_rsecindex </item>
+	    <item> dbplus_runlink </item>
+	    <item> dbplus_rzap </item>
+	    <item> dbplus_savepos </item>
+	    <item> dbplus_setindex </item>
+	    <item> dbplus_setindexbynumber </item>
+	    <item> dbplus_sql </item>
+	    <item> dbplus_tcl </item>
+	    <item> dbplus_tremove </item>
+	    <item> dbplus_undo </item>
+	    <item> dbplus_undoprepare </item>
+	    <item> dbplus_unlockrel </item>
+	    <item> dbplus_unselect </item>
+	    <item> dbplus_update </item>
+	    <item> dbplus_xlockrel </item>
+	    <item> dbplus_xunlockrel </item>
+	    <item> dbx_close </item>
+	    <item> dbx_compare </item>
+	    <item> dbx_connect </item>
+	    <item> dbx_error </item>
+	    <item> dbx_escape_string </item>
+	    <item> dbx_fetch_row </item>
+	    <item> dbx_query </item>
+	    <item> dbx_sort </item>
+	    <item> dcgettext </item>
+	    <item> dcngettext </item>
+	    <item> debug_backtrace </item>
+	    <item> debug_print_backtrace </item>
+	    <item> debug_zval_dump </item>
+	    <item> dcgettext </item>
+	    <item> dcngettext </item>
+	    <item> debugger_off </item>
+	    <item> debugger_on </item>
+	    <item> decbin </item>
+	    <item> dechex </item>
+	    <item> decoct </item>
+	    <item> define </item>
+	    <item> define_syslog_variables </item>
+	    <item> defined </item>
+	    <item> deg2rad </item>
+	    <item> delete </item>
+	    <item> dgettext </item>
+	    <item> die </item>
+	    <item> dio_close </item>
+	    <item> dio_fcntl </item>
+	    <item> dio_open </item>
+	    <item> dio_read </item>
+	    <item> dio_seek </item>
+	    <item> dio_stat </item>
+	    <item> dio_tcsetattr </item>
+	    <item> dio_truncate </item>
+	    <item> dio_write </item>
+	    <item> dir </item>
+	    <item> dirname </item>
+	    <item> disk_free_space </item>
+	    <item> disk_total_space </item>
+	    <item> diskfreespace </item>
+	    <item> dl </item>
+	    <item> dngettext </item>
+	    <item> dns_check_record </item>
+	    <item> dns_get_mx </item>
+	    <item> dns_get_record </item>
+	    <item> dom_import_simplexml </item>
+	    <item> dngettext </item>
+	    <item> domxml_add_root </item>
+	    <item> domxml_attributes </item>
+	    <item> domxml_children </item>
+	    <item> domxml_dumpmem </item>
+	    <item> domxml_get_attribute </item>
+	    <item> domxml_new_child </item>
+	    <item> domxml_new_xmldoc </item>
+	    <item> domxml_node </item>
+	    <item> domxml_node_set_content </item>
+	    <item> domxml_node_unlink_node </item>
+	    <item> domxml_root </item>
+	    <item> domxml_set_attribute </item>
+	    <item> domxml_version </item>
+	    <item> dotnet_load </item>
+	    <item> doubleval </item>
+	    <item> each </item>
+	    <item> easter_date </item>
+	    <item> easter_days </item>
+	    <item> ebcdic2ascii </item>
+	    <item> echo </item>
+	    <item> empty </item>
+	    <item> end </item>
+	    <item> ereg </item>
+	    <item> ereg_replace </item>
+	    <item> eregi </item>
+	    <item> eregi_replace </item>
+	    <item> error_log </item>
+	    <item> error_reporting </item>
+	    <item> escapeshellarg </item>
+	    <item> escapeshellcmd </item>
+	    <item> eval </item>
+	    <item> exec </item>
+	    <item> exif_imagetype </item>
+	    <item> exif_read_data </item>
+	    <item> exif_tagname </item>
+	    <item> exif_thumbnail </item>
+	    <item> exit </item>
+	    <item> exp </item>
+	    <item> explode </item>
+	    <item> expm1 </item>
+	    <item> extension_loaded </item>
+	    <item> extract </item>
+	    <item> ezmlm_hash </item>
+	    <item> fam_cancel_monitor </item>
+	    <item> fam_close </item>
+	    <item> fam_monitor_collection </item>
+	    <item> fam_monitor_directory </item>
+	    <item> fam_monitor_file </item>
+	    <item> fam_next_event </item>
+	    <item> fam_open </item>
+	    <item> fam_pending </item>
+	    <item> fam_resume_monitor </item>
+	    <item> fam_suspend_monitor </item>
+	    <item> fbsql_affected_rows </item>
+	    <item> fbsql_autocommit </item>
+	    <item> fbsql_change_user </item>
+	    <item> fbsql_close </item>
+	    <item> fbsql_commit </item>
+	    <item> fbsql_connect </item>
+	    <item> fbsql_create_blob </item>
+	    <item> fbsql_create_clob </item>
+	    <item> fbsql_create_db </item>
+	    <item> fbsql_data_seek </item>
+	    <item> fbsql_database </item>
+	    <item> fbsql_database_password </item>
+	    <item> fbsql_db_query </item>
+	    <item> fbsql_db_status </item>
+	    <item> fbsql_drop_db </item>
+	    <item> fbsql_errno </item>
+	    <item> fbsql_error </item>
+	    <item> fbsql_fetch_array </item>
+	    <item> fbsql_fetch_assoc </item>
+	    <item> fbsql_fetch_field </item>
+	    <item> fbsql_fetch_lengths </item>
+	    <item> fbsql_fetch_object </item>
+	    <item> fbsql_fetch_row </item>
+	    <item> fbsql_field_flags </item>
+	    <item> fbsql_field_len </item>
+	    <item> fbsql_field_name </item>
+	    <item> fbsql_field_seek </item>
+	    <item> fbsql_field_table </item>
+	    <item> fbsql_field_type </item>
+	    <item> fbsql_free_result </item>
+	    <item> fbsql_get_autostart_info </item>
+	    <item> fbsql_hostname </item>
+	    <item> fbsql_insert_id </item>
+	    <item> fbsql_list_dbs </item>
+	    <item> fbsql_list_fields </item>
+	    <item> fbsql_list_tables </item>
+	    <item> fbsql_next_result </item>
+	    <item> fbsql_num_fields </item>
+	    <item> fbsql_num_rows </item>
+	    <item> fbsql_password </item>
+	    <item> fbsql_pconnect </item>
+	    <item> fbsql_query </item>
+	    <item> fbsql_read_blob </item>
+	    <item> fbsql_read_clob </item>
+	    <item> fbsql_result </item>
+	    <item> fbsql_rollback </item>
+	    <item> fbsql_select_db </item>
+	    <item> fbsql_set_lob_mode </item>
+	    <item> fbsql_set_transaction </item>
+	    <item> fbsql_start_db </item>
+	    <item> fbsql_stop_db </item>
+	    <item> fbsql_tablename </item>
+	    <item> fbsql_username </item>
+	    <item> fbsql_warnings </item>
+	    <item> fclose </item>
+	    <item> fdf_add_template </item>
+	    <item> fdf_close </item>
+	    <item> fdf_create </item>
+	    <item> fdf_get_file </item>
+	    <item> fdf_get_status </item>
+	    <item> fdf_get_value </item>
+	    <item> fdf_next_field_name </item>
+	    <item> fdf_open </item>
+	    <item> fdf_save </item>
+	    <item> fdf_set_ap </item>
+	    <item> fdf_set_encoding </item>
+	    <item> fdf_set_file </item>
+	    <item> fdf_set_flags </item>
+	    <item> fdf_set_javascript_action </item>
+	    <item> fdf_set_opt </item>
+	    <item> fdf_set_status </item>
+	    <item> fdf_set_submit_form_action </item>
+	    <item> fdf_set_value </item>
+	    <item> feof </item>
+	    <item> fflush </item>
+	    <item> fgetc </item>
+	    <item> fgetcsv </item>
+	    <item> fgets </item>
+	    <item> fgetss </item>
+	    <item> fgetwrapperdata </item>
+	    <item> file </item>
+	    <item> file_exists </item>
+	    <item> file_get_contents </item>
+	    <item> file_put_contents </item>
+	    <item> fileatime </item>
+	    <item> filectime </item>
+	    <item> filegroup </item>
+	    <item> fileinode </item>
+	    <item> filemtime </item>
+	    <item> fileowner </item>
+	    <item> fileperms </item>
+	    <item> filepro </item>
+	    <item> filepro_fieldcount </item>
+	    <item> filepro_fieldname </item>
+	    <item> filepro_fieldtype </item>
+	    <item> filepro_fieldwidth </item>
+	    <item> filepro_retrieve </item>
+	    <item> filepro_rowcount </item>
+	    <item> filesize </item>
+	    <item> filetype </item>
+	    <item> floatval </item>
+	    <item> flock </item>
+	    <item> floor </item>
+	    <item> flush </item>
+	    <item> fmod </item>
+	    <item> fnmatch </item>
+	    <item> fopen </item>
+	    <item> fpassthru </item>
+	    <item> fprintf </item>
+	    <item> fputs </item>
+	    <item> fread </item>
+	    <item> frenchtojd </item>
+	    <item> fribidi_log2vis </item>
+	    <item> fscanf </item>
+	    <item> fseek </item>
+	    <item> fsockopen </item>
+	    <item> fstat </item>
+	    <item> ftell </item>
+	    <item> ftok </item>
+	    <item> ftp_alloc </item>
+	    <item> ftp_cdup </item>
+	    <item> ftp_chdir </item>
+	    <item> ftp_chmod </item>
+	    <item> ftp_close </item>
+	    <item> ftp_connect </item>
+	    <item> ftp_delete </item>
+	    <item> ftp_exec </item>
+	    <item> ftp_fget </item>
+	    <item> ftp_fput </item>
+	    <item> ftp_get </item>
+	    <item> ftp_get_option </item>
+	    <item> ftp_login </item>
+	    <item> ftp_mdtm </item>
+	    <item> ftp_mkdir </item>
+	    <item> ftp_nb_continue </item>
+	    <item> ftp_nb_fget </item>
+	    <item> ftp_nb_fput </item>
+	    <item> ftp_nb_get </item>
+	    <item> ftp_nb_put </item>
+	    <item> ftp_nlist </item>
+	    <item> ftp_pasv </item>
+	    <item> ftp_put </item>
+	    <item> ftp_pwd </item>
+	    <item> ftp_quit </item>
+	    <item> ftp_raw </item>
+	    <item> ftp_rawlist </item>
+	    <item> ftp_rename </item>
+	    <item> ftp_rmdir </item>
+	    <item> ftp_set_option </item>
+	    <item> ftp_site </item>
+	    <item> ftp_size </item>
+	    <item> ftp_ssl_connect </item>
+	    <item> ftp_systype </item>
+	    <item> ftruncate </item>
+	    <item> func_get_arg </item>
+	    <item> func_get_args </item>
+	    <item> func_num_args </item>
+	    <item> function_exists </item>
+	    <item> fwrite </item>
+	    <item> gd_info </item>
+	    <item> get_browser </item>
+	    <item> get_cfg_var </item>
+	    <item> get_class </item>
+	    <item> get_class_methods </item>
+	    <item> get_class_vars </item>
+	    <item> get_current_user </item>
+	    <item> get_declared_classes </item>
+	    <item> get_declared_interfaces </item>
+	    <item> get_defined_constants </item>
+	    <item> get_defined_functions </item>
+	    <item> get_defined_vars </item>
+	    <item> get_extension_funcs </item>
+	    <item> get_headers </item>
+	    <item> get_html_translation_table </item>
+	    <item> get_include_path </item>
+	    <item> get_included_files </item>
+	    <item> get_loaded_extensions </item>
+	    <item> get_magic_quotes_gpc </item>
+	    <item> get_magic_quotes_runtime </item>
+	    <item> get_meta_tags </item>
+	    <item> get_object_vars </item>
+	    <item> get_parent_class </item>
+	    <item> get_required_files </item>
+	    <item> get_resource_type </item>
+	    <item> getallheaders </item>
+	    <item> getcwd </item>
+	    <item> getdate </item>
+	    <item> getenv </item>
+	    <item> gethostbyaddr </item>
+	    <item> gethostbyname </item>
+	    <item> gethostbynamel </item>
+	    <item> getimagesize </item>
+	    <item> getlastmod </item>
+	    <item> getmxrr </item>
+	    <item> getmygid </item>
+	    <item> getmyinode </item>
+	    <item> getmypid </item>
+	    <item> getmyuid </item>
+	    <item> getopt </item>
+	    <item> getprotobyname </item>
+	    <item> getprotobynumber </item>
+	    <item> getrandmax </item>
+	    <item> getrusage </item>
+	    <item> getservbyname </item>
+	    <item> getservbyport </item>
+	    <item> gettext </item>
+	    <item> gettimeofday </item>
+	    <item> gettype </item>
+	    <item> glob </item>
+	    <item> global </item>
+	    <item> gmdate </item>
+	    <item> gmmktime </item>
+	    <item> gmp_abs </item>
+	    <item> gmp_add </item>
+	    <item> gmp_and </item>
+	    <item> gmp_clrbit </item>
+	    <item> gmp_cmp </item>
+	    <item> gmp_com </item>
+	    <item> gmp_div </item>
+	    <item> gmp_div_q </item>
+	    <item> gmp_div_qr </item>
+	    <item> gmp_div_r </item>
+	    <item> gmp_divexact </item>
+	    <item> gmp_fact </item>
+	    <item> gmp_gcd </item>
+	    <item> gmp_gcdext </item>
+	    <item> gmp_hamdist </item>
+	    <item> gmp_init </item>
+	    <item> gmp_intval </item>
+	    <item> gmp_invert </item>
+	    <item> gmp_jacobi </item>
+	    <item> gmp_legendre </item>
+	    <item> gmp_mod </item>
+	    <item> gmp_mul </item>
+	    <item> gmp_neg </item>
+	    <item> gmp_or </item>
+	    <item> gmp_perfect_square </item>
+	    <item> gmp_popcount </item>
+	    <item> gmp_pow </item>
+	    <item> gmp_powm </item>
+	    <item> gmp_prob_prime </item>
+	    <item> gmp_random </item>
+	    <item> gmp_scan0 </item>
+	    <item> gmp_scan1 </item>
+	    <item> gmp_setbit </item>
+	    <item> gmp_sign </item>
+	    <item> gmp_sqrt </item>
+	    <item> gmp_sqrtrem </item>
+	    <item> gmp_strval </item>
+	    <item> gmp_sub </item>
+	    <item> gmp_xor </item>
+	    <item> gmstrftime </item>
+	    <item> gregoriantojd </item>
+	    <item> gzclose </item>
+	    <item> gzcompress </item>
+	    <item> gzdeflate </item>
+	    <item> gzencode </item>
+	    <item> gzeof </item>
+	    <item> gzfile </item>
+	    <item> gzgetc </item>
+	    <item> gzgets </item>
+	    <item> gzgetss </item>
+	    <item> gzinflate </item>
+	    <item> gzopen </item>
+	    <item> gzpassthru </item>
+	    <item> gzputs </item>
+	    <item> gzread </item>
+	    <item> gzrewind </item>
+	    <item> gzseek </item>
+	    <item> gztell </item>
+	    <item> gzuncompress </item>
+	    <item> gzwrite </item>
+	    <item> header </item>
+	    <item> headers_list </item>
+	    <item> headers_sent </item>
+	    <item> hebrev </item>
+	    <item> hebrevc </item>
+	    <item> hexdec </item>
+	    <item> highlight_file </item>
+	    <item> highlight_string </item>
+	    <item> html_entity_decode </item>
+	    <item> htmlentities </item>
+	    <item> htmlspecialchars </item>
+	    <item> http_build_query </item>
+	    <item> hw_array2objrec </item>
+	    <item> hw_changeobject </item>
+	    <item> hw_children </item>
+	    <item> hw_childrenobj </item>
+	    <item> hw_close </item>
+	    <item> hw_connect </item>
+	    <item> hw_connection_info </item>
+	    <item> hw_cp </item>
+	    <item> hw_deleteobject </item>
+	    <item> hw_docbyanchor </item>
+	    <item> hw_docbyanchorobj </item>
+	    <item> hw_document_attributes </item>
+	    <item> hw_document_bodytag </item>
+	    <item> hw_document_content </item>
+	    <item> hw_document_setcontent </item>
+	    <item> hw_document_size </item>
+	    <item> hw_dummy </item>
+	    <item> hw_edittext </item>
+	    <item> hw_error </item>
+	    <item> hw_errormsg </item>
+	    <item> hw_free_document </item>
+	    <item> hw_getanchors </item>
+	    <item> hw_getanchorsobj </item>
+	    <item> hw_getandlock </item>
+	    <item> hw_getchildcoll </item>
+	    <item> hw_getchildcollobj </item>
+	    <item> hw_getchilddoccoll </item>
+	    <item> hw_getchilddoccollobj </item>
+	    <item> hw_getobject </item>
+	    <item> hw_getobjectbyquery </item>
+	    <item> hw_getobjectbyquerycoll </item>
+	    <item> hw_getobjectbyquerycollobj </item>
+	    <item> hw_getobjectbyqueryobj </item>
+	    <item> hw_getparents </item>
+	    <item> hw_getparentsobj </item>
+	    <item> hw_getrellink </item>
+	    <item> hw_getremote </item>
+	    <item> hw_getremotechildren </item>
+	    <item> hw_getsrcbydestobj </item>
+	    <item> hw_gettext </item>
+	    <item> hw_getusername </item>
+	    <item> hw_identify </item>
+	    <item> hw_incollections </item>
+	    <item> hw_info </item>
+	    <item> hw_inscoll </item>
+	    <item> hw_insdoc </item>
+	    <item> hw_insertanchors </item>
+	    <item> hw_insertdocument </item>
+	    <item> hw_insertobject </item>
+	    <item> hw_mapid </item>
+	    <item> hw_modifyobject </item>
+	    <item> hw_mv </item>
+	    <item> hw_new_document </item>
+	    <item> hw_objrec2array </item>
+	    <item> hw_output_document </item>
+	    <item> hw_pconnect </item>
+	    <item> hw_pipedocument </item>
+	    <item> hw_root </item>
+	    <item> hw_setlinkroot </item>
+	    <item> hw_stat </item>
+	    <item> hw_unlock </item>
+	    <item> hw_who </item>
+	    <item> hypot </item>
+	    <item> idate </item>
+	    <item> ibase_blob_add </item>
+	    <item> ibase_blob_cancel </item>
+	    <item> ibase_blob_close </item>
+	    <item> ibase_blob_create </item>
+	    <item> ibase_blob_echo </item>
+	    <item> ibase_blob_get </item>
+	    <item> ibase_blob_import </item>
+	    <item> ibase_blob_info </item>
+	    <item> ibase_blob_open </item>
+	    <item> ibase_close </item>
+	    <item> ibase_commit </item>
+	    <item> ibase_connect </item>
+	    <item> ibase_errmsg </item>
+	    <item> ibase_execute </item>
+	    <item> ibase_fetch_object </item>
+	    <item> ibase_fetch_row </item>
+	    <item> ibase_field_info </item>
+	    <item> ibase_free_query </item>
+	    <item> ibase_free_result </item>
+	    <item> ibase_num_fields </item>
+	    <item> ibase_pconnect </item>
+	    <item> ibase_prepare </item>
+	    <item> ibase_query </item>
+	    <item> ibase_rollback </item>
+	    <item> ibase_timefmt </item>
+	    <item> ibase_trans </item>
+	    <item> icap_close </item>
+	    <item> icap_create_calendar </item>
+	    <item> icap_delete_calendar </item>
+	    <item> icap_delete_event </item>
+	    <item> icap_fetch_event </item>
+	    <item> icap_list_alarms </item>
+	    <item> icap_list_events </item>
+	    <item> icap_open </item>
+	    <item> icap_rename_calendar </item>
+	    <item> icap_reopen </item>
+	    <item> icap_snooze </item>
+	    <item> icap_store_event </item>
+	    <item> iconv </item>
+	    <item> iconv_get_encoding </item>
+	    <item> iconv_mime_decode </item>
+	    <item> iconv_mime_decode_headers </item>
+	    <item> iconv_mime_encode </item>
+	    <item> iconv_set_encoding </item>
+	    <item> ifx_affected_rows </item>
+	    <item> ifx_blobinfile_mode </item>
+	    <item> ifx_byteasvarchar </item>
+	    <item> ifx_close </item>
+	    <item> ifx_connect </item>
+	    <item> ifx_copy_blob </item>
+	    <item> ifx_create_blob </item>
+	    <item> ifx_create_char </item>
+	    <item> ifx_do </item>
+	    <item> ifx_error </item>
+	    <item> ifx_errormsg </item>
+	    <item> ifx_fetch_row </item>
+	    <item> ifx_fieldproperties </item>
+	    <item> ifx_fieldtypes </item>
+	    <item> ifx_free_blob </item>
+	    <item> ifx_free_char </item>
+	    <item> ifx_free_result </item>
+	    <item> ifx_get_blob </item>
+	    <item> ifx_get_char </item>
+	    <item> ifx_getsqlca </item>
+	    <item> ifx_htmltbl_result </item>
+	    <item> ifx_nullformat </item>
+	    <item> ifx_num_fields </item>
+	    <item> ifx_num_rows </item>
+	    <item> ifx_pconnect </item>
+	    <item> ifx_prepare </item>
+	    <item> ifx_query </item>
+	    <item> ifx_textasvarchar </item>
+	    <item> ifx_update_blob </item>
+	    <item> ifx_update_char </item>
+	    <item> ifxus_close_slob </item>
+	    <item> ifxus_create_slob </item>
+	    <item> ifxus_free_slob </item>
+	    <item> ifxus_open_slob </item>
+	    <item> ifxus_read_slob </item>
+	    <item> ifxus_seek_slob </item>
+	    <item> ifxus_tell_slob </item>
+	    <item> ifxus_write_slob </item>
+	    <item> ignore_user_abort </item>
+	    <item> image2wbmp </item>
+	    <item> image_type_to_mime_type </item>
+	    <item> imagealphablending </item>
+	    <item> imageantialias </item>
+	    <item> imagearc </item>
+	    <item> imagechar </item>
+	    <item> imagecharup </item>
+	    <item> imagecolorallocate </item>
+	    <item> imagecolorallocatealpha </item>
+	    <item> imagecolorat </item>
+	    <item> imagecolorclosest </item>
+	    <item> imagecolorclosestalpha </item>
+	    <item> imagecolorclosesthwb </item>
+	    <item> imagecolordeallocate </item>
+	    <item> imagecolorexact </item>
+	    <item> imagecolorexactalpha </item>
+	    <item> imagecolormatch </item>
+	    <item> imagecolorresolve </item>
+	    <item> imagecolorresolvealpha </item>
+	    <item> imagecolorset </item>
+	    <item> imagecolorsforindex </item>
+	    <item> imagecolorstotal </item>
+	    <item> imagecolortransparent </item>
+	    <item> imagecopy </item>
+	    <item> imagecopymerge </item>
+	    <item> imagecopymergegray </item>
+	    <item> imagecopyresampled </item>
+	    <item> imagecopyresized </item>
+	    <item> imagecreate </item>
+	    <item> imagecreatefromgd </item>
+	    <item> imagecreatefromgd2 </item>
+	    <item> imagecreatefromgd2part </item>
+	    <item> imagecreatefromgif </item>
+	    <item> imagecreatefromjpeg </item>
+	    <item> imagecreatefrompng </item>
+	    <item> imagecreatefromstring </item>
+	    <item> imagecreatefromwbmp </item>
+	    <item> imagecreatefromxbm </item>
+	    <item> imagecreatefromxpm </item>
+	    <item> imagecreatetruecolor </item>
+	    <item> imagedashedline </item>
+	    <item> imagedestroy </item>
+	    <item> imageellipse </item>
+	    <item> imagefill </item>
+	    <item> imagefilledarc </item>
+	    <item> imagefilledellipse </item>
+	    <item> imagefilledpolygon </item>
+	    <item> imagefilledrectangle </item>
+	    <item> imagefilltoborder </item>
+	    <item> imagefilter </item>
+	    <item> imagefontheight </item>
+	    <item> imagefontwidth </item>
+	    <item> imageftbbox </item>
+	    <item> imagefttext </item>
+	    <item> imagegammacorrect </item>
+	    <item> imagegd </item>
+	    <item> imagegd2 </item>
+	    <item> imagegif </item>
+	    <item> imageinterlace </item>
+	    <item> imageistruecolor </item>
+	    <item> imagejpeg </item>
+	    <item> imagelayereffect </item>
+	    <item> imageline </item>
+	    <item> imageloadfont </item>
+	    <item> imagepalettecopy </item>
+	    <item> imagepng </item>
+	    <item> imagepolygon </item>
+	    <item> imagepsbbox </item>
+	    <item> imagepsencodefont </item>
+	    <item> imagepsextendfont </item>
+	    <item> imagepsfreefont </item>
+	    <item> imagepsloadfont </item>
+	    <item> imagepsslantfont </item>
+	    <item> imagepstext </item>
+	    <item> imagerectangle </item>
+	    <item> imagerotate </item>
+	    <item> imagesavealpha </item>
+	    <item> imagesetbrush </item>
+	    <item> imagesetpixel </item>
+	    <item> imagesetstyle </item>
+	    <item> imagesetthickness </item>
+	    <item> imagesettile </item>
+	    <item> imagestring </item>
+	    <item> imagestringup </item>
+	    <item> imagesx </item>
+	    <item> imagesy </item>
+	    <item> imagetruecolortopalette </item>
+	    <item> imagettfbbox </item>
+	    <item> imagettftext </item>
+	    <item> imagetypes </item>
+	    <item> imagewbmp </item>
+	    <item> imagexbm </item>
+	    <item> imap_8bit </item>
+	    <item> imap_alerts </item>
+	    <item> imap_append </item>
+	    <item> imap_base64 </item>
+	    <item> imap_binary </item>
+	    <item> imap_body </item>
+	    <item> imap_bodystruct </item>
+	    <item> imap_check </item>
+	    <item> imap_clearflag_full </item>
+	    <item> imap_close </item>
+	    <item> imap_create </item>
+	    <item> imap_createmailbox </item>
+	    <item> imap_delete </item>
+	    <item> imap_deletemailbox </item>
+	    <item> imap_errors </item>
+	    <item> imap_expunge </item>
+	    <item> imap_fetch_overview </item>
+	    <item> imap_fetchbody </item>
+	    <item> imap_fetchheader </item>
+	    <item> imap_fetchstructure </item>
+	    <item> imap_fetchtext </item>
+	    <item> imap_get_quota </item>
+	    <item> imap_get_quotaroot </item>
+	    <item> imap_getacl </item>
+	    <item> imap_getmailboxes </item>
+	    <item> imap_getsubscribed </item>
+	    <item> imap_header </item>
+	    <item> imap_headerinfo </item>
+	    <item> imap_headers </item>
+	    <item> imap_last_error </item>
+	    <item> imap_list </item>
+	    <item> imap_listmailbox </item>
+	    <item> imap_listsubscribed </item>
+	    <item> imap_lsub </item>
+	    <item> imap_mail </item>
+	    <item> imap_mail_compose </item>
+	    <item> imap_mail_copy </item>
+	    <item> imap_mail_move </item>
+	    <item> imap_mailboxmsginfo </item>
+	    <item> imap_mime_header_decode </item>
+	    <item> imap_msgno </item>
+	    <item> imap_num_msg </item>
+	    <item> imap_num_recent </item>
+	    <item> imap_open </item>
+	    <item> imap_ping </item>
+	    <item> imap_popen </item>
+	    <item> imap_qprint </item>
+	    <item> imap_rename </item>
+	    <item> imap_renamemailbox </item>
+	    <item> imap_reopen </item>
+	    <item> imap_rfc822_parse_adrlist </item>
+	    <item> imap_rfc822_parse_headers </item>
+	    <item> imap_rfc822_write_address </item>
+	    <item> imap_scan </item>
+	    <item> imap_scanmailbox </item>
+	    <item> imap_search </item>
+	    <item> imap_set_quota </item>
+	    <item> imap_setacl </item>
+	    <item> imap_setflag_full </item>
+	    <item> imap_sort </item>
+	    <item> imap_status </item>
+	    <item> imap_subscribe </item>
+	    <item> imap_thread </item>
+	    <item> imap_timeout </item>
+	    <item> imap_uid </item>
+	    <item> imap_undelete </item>
+	    <item> imap_unsubscribe </item>
+	    <item> imap_utf7_decode </item>
+	    <item> imap_utf7_encode </item>
+	    <item> imap_utf8 </item>
+	    <item> implode </item>
+	    <item> import_request_variables </item>
+	    <item> in_array </item>
+	    <item> include </item>
+	    <item> include_once </item>
+	    <item> ingres_autocommit </item>
+	    <item> ingres_close </item>
+	    <item> ingres_commit </item>
+	    <item> ingres_connect </item>
+	    <item> ingres_fetch_array </item>
+	    <item> ingres_fetch_object </item>
+	    <item> ingres_fetch_row </item>
+	    <item> ingres_field_length </item>
+	    <item> ingres_field_name </item>
+	    <item> ingres_field_nullable </item>
+	    <item> ingres_field_precision </item>
+	    <item> ingres_field_scale </item>
+	    <item> ingres_field_type </item>
+	    <item> ingres_num_fields </item>
+	    <item> ingres_num_rows </item>
+	    <item> ingres_pconnect </item>
+	    <item> ingres_query </item>
+	    <item> ingres_rollback </item>
+	    <item> ini_alter </item>
+	    <item> ini_get </item>
+	    <item> ini_get_all </item>
+	    <item> ini_restore </item>
+	    <item> ini_set </item>
+	    <item> interface_exists </item>
+	    <item> intval </item>
+	    <item> ip2long </item>
+	    <item> iptcembed </item>
+	    <item> iptcparse </item>
+	    <item> ircg_channel_mode </item>
+	    <item> ircg_disconnect </item>
+	    <item> ircg_fetch_error_msg </item>
+	    <item> ircg_get_username </item>
+	    <item> ircg_html_encode </item>
+	    <item> ircg_ignore_add </item>
+	    <item> ircg_ignore_del </item>
+	    <item> ircg_is_conn_alive </item>
+	    <item> ircg_join </item>
+	    <item> ircg_kick </item>
+	    <item> ircg_lookup_format_messages </item>
+	    <item> ircg_msg </item>
+	    <item> ircg_nick </item>
+	    <item> ircg_nickname_escape </item>
+	    <item> ircg_nickname_unescape </item>
+	    <item> ircg_notice </item>
+	    <item> ircg_part </item>
+	    <item> ircg_pconnect </item>
+	    <item> ircg_register_format_messages </item>
+	    <item> ircg_set_current </item>
+	    <item> ircg_set_file </item>
+	    <item> ircg_set_on_die </item>
+	    <item> ircg_topic </item>
+	    <item> ircg_whois </item>
+	    <item> is_a </item>
+	    <item> is_array </item>
+	    <item> is_bool </item>
+	    <item> is_callable </item>
+	    <item> is_dir </item>
+	    <item> is_double </item>
+	    <item> is_executable </item>
+	    <item> is_file </item>
+	    <item> is_finite </item>
+	    <item> is_float </item>
+	    <item> is_infinite </item>
+	    <item> is_int </item>
+	    <item> is_integer </item>
+	    <item> is_link </item>
+	    <item> is_long </item>
+	    <item> is_nan </item>
+	    <item> is_null </item>
+	    <item> is_numeric </item>
+	    <item> is_object </item>
+	    <item> is_readable </item>
+	    <item> is_real </item>
+	    <item> is_resource </item>
+	    <item> is_scalar </item>
+	    <item> is_string </item>
+	    <item> is_subclass_of </item>
+	    <item> is_uploaded_file </item>
+	    <item> is_writable </item>
+	    <item> is_writeable </item>
+	    <item> isset </item>
+	    <item> java_last_exception_clear </item>
+	    <item> java_last_exception_get </item>
+	    <item> jddayofweek </item>
+	    <item> jdmonthname </item>
+	    <item> jdtofrench </item>
+	    <item> jdtogregorian </item>
+	    <item> jdtojewish </item>
+	    <item> jdtojulian </item>
+	    <item> jdtounix </item>
+	    <item> jewishtojd </item>
+	    <item> join </item>
+	    <item> jpeg2wbmp </item>
+	    <item> juliantojd </item>
+	    <item> key </item>
+	    <item> key_exists </item>
+	    <item> krsort </item>
+	    <item> ksort </item>
+	    <item> lcg_value </item>
+	    <item> ldap_8859_to_t61 </item>
+	    <item> ldap_add </item>
+	    <item> ldap_bind </item>
+	    <item> ldap_close </item>
+	    <item> ldap_compare </item>
+	    <item> ldap_connect </item>
+	    <item> ldap_count_entries </item>
+	    <item> ldap_delete </item>
+	    <item> ldap_dn2ufn </item>
+	    <item> ldap_err2str </item>
+	    <item> ldap_errno </item>
+	    <item> ldap_error </item>
+	    <item> ldap_explode_dn </item>
+	    <item> ldap_first_attribute </item>
+	    <item> ldap_first_entry </item>
+	    <item> ldap_first_reference </item>
+	    <item> ldap_free_result </item>
+	    <item> ldap_get_attributes </item>
+	    <item> ldap_get_dn </item>
+	    <item> ldap_get_entries </item>
+	    <item> ldap_get_option </item>
+	    <item> ldap_get_values </item>
+	    <item> ldap_get_values_len </item>
+	    <item> ldap_list </item>
+	    <item> ldap_mod_add </item>
+	    <item> ldap_mod_del </item>
+	    <item> ldap_mod_replace </item>
+	    <item> ldap_modify </item>
+	    <item> ldap_next_attribute </item>
+	    <item> ldap_next_entry </item>
+	    <item> ldap_next_reference </item>
+	    <item> ldap_parse_reference </item>
+	    <item> ldap_parse_result </item>
+	    <item> ldap_read </item>
+	    <item> ldap_rename </item>
+	    <item> ldap_search </item>
+	    <item> ldap_set_option </item>
+	    <item> ldap_set_rebind_proc </item>
+	    <item> ldap_sort </item>
+	    <item> ldap_start_tls </item>
+	    <item> ldap_t61_to_8859 </item>
+	    <item> ldap_unbind </item>
+	    <item> leak </item>
+	    <item> levenshtein </item>
+	    <item> libxml_set_streams_context </item>
+	    <item> link </item>
+	    <item> linkinfo </item>
+	    <item> list </item>
+	    <item> localeconv </item>
+	    <item> localtime </item>
+	    <item> log </item>
+	    <item> log10 </item>
+	    <item> log1p </item>
+	    <item> long2ip </item>
+	    <item> lstat </item>
+	    <item> ltrim </item>
+	    <item> magic_quotes_runtime </item>
+	    <item> mail </item>
+	    <item> mailparse_determine_best_xfer_encoding </item>
+	    <item> mailparse_msg_create </item>
+	    <item> mailparse_msg_extract_part </item>
+	    <item> mailparse_msg_extract_part_file </item>
+	    <item> mailparse_msg_free </item>
+	    <item> mailparse_msg_get_part </item>
+	    <item> mailparse_msg_get_part_data </item>
+	    <item> mailparse_msg_get_structure </item>
+	    <item> mailparse_msg_parse </item>
+	    <item> mailparse_msg_parse_file </item>
+	    <item> mailparse_rfc822_parse_addresses </item>
+	    <item> mailparse_stream_encode </item>
+	    <item> mailparse_uudecode_all </item>
+	    <item> max </item>
+	    <item> mb_convert_case </item>
+	    <item> mb_convert_encoding </item>
+	    <item> mb_convert_kana </item>
+	    <item> mb_convert_variables </item>
+	    <item> mb_decode_mimeheader </item>
+	    <item> mb_decode_numericentity </item>
+	    <item> mb_detect_encoding </item>
+	    <item> mb_detect_order </item>
+	    <item> mb_encode_mimeheader </item>
+	    <item> mb_encode_numericentity </item>
+	    <item> mb_ereg </item>
+	    <item> mb_ereg_match </item>
+	    <item> mb_ereg_replace </item>
+	    <item> mb_ereg_search </item>
+	    <item> mb_ereg_search_getpos </item>
+	    <item> mb_ereg_search_getregs </item>
+	    <item> mb_ereg_search_init </item>
+	    <item> mb_ereg_search_pos </item>
+	    <item> mb_ereg_search_regs </item>
+	    <item> mb_ereg_search_setpos </item>
+	    <item> mb_eregi </item>
+	    <item> mb_eregi_replace </item>
+	    <item> mb_get_info </item>
+	    <item> mb_http_input </item>
+	    <item> mb_http_output </item>
+	    <item> mb_internal_encoding </item>
+	    <item> mb_language </item>
+	    <item> mb_output_handler </item>
+	    <item> mb_parse_str </item>
+	    <item> mb_preferred_mime_name </item>
+	    <item> mb_regex_encoding </item>
+	    <item> mb_regex_set_options </item>
+	    <item> mb_send_mail </item>
+	    <item> mb_split </item>
+	    <item> mb_strcut </item>
+	    <item> mb_strimwidth </item>
+	    <item> mb_strlen </item>
+	    <item> mb_strpos </item>
+	    <item> mb_strrpos </item>
+	    <item> mb_strtolower </item>
+	    <item> mb_strtoupper </item>
+	    <item> mb_strwidth </item>
+	    <item> mb_substitute_character </item>
+	    <item> mb_substr </item>
+	    <item> mcal_append_event </item>
+	    <item> mcal_close </item>
+	    <item> mcal_create_calendar </item>
+	    <item> mcal_date_compare </item>
+	    <item> mcal_date_valid </item>
+	    <item> mcal_day_of_week </item>
+	    <item> mcal_day_of_year </item>
+	    <item> mcal_days_in_month </item>
+	    <item> mcal_delete_calendar </item>
+	    <item> mcal_delete_event </item>
+	    <item> mcal_event_add_attribute </item>
+	    <item> mcal_event_init </item>
+	    <item> mcal_event_set_alarm </item>
+	    <item> mcal_event_set_category </item>
+	    <item> mcal_event_set_class </item>
+	    <item> mcal_event_set_description </item>
+	    <item> mcal_event_set_end </item>
+	    <item> mcal_event_set_recur_daily </item>
+	    <item> mcal_event_set_recur_monthly_mday </item>
+	    <item> mcal_event_set_recur_monthly_wday </item>
+	    <item> mcal_event_set_recur_none </item>
+	    <item> mcal_event_set_recur_weekly </item>
+	    <item> mcal_event_set_recur_yearly </item>
+	    <item> mcal_event_set_start </item>
+	    <item> mcal_event_set_title </item>
+	    <item> mcal_expunge </item>
+	    <item> mcal_fetch_current_stream_event </item>
+	    <item> mcal_fetch_event </item>
+	    <item> mcal_is_leap_year </item>
+	    <item> mcal_list_alarms </item>
+	    <item> mcal_list_events </item>
+	    <item> mcal_next_recurrence </item>
+	    <item> mcal_open </item>
+	    <item> mcal_popen </item>
+	    <item> mcal_rename_calendar </item>
+	    <item> mcal_reopen </item>
+	    <item> mcal_snooze </item>
+	    <item> mcal_store_event </item>
+	    <item> mcal_time_valid </item>
+	    <item> mcal_week_of_year </item>
+	    <item> mcrypt_cbc </item>
+	    <item> mcrypt_cfb </item>
+	    <item> mcrypt_create_iv </item>
+	    <item> mcrypt_decrypt </item>
+	    <item> mcrypt_ecb </item>
+	    <item> mcrypt_enc_get_algorithms_name </item>
+	    <item> mcrypt_enc_get_block_size </item>
+	    <item> mcrypt_enc_get_iv_size </item>
+	    <item> mcrypt_enc_get_key_size </item>
+	    <item> mcrypt_enc_get_modes_name </item>
+	    <item> mcrypt_enc_get_supported_key_sizes </item>
+	    <item> mcrypt_enc_is_block_algorithm </item>
+	    <item> mcrypt_enc_is_block_algorithm_mode </item>
+	    <item> mcrypt_enc_is_block_mode </item>
+	    <item> mcrypt_enc_self_test </item>
+	    <item> mcrypt_encrypt </item>
+	    <item> mcrypt_generic </item>
+	    <item> mcrypt_generic_deinit </item>
+	    <item> mcrypt_generic_end </item>
+	    <item> mcrypt_generic_init </item>
+	    <item> mcrypt_get_block_size </item>
+	    <item> mcrypt_get_cipher_name </item>
+	    <item> mcrypt_get_iv_size </item>
+	    <item> mcrypt_get_key_size </item>
+	    <item> mcrypt_list_algorithms </item>
+	    <item> mcrypt_list_modes </item>
+	    <item> mcrypt_module_close </item>
+	    <item> mcrypt_module_get_algo_block_size </item>
+	    <item> mcrypt_module_get_algo_key_size </item>
+	    <item> mcrypt_module_get_supported_key_sizes </item>
+	    <item> mcrypt_module_is_block_algorithm </item>
+	    <item> mcrypt_module_is_block_algorithm_mode </item>
+	    <item> mcrypt_module_is_block_mode </item>
+	    <item> mcrypt_module_open </item>
+	    <item> mcrypt_module_self_test </item>
+	    <item> mcrypt_ofb </item>
+	    <item> md5 </item>
+	    <item> md5_file </item>
+	    <item> mdecrypt_generic </item>
+	    <item> memory_get_usage </item>
+	    <item> metaphone </item>
+	    <item> method_exists </item>
+	    <item> mhash </item>
+	    <item> mhash_count </item>
+	    <item> mhash_get_block_size </item>
+	    <item> mhash_get_hash_name </item>
+	    <item> mhash_keygen_s2k </item>
+	    <item> microtime </item>
+	    <item> min </item>
+	    <item> ming_setcubicthreshold </item>
+	    <item> ming_setscale </item>
+	    <item> ming_useswfversion </item>
+	    <item> mkdir </item>
+	    <item> mktime </item>
+	    <item> money_format </item>
+	    <item> move_uploaded_file </item>
+	    <item> msg_get_queue </item>
+	    <item> msg_receive </item>
+	    <item> msg_remove_queue </item>
+	    <item> msg_send </item>
+	    <item> msg_set_queue </item>
+	    <item> msg_stat_queue </item>
+	    <item> msession_connect </item>
+	    <item> msession_count </item>
+	    <item> msession_create </item>
+	    <item> msession_destroy </item>
+	    <item> msession_disconnect </item>
+	    <item> msession_find </item>
+	    <item> msession_get </item>
+	    <item> msession_get_array </item>
+	    <item> msession_getdata </item>
+	    <item> msession_inc </item>
+	    <item> msession_list </item>
+	    <item> msession_listvar </item>
+	    <item> msession_lock </item>
+	    <item> msession_plugin </item>
+	    <item> msession_randstr </item>
+	    <item> msession_set </item>
+	    <item> msession_set_array </item>
+	    <item> msession_setdata </item>
+	    <item> msession_timeout </item>
+	    <item> msession_uniq </item>
+	    <item> msession_unlock </item>
+	    <item> msql </item>
+	    <item> msql_affected_rows </item>
+	    <item> msql_close </item>
+	    <item> msql_connect </item>
+	    <item> msql_create_db </item>
+	    <item> msql_createdb </item>
+	    <item> msql_data_seek </item>
+	    <item> msql_dbname </item>
+	    <item> msql_drop_db </item>
+	    <item> msql_dropdb </item>
+	    <item> msql_error </item>
+	    <item> msql_fetch_array </item>
+	    <item> msql_fetch_field </item>
+	    <item> msql_fetch_object </item>
+	    <item> msql_fetch_row </item>
+	    <item> msql_field_seek </item>
+	    <item> msql_fieldflags </item>
+	    <item> msql_fieldlen </item>
+	    <item> msql_fieldname </item>
+	    <item> msql_fieldtable </item>
+	    <item> msql_fieldtype </item>
+	    <item> msql_free_result </item>
+	    <item> msql_freeresult </item>
+	    <item> msql_list_dbs </item>
+	    <item> msql_list_fields </item>
+	    <item> msql_list_tables </item>
+	    <item> msql_listdbs </item>
+	    <item> msql_listfields </item>
+	    <item> msql_listtables </item>
+	    <item> msql_num_fields </item>
+	    <item> msql_num_rows </item>
+	    <item> msql_numfields </item>
+	    <item> msql_numrows </item>
+	    <item> msql_pconnect </item>
+	    <item> msql_query </item>
+	    <item> msql_regcase </item>
+	    <item> msql_result </item>
+	    <item> msql_select_db </item>
+	    <item> msql_selectdb </item>
+	    <item> msql_tablename </item>
+	    <item> mssql_bind </item>
+	    <item> mssql_close </item>
+	    <item> mssql_connect </item>
+	    <item> mssql_data_seek </item>
+	    <item> mssql_execute </item>
+	    <item> mssql_fetch_array </item>
+	    <item> mssql_fetch_assoc </item>
+	    <item> mssql_fetch_batch </item>
+	    <item> mssql_fetch_field </item>
+	    <item> mssql_fetch_object </item>
+	    <item> mssql_fetch_row </item>
+	    <item> mssql_field_length </item>
+	    <item> mssql_field_name </item>
+	    <item> mssql_field_seek </item>
+	    <item> mssql_field_type </item>
+	    <item> mssql_free_result </item>
+	    <item> mssql_get_last_message </item>
+	    <item> mssql_guid_string </item>
+	    <item> mssql_init </item>
+	    <item> mssql_min_error_severity </item>
+	    <item> mssql_min_message_severity </item>
+	    <item> mssql_next_result </item>
+	    <item> mssql_num_fields </item>
+	    <item> mssql_num_rows </item>
+	    <item> mssql_pconnect </item>
+	    <item> mssql_query </item>
+	    <item> mssql_result </item>
+	    <item> mssql_rows_affected </item>
+	    <item> mssql_select_db </item>
+	    <item> mt_getrandmax </item>
+	    <item> mt_rand </item>
+	    <item> mt_srand </item>
+	    <item> muscat_close </item>
+	    <item> muscat_get </item>
+	    <item> muscat_give </item>
+	    <item> muscat_setup </item>
+	    <item> muscat_setup_net </item>
+	    <item> mysql </item>
+	    <item> mysql_affected_rows </item>
+	    <item> mysql_client_encoding </item>
+	    <item> mysql_change_user </item>
+	    <item> mysql_character_set_name </item>
+	    <item> mysql_close </item>
+	    <item> mysql_connect </item>
+	    <item> mysql_create_db </item>
+	    <item> mysql_data_seek </item>
+	    <item> mysql_db_name </item>
+	    <item> mysql_db_query </item>
+	    <item> mysql_dbname </item>
+	    <item> mysql_drop_db </item>
+	    <item> mysql_errno </item>
+	    <item> mysql_error </item>
+	    <item> mysql_escape_string </item>
+	    <item> mysql_fetch_array </item>
+	    <item> mysql_fetch_assoc </item>
+	    <item> mysql_fetch_field </item>
+	    <item> mysql_fetch_lengths </item>
+	    <item> mysql_fetch_object </item>
+	    <item> mysql_fetch_row </item>
+	    <item> mysql_field_flags </item>
+	    <item> mysql_field_len </item>
+	    <item> mysql_field_name </item>
+	    <item> mysql_field_seek </item>
+	    <item> mysql_field_table </item>
+	    <item> mysql_field_type </item>
+	    <item> mysql_fieldflags </item>
+	    <item> mysql_fieldlen </item>
+	    <item> mysql_fieldname </item>
+	    <item> mysql_fieldtable </item>
+	    <item> mysql_fieldtype </item>
+	    <item> mysql_free_result </item>
+	    <item> mysql_freeresult </item>
+	    <item> mysql_get_client_info </item>
+	    <item> mysql_get_host_info </item>
+	    <item> mysql_get_proto_info </item>
+	    <item> mysql_get_server_info </item>
+	    <item> mysql_info </item>
+	    <item> mysql_insert_id </item>
+	    <item> mysql_list_dbs </item>
+	    <item> mysql_list_fields </item>
+	    <item> mysql_list_processes </item>
+	    <item> mysql_list_tables </item>
+	    <item> mysql_listdbs </item>
+	    <item> mysql_listfields </item>
+	    <item> mysql_listtables </item>
+	    <item> mysql_num_fields </item>
+	    <item> mysql_num_rows </item>
+	    <item> mysql_numfields </item>
+	    <item> mysql_numrows </item>
+	    <item> mysql_pconnect </item>
+	    <item> mysql_ping </item>
+	    <item> mysql_query </item>
+	    <item> mysql_real_escape_string </item>
+	    <item> mysql_result </item>
+	    <item> mysql_select_db </item>
+	    <item> mysql_selectdb </item>
+	    <item> mysql_stat </item>
+	    <item> mysql_table_name </item>
+	    <item> mysql_tablename </item>
+	    <item> mysql_thread_id </item>
+	    <item> mysql_unbuffered_query </item>
+	    <item> mysqli_affected_rows </item>
+	    <item> mysqli_autocommit </item>
+	    <item> mysqli_bind_param </item>
+	    <item> mysqli_bind_result </item>
+	    <item> mysqli_change_user </item>
+	    <item> mysqli_character_set_name </item>
+	    <item> mysqli_client_encoding </item>
+	    <item> mysqli_close </item>
+	    <item> mysqli_commit </item>
+	    <item> mysqli_connect </item>
+	    <item> mysqli_connect_errno </item>
+	    <item> mysqli_connect_error </item>
+	    <item> mysqli_data_seek </item>
+	    <item> mysqli_debug </item>
+	    <item> mysqli_disable_reads_from_master </item>
+	    <item> mysqli_disable_rpl_parse </item>
+	    <item> mysqli_dump_debug_info </item>
+	    <item> mysqli_enable_reads_from_master </item>
+	    <item> mysqli_enable_rpl_parse </item>
+	    <item> mysqli_errno </item>
+	    <item> mysqli_error </item>
+	    <item> mysqli_escape_string </item>
+	    <item> mysqli_execute </item>
+	    <item> mysqli_fetch </item>
+	    <item> mysqli_fetch_array </item>
+	    <item> mysqli_fetch_assoc </item>
+	    <item> mysqli_fetch_field </item>
+	    <item> mysqli_fetch_field_direct </item>
+	    <item> mysqli_fetch_fields </item>
+	    <item> mysqli_fetch_lengths </item>
+	    <item> mysqli_fetch_object </item>
+	    <item> mysqli_fetch_row </item>
+	    <item> mysqli_field_count </item>
+	    <item> mysqli_field_seek </item>
+	    <item> mysqli_field_tell </item>
+	    <item> mysqli_free_result </item>
+	    <item> mysqli_get_client_info </item>
+	    <item> mysqli_get_client_version </item>
+	    <item> mysqli_get_host_info </item>
+	    <item> mysqli_get_metadata </item>
+	    <item> mysqli_get_proto_info </item>
+	    <item> mysqli_get_server_info </item>
+	    <item> mysqli_get_server_version </item>
+	    <item> mysqli_info </item>
+	    <item> mysqli_init </item>
+	    <item> mysqli_insert_id </item>
+	    <item> mysqli_kill </item>
+	    <item> mysqli_master_query </item>
+	    <item> mysqli_more_results </item>
+	    <item> mysqli_multi_query </item>
+	    <item> mysqli_next_result </item>
+	    <item> mysqli_num_fields </item>
+	    <item> mysqli_num_rows </item>
+	    <item> mysqli_options </item>
+	    <item> mysqli_param_count </item>
+	    <item> mysqli_ping </item>
+	    <item> mysqli_prepare </item>
+	    <item> mysqli_query </item>
+	    <item> mysqli_real_connect </item>
+	    <item> mysqli_real_escape_string </item>
+	    <item> mysqli_real_query </item>
+	    <item> mysqli_report </item>
+	    <item> mysqli_rollback </item>
+	    <item> mysqli_rpl_parse_enabled </item>
+	    <item> mysqli_rpl_probe </item>
+	    <item> mysqli_rpl_query_type </item>
+	    <item> mysqli_select_db </item>
+	    <item> mysqli_send_long_data </item>
+	    <item> mysqli_send_query </item>
+	    <item> mysqli_set_local_infile_default </item>
+	    <item> mysqli_set_local_infile_handler </item>
+	    <item> mysqli_set_opt </item>
+	    <item> mysqli_slave_query </item>
+	    <item> mysqli_sqlstate </item>
+	    <item> mysqli_ssl_set </item>
+	    <item> mysqli_stat </item>
+	    <item> mysqli_stmt_affected_rows </item>
+	    <item> mysqli_stmt_attr_get </item>
+	    <item> mysqli_stmt_attr_set </item>
+	    <item> mysqli_stmt_bind_param </item>
+	    <item> mysqli_stmt_bind_result </item>
+	    <item> mysqli_stmt_close </item>
+	    <item> mysqli_stmt_data_seek </item>
+	    <item> mysqli_stmt_errno </item>
+	    <item> mysqli_stmt_error </item>
+	    <item> mysqli_stmt_execute </item>
+	    <item> mysqli_stmt_fetch </item>
+	    <item> mysqli_stmt_field_count </item>
+	    <item> mysqli_stmt_free_result </item>
+	    <item> mysqli_stmt_init </item>
+	    <item> mysqli_stmt_insert_id </item>
+	    <item> mysqli_stmt_num_rows </item>
+	    <item> mysqli_stmt_param_count </item>
+	    <item> mysqli_stmt_prepare </item>
+	    <item> mysqli_stmt_reset </item>
+	    <item> mysqli_stmt_result_metadata </item>
+	    <item> mysqli_stmt_send_long_data </item>
+	    <item> mysqli_stmt_sqlstate </item>
+	    <item> mysqli_stmt_store_result </item>
+	    <item> mysqli_store_result </item>
+	    <item> mysqli_thread_id </item>
+	    <item> mysqli_thread_safe </item>
+	    <item> mysqli_use_result </item>
+	    <item> mysqli_warning_count </item>
+	    <item> natcasesort </item>
+	    <item> natsort </item>
+	    <item> ncurses_addch </item>
+	    <item> ncurses_addchnstr </item>
+	    <item> ncurses_addchstr </item>
+	    <item> ncurses_addnstr </item>
+	    <item> ncurses_addstr </item>
+	    <item> ncurses_assume_default_colors </item>
+	    <item> ncurses_attroff </item>
+	    <item> ncurses_attron </item>
+	    <item> ncurses_attrset </item>
+	    <item> ncurses_baudrate </item>
+	    <item> ncurses_beep </item>
+	    <item> ncurses_bkgd </item>
+	    <item> ncurses_bkgdset </item>
+	    <item> ncurses_border </item>
+	    <item> ncurses_bottom_panel </item>
+	    <item> ncurses_can_change_color </item>
+	    <item> ncurses_cbreak </item>
+	    <item> ncurses_clear </item>
+	    <item> ncurses_clrtobot </item>
+	    <item> ncurses_clrtoeol </item>
+	    <item> ncurses_color_content </item>
+	    <item> ncurses_color_set </item>
+	    <item> ncurses_curs_set </item>
+	    <item> ncurses_def_prog_mode </item>
+	    <item> ncurses_def_shell_mode </item>
+	    <item> ncurses_define_key </item>
+	    <item> ncurses_del_panel </item>
+	    <item> ncurses_delay_output </item>
+	    <item> ncurses_delch </item>
+	    <item> ncurses_deleteln </item>
+	    <item> ncurses_delwin </item>
+	    <item> ncurses_doupdate </item>
+	    <item> ncurses_echo </item>
+	    <item> ncurses_echochar </item>
+	    <item> ncurses_end </item>
+	    <item> ncurses_erase </item>
+	    <item> ncurses_erasechar </item>
+	    <item> ncurses_filter </item>
+	    <item> ncurses_flash </item>
+	    <item> ncurses_flushinp </item>
+	    <item> ncurses_getch </item>
+	    <item> ncurses_getmaxyx </item>
+	    <item> ncurses_getmouse </item>
+	    <item> ncurses_getyx </item>
+	    <item> ncurses_halfdelay </item>
+	    <item> ncurses_has_colors </item>
+	    <item> ncurses_has_ic </item>
+	    <item> ncurses_has_il </item>
+	    <item> ncurses_has_key </item>
+	    <item> ncurses_hide_panel </item>
+	    <item> ncurses_hline </item>
+	    <item> ncurses_inch </item>
+	    <item> ncurses_init </item>
+	    <item> ncurses_init_color </item>
+	    <item> ncurses_init_pair </item>
+	    <item> ncurses_insch </item>
+	    <item> ncurses_insdelln </item>
+	    <item> ncurses_insertln </item>
+	    <item> ncurses_insstr </item>
+	    <item> ncurses_instr </item>
+	    <item> ncurses_isendwin </item>
+	    <item> ncurses_keyok </item>
+	    <item> ncurses_keypad </item>
+	    <item> ncurses_killchar </item>
+	    <item> ncurses_longname </item>
+	    <item> ncurses_meta </item>
+	    <item> ncurses_mouse_trafo </item>
+	    <item> ncurses_mouseinterval </item>
+	    <item> ncurses_mousemask </item>
+	    <item> ncurses_move </item>
+	    <item> ncurses_move_panel </item>
+	    <item> ncurses_mvaddch </item>
+	    <item> ncurses_mvaddchnstr </item>
+	    <item> ncurses_mvaddchstr </item>
+	    <item> ncurses_mvaddnstr </item>
+	    <item> ncurses_mvaddstr </item>
+	    <item> ncurses_mvcur </item>
+	    <item> ncurses_mvdelch </item>
+	    <item> ncurses_mvgetch </item>
+	    <item> ncurses_mvhline </item>
+	    <item> ncurses_mvinch </item>
+	    <item> ncurses_mvvline </item>
+	    <item> ncurses_mvwaddstr </item>
+	    <item> ncurses_napms </item>
+	    <item> ncurses_new_panel </item>
+	    <item> ncurses_newpad </item>
+	    <item> ncurses_newwin </item>
+	    <item> ncurses_nl </item>
+	    <item> ncurses_nocbreak </item>
+	    <item> ncurses_noecho </item>
+	    <item> ncurses_nonl </item>
+	    <item> ncurses_noqiflush </item>
+	    <item> ncurses_noraw </item>
+	    <item> ncurses_pair_content </item>
+	    <item> ncurses_panel_above </item>
+	    <item> ncurses_panel_below </item>
+	    <item> ncurses_panel_window </item>
+	    <item> ncurses_pnoutrefresh </item>
+	    <item> ncurses_prefresh </item>
+	    <item> ncurses_putp </item>
+	    <item> ncurses_qiflush </item>
+	    <item> ncurses_raw </item>
+	    <item> ncurses_refresh </item>
+	    <item> ncurses_replace_panel </item>
+	    <item> ncurses_reset_prog_mode </item>
+	    <item> ncurses_reset_shell_mode </item>
+	    <item> ncurses_resetty </item>
+	    <item> ncurses_savetty </item>
+	    <item> ncurses_scr_dump </item>
+	    <item> ncurses_scr_init </item>
+	    <item> ncurses_scr_restore </item>
+	    <item> ncurses_scr_set </item>
+	    <item> ncurses_scrl </item>
+	    <item> ncurses_show_panel </item>
+	    <item> ncurses_slk_attr </item>
+	    <item> ncurses_slk_attroff </item>
+	    <item> ncurses_slk_attron </item>
+	    <item> ncurses_slk_attrset </item>
+	    <item> ncurses_slk_clear </item>
+	    <item> ncurses_slk_color </item>
+	    <item> ncurses_slk_init </item>
+	    <item> ncurses_slk_noutrefresh </item>
+	    <item> ncurses_slk_refresh </item>
+	    <item> ncurses_slk_restore </item>
+	    <item> ncurses_slk_set </item>
+	    <item> ncurses_slk_touch </item>
+	    <item> ncurses_standend </item>
+	    <item> ncurses_standout </item>
+	    <item> ncurses_start_color </item>
+	    <item> ncurses_termattrs </item>
+	    <item> ncurses_termname </item>
+	    <item> ncurses_timeout </item>
+	    <item> ncurses_top_panel </item>
+	    <item> ncurses_typeahead </item>
+	    <item> ncurses_ungetch </item>
+	    <item> ncurses_ungetmouse </item>
+	    <item> ncurses_update_panels </item>
+	    <item> ncurses_use_default_colors </item>
+	    <item> ncurses_use_env </item>
+	    <item> ncurses_use_extended_names </item>
+	    <item> ncurses_vidattr </item>
+	    <item> ncurses_vline </item>
+	    <item> ncurses_waddch </item>
+	    <item> ncurses_waddstr </item>
+	    <item> ncurses_wattroff </item>
+	    <item> ncurses_wattron </item>
+	    <item> ncurses_wattrset </item>
+	    <item> ncurses_wborder </item>
+	    <item> ncurses_wclear </item>
+	    <item> ncurses_wcolor_set </item>
+	    <item> ncurses_werase </item>
+	    <item> ncurses_wgetch </item>
+	    <item> ncurses_whline </item>
+	    <item> ncurses_wmouse_trafo </item>
+	    <item> ncurses_wmove </item>
+	    <item> ncurses_wnoutrefresh </item>
+	    <item> ncurses_wrefresh </item>
+	    <item> ncurses_wstandend </item>
+	    <item> ncurses_wstandout </item>
+	    <item> ncurses_wvline </item>
+	    <item> next </item>
+	    <item> ngettext </item>
+	    <item> nl2br </item>
+	    <item> nl_langinfo </item>
+	    <item> notes_body </item>
+	    <item> notes_copy_db </item>
+	    <item> notes_create_db </item>
+	    <item> notes_create_note </item>
+	    <item> notes_drop_db </item>
+	    <item> notes_find_note </item>
+	    <item> notes_header_info </item>
+	    <item> notes_list_msgs </item>
+	    <item> notes_mark_read </item>
+	    <item> notes_mark_unread </item>
+	    <item> notes_nav_create </item>
+	    <item> notes_search </item>
+	    <item> notes_unread </item>
+	    <item> notes_version </item>
+	    <item> number_format </item>
+	    <item> ob_clean </item>
+	    <item> ob_end_clean </item>
+	    <item> ob_end_flush </item>
+	    <item> ob_flush </item>
+	    <item> ob_get_clean </item>
+	    <item> ob_get_contents </item>
+	    <item> ob_get_flush </item>
+	    <item> ob_get_length </item>
+	    <item> ob_get_level </item>
+	    <item> ob_get_status </item>
+	    <item> ob_gzhandler </item>
+	    <item> ob_iconv_handler </item>
+	    <item> ob_implicit_flush </item>
+	    <item> ob_list_handlers </item>
+	    <item> ob_start </item>
+	    <item> ocibindbyname </item>
+	    <item> ocicancel </item>
+	    <item> ocicollappend </item>
+	    <item> ocicollassign </item>
+	    <item> ocicollassignelem </item>
+	    <item> ocicollgetelem </item>
+	    <item> ocicollmax </item>
+	    <item> ocicollsize </item>
+	    <item> ocicolltrim </item>
+	    <item> ocicolumnisnull </item>
+	    <item> ocicolumnname </item>
+	    <item> ocicolumnprecision </item>
+	    <item> ocicolumnscale </item>
+	    <item> ocicolumnsize </item>
+	    <item> ocicolumntype </item>
+	    <item> ocicolumntyperaw </item>
+	    <item> ocicommit </item>
+	    <item> ocidefinebyname </item>
+	    <item> ocierror </item>
+	    <item> ociexecute </item>
+	    <item> ocifetch </item>
+	    <item> ocifetchinto </item>
+	    <item> ocifetchstatement </item>
+	    <item> ocifreecollection </item>
+	    <item> ocifreecursor </item>
+	    <item> ocifreedesc </item>
+	    <item> ocifreestatement </item>
+	    <item> ociinternaldebug </item>
+	    <item> ociloadlob </item>
+	    <item> ocilogoff </item>
+	    <item> ocilogon </item>
+	    <item> ocinewcollection </item>
+	    <item> ocinewcursor </item>
+	    <item> ocinewdescriptor </item>
+	    <item> ocinlogon </item>
+	    <item> ocinumcols </item>
+	    <item> ociparse </item>
+	    <item> ociplogon </item>
+	    <item> ociresult </item>
+	    <item> ocirollback </item>
+	    <item> ocirowcount </item>
+	    <item> ocisavelob </item>
+	    <item> ocisavelobfile </item>
+	    <item> ociserverversion </item>
+	    <item> ocisetprefetch </item>
+	    <item> ocistatementtype </item>
+	    <item> ociwritelobtofile </item>
+	    <item> octdec </item>
+	    <item> odbc_autocommit </item>
+	    <item> odbc_binmode </item>
+	    <item> odbc_close </item>
+	    <item> odbc_close_all </item>
+	    <item> odbc_columnprivileges </item>
+	    <item> odbc_columns </item>
+	    <item> odbc_commit </item>
+	    <item> odbc_connect </item>
+	    <item> odbc_cursor </item>
+	    <item> odbc_data_source </item>
+	    <item> odbc_do </item>
+	    <item> odbc_error </item>
+	    <item> odbc_errormsg </item>
+	    <item> odbc_exec </item>
+	    <item> odbc_execute </item>
+	    <item> odbc_fetch_array </item>
+	    <item> odbc_fetch_into </item>
+	    <item> odbc_fetch_object </item>
+	    <item> odbc_fetch_row </item>
+	    <item> odbc_field_len </item>
+	    <item> odbc_field_name </item>
+	    <item> odbc_field_num </item>
+	    <item> odbc_field_precision </item>
+	    <item> odbc_field_scale </item>
+	    <item> odbc_field_type </item>
+	    <item> odbc_foreignkeys </item>
+	    <item> odbc_free_result </item>
+	    <item> odbc_gettypeinfo </item>
+	    <item> odbc_longreadlen </item>
+	    <item> odbc_next_result </item>
+	    <item> odbc_num_fields </item>
+	    <item> odbc_num_rows </item>
+	    <item> odbc_pconnect </item>
+	    <item> odbc_prepare </item>
+	    <item> odbc_primarykeys </item>
+	    <item> odbc_procedurecolumns </item>
+	    <item> odbc_procedures </item>
+	    <item> odbc_result </item>
+	    <item> odbc_result_all </item>
+	    <item> odbc_rollback </item>
+	    <item> odbc_setoption </item>
+	    <item> odbc_specialcolumns </item>
+	    <item> odbc_statistics </item>
+	    <item> odbc_tableprivileges </item>
+	    <item> odbc_tables </item>
+	    <item> opendir </item>
+	    <item> openlog </item>
+	    <item> openssl_csr_export </item>
+	    <item> openssl_csr_export_to_file </item>
+	    <item> openssl_csr_new </item>
+	    <item> openssl_csr_sign </item>
+	    <item> openssl_error_string </item>
+	    <item> openssl_free_key </item>
+	    <item> openssl_get_privatekey </item>
+	    <item> openssl_get_publickey </item>
+	    <item> openssl_open </item>
+	    <item> openssl_pkcs7_decrypt </item>
+	    <item> openssl_pkcs7_encrypt </item>
+	    <item> openssl_pkcs7_sign </item>
+	    <item> openssl_pkcs7_verify </item>
+	    <item> openssl_pkey_export </item>
+	    <item> openssl_pkey_export_to_file </item>
+	    <item> openssl_pkey_free </item>
+	    <item> openssl_pkey_get_private </item>
+	    <item> openssl_pkey_get_public </item>
+	    <item> openssl_pkey_new </item>
+	    <item> openssl_private_decrypt </item>
+	    <item> openssl_private_encrypt </item>
+	    <item> openssl_public_decrypt </item>
+	    <item> openssl_public_encrypt </item>
+	    <item> openssl_seal </item>
+	    <item> openssl_sign </item>
+	    <item> openssl_verify </item>
+	    <item> openssl_x509_check_private_key </item>
+	    <item> openssl_x509_checkpurpose </item>
+	    <item> openssl_x509_export </item>
+	    <item> openssl_x509_export_to_file </item>
+	    <item> openssl_x509_free </item>
+	    <item> openssl_x509_parse </item>
+	    <item> openssl_x509_read </item>
+	    <item> ora_bind </item>
+	    <item> ora_close </item>
+	    <item> ora_columnname </item>
+	    <item> ora_columnsize </item>
+	    <item> ora_columntype </item>
+	    <item> ora_commit </item>
+	    <item> ora_commitoff </item>
+	    <item> ora_commiton </item>
+	    <item> ora_do </item>
+	    <item> ora_error </item>
+	    <item> ora_errorcode </item>
+	    <item> ora_exec </item>
+	    <item> ora_fetch </item>
+	    <item> ora_fetch_into </item>
+	    <item> ora_getcolumn </item>
+	    <item> ora_logoff </item>
+	    <item> ora_logon </item>
+	    <item> ora_numcols </item>
+	    <item> ora_numrows </item>
+	    <item> ora_open </item>
+	    <item> ora_parse </item>
+	    <item> ora_plogon </item>
+	    <item> ora_rollback </item>
+	    <item> ord </item>
+	    <item> output_add_rewrite_var </item>
+	    <item> output_reset_rewrite_vars </item>
+	    <item> overload </item>
+	    <item> ovrimos_close </item>
+	    <item> ovrimos_commit </item>
+	    <item> ovrimos_connect </item>
+	    <item> ovrimos_cursor </item>
+	    <item> ovrimos_exec </item>
+	    <item> ovrimos_execute </item>
+	    <item> ovrimos_fetch_into </item>
+	    <item> ovrimos_fetch_row </item>
+	    <item> ovrimos_field_len </item>
+	    <item> ovrimos_field_name </item>
+	    <item> ovrimos_field_num </item>
+	    <item> ovrimos_field_type </item>
+	    <item> ovrimos_free_result </item>
+	    <item> ovrimos_longreadlen </item>
+	    <item> ovrimos_num_fields </item>
+	    <item> ovrimos_num_rows </item>
+	    <item> ovrimos_prepare </item>
+	    <item> ovrimos_result </item>
+	    <item> ovrimos_result_all </item>
+	    <item> ovrimos_rollback </item>
+	    <item> pack </item>
+	    <item> parse_ini_file </item>
+	    <item> parse_str </item>
+	    <item> parse_url </item>
+	    <item> passthru </item>
+	    <item> pathinfo </item>
+	    <item> pclose </item>
+	    <item> pcntl_alarm </item>
+	    <item> pcntl_exec </item>
+	    <item> pcntl_fork </item>
+	    <item> pcntl_getpriority </item>
+	    <item> pcntl_setpriority </item>
+	    <item> pcntl_signal </item>
+	    <item> pcntl_wait </item>
+	    <item> pcntl_waitpid </item>
+	    <item> pcntl_wexitstatus </item>
+	    <item> pcntl_wifexited </item>
+	    <item> pcntl_wifsignaled </item>
+	    <item> pcntl_wifstopped </item>
+	    <item> pcntl_wstopsig </item>
+	    <item> pcntl_wtermsig </item>
+	    <item> pdf_add_annotation </item>
+	    <item> pdf_add_bookmark </item>
+	    <item> pdf_add_launchlink </item>
+	    <item> pdf_add_locallink </item>
+	    <item> pdf_add_note </item>
+	    <item> pdf_add_outline </item>
+	    <item> pdf_add_pdflink </item>
+	    <item> pdf_add_thumbnail </item>
+	    <item> pdf_add_weblink </item>
+	    <item> pdf_arc </item>
+	    <item> pdf_arcn </item>
+	    <item> pdf_attach_file </item>
+	    <item> pdf_begin_page </item>
+	    <item> pdf_begin_pattern </item>
+	    <item> pdf_begin_template </item>
+	    <item> pdf_circle </item>
+	    <item> pdf_clip </item>
+	    <item> pdf_close </item>
+	    <item> pdf_close_image </item>
+	    <item> pdf_close_pdi </item>
+	    <item> pdf_close_pdi_page </item>
+	    <item> pdf_closepath </item>
+	    <item> pdf_closepath_fill_stroke </item>
+	    <item> pdf_closepath_stroke </item>
+	    <item> pdf_concat </item>
+	    <item> pdf_continue_text </item>
+	    <item> pdf_curveto </item>
+	    <item> pdf_delete </item>
+	    <item> pdf_end_page </item>
+	    <item> pdf_end_pattern </item>
+	    <item> pdf_end_template </item>
+	    <item> pdf_endpath </item>
+	    <item> pdf_fill </item>
+	    <item> pdf_fill_stroke </item>
+	    <item> pdf_findfont </item>
+	    <item> pdf_get_buffer </item>
+	    <item> pdf_get_font </item>
+	    <item> pdf_get_fontname </item>
+	    <item> pdf_get_fontsize </item>
+	    <item> pdf_get_image_height </item>
+	    <item> pdf_get_image_width </item>
+	    <item> pdf_get_majorversion </item>
+	    <item> pdf_get_minorversion </item>
+	    <item> pdf_get_parameter </item>
+	    <item> pdf_get_pdi_parameter </item>
+	    <item> pdf_get_pdi_value </item>
+	    <item> pdf_get_value </item>
+	    <item> pdf_initgraphics </item>
+	    <item> pdf_lineto </item>
+	    <item> pdf_makespotcolor </item>
+	    <item> pdf_moveto </item>
+	    <item> pdf_new </item>
+	    <item> pdf_open </item>
+	    <item> pdf_open_ccitt </item>
+	    <item> pdf_open_file </item>
+	    <item> pdf_open_gif </item>
+	    <item> pdf_open_image </item>
+	    <item> pdf_open_image_file </item>
+	    <item> pdf_open_jpeg </item>
+	    <item> pdf_open_memory_image </item>
+	    <item> pdf_open_pdi </item>
+	    <item> pdf_open_pdi_page </item>
+	    <item> pdf_open_png </item>
+	    <item> pdf_open_tiff </item>
+	    <item> pdf_place_image </item>
+	    <item> pdf_place_pdi_page </item>
+	    <item> pdf_rect </item>
+	    <item> pdf_restore </item>
+	    <item> pdf_rotate </item>
+	    <item> pdf_save </item>
+	    <item> pdf_scale </item>
+	    <item> pdf_set_border_color </item>
+	    <item> pdf_set_border_dash </item>
+	    <item> pdf_set_border_style </item>
+	    <item> pdf_set_char_spacing </item>
+	    <item> pdf_set_duration </item>
+	    <item> pdf_set_font </item>
+	    <item> pdf_set_horiz_scaling </item>
+	    <item> pdf_set_info </item>
+	    <item> pdf_set_info_author </item>
+	    <item> pdf_set_info_creator </item>
+	    <item> pdf_set_info_keywords </item>
+	    <item> pdf_set_info_subject </item>
+	    <item> pdf_set_info_title </item>
+	    <item> pdf_set_leading </item>
+	    <item> pdf_set_parameter </item>
+	    <item> pdf_set_text_pos </item>
+	    <item> pdf_set_text_rendering </item>
+	    <item> pdf_set_text_rise </item>
+	    <item> pdf_set_transition </item>
+	    <item> pdf_set_value </item>
+	    <item> pdf_set_word_spacing </item>
+	    <item> pdf_setcolor </item>
+	    <item> pdf_setdash </item>
+	    <item> pdf_setflat </item>
+	    <item> pdf_setfont </item>
+	    <item> pdf_setgray </item>
+	    <item> pdf_setgray_fill </item>
+	    <item> pdf_setgray_stroke </item>
+	    <item> pdf_setlinecap </item>
+	    <item> pdf_setlinejoin </item>
+	    <item> pdf_setlinewidth </item>
+	    <item> pdf_setmatrix </item>
+	    <item> pdf_setmiterlimit </item>
+	    <item> pdf_setpolydash </item>
+	    <item> pdf_setrgbcolor </item>
+	    <item> pdf_setrgbcolor_fill </item>
+	    <item> pdf_setrgbcolor_stroke </item>
+	    <item> pdf_show </item>
+	    <item> pdf_show_boxed </item>
+	    <item> pdf_show_xy </item>
+	    <item> pdf_skew </item>
+	    <item> pdf_stringwidth </item>
+	    <item> pdf_stroke </item>
+	    <item> pdf_translate </item>
+	    <item> pfpro_cleanup </item>
+	    <item> pfpro_init </item>
+	    <item> pfpro_process </item>
+	    <item> pfpro_process_raw </item>
+	    <item> pfpro_version </item>
+	    <item> pfsockopen </item>
+	    <item> pg_affected_rows </item>
+	    <item> pg_cancel_query </item>
+	    <item> pg_client_encoding </item>
+	    <item> pg_clientencoding </item>
+	    <item> pg_close </item>
+	    <item> pg_cmdtuples </item>
+	    <item> pg_connect </item>
+	    <item> pg_connection_busy </item>
+	    <item> pg_connection_reset </item>
+	    <item> pg_connection_status </item>
+	    <item> pg_convert </item>
+	    <item> pg_copy_from </item>
+	    <item> pg_copy_to </item>
+	    <item> pg_dbname </item>
+	    <item> pg_delete </item>
+	    <item> pg_end_copy </item>
+	    <item> pg_errormessage </item>
+	    <item> pg_escape_bytea </item>
+	    <item> pg_escape_string </item>
+	    <item> pg_exec </item>
+	    <item> pg_fetch_all </item>
+	    <item> pg_fetch_array </item>
+	    <item> pg_fetch_assoc </item>
+	    <item> pg_fetch_object </item>
+	    <item> pg_fetch_result </item>
+	    <item> pg_fetch_row </item>
+	    <item> pg_field_is_null </item>
+	    <item> pg_field_name </item>
+	    <item> pg_field_num </item>
+	    <item> pg_field_prtlen </item>
+	    <item> pg_field_size </item>
+	    <item> pg_field_type </item>
+	    <item> pg_fieldisnull </item>
+	    <item> pg_fieldname </item>
+	    <item> pg_fieldnum </item>
+	    <item> pg_fieldprtlen </item>
+	    <item> pg_fieldsize </item>
+	    <item> pg_fieldtype </item>
+	    <item> pg_free_result </item>
+	    <item> pg_freeresult </item>
+	    <item> pg_get_notify </item>
+	    <item> pg_get_pid </item>
+	    <item> pg_get_result </item>
+	    <item> pg_getlastoid </item>
+	    <item> pg_host </item>
+	    <item> pg_insert </item>
+	    <item> pg_last_error </item>
+	    <item> pg_last_notice </item>
+	    <item> pg_last_oid </item>
+	    <item> pg_lo_close </item>
+	    <item> pg_lo_create </item>
+	    <item> pg_lo_export </item>
+	    <item> pg_lo_import </item>
+	    <item> pg_lo_open </item>
+	    <item> pg_lo_read </item>
+	    <item> pg_lo_read_all </item>
+	    <item> pg_lo_seek </item>
+	    <item> pg_lo_tell </item>
+	    <item> pg_lo_unlink </item>
+	    <item> pg_lo_write </item>
+	    <item> pg_loclose </item>
+	    <item> pg_locreate </item>
+	    <item> pg_loexport </item>
+	    <item> pg_loimport </item>
+	    <item> pg_loopen </item>
+	    <item> pg_loread </item>
+	    <item> pg_loreadall </item>
+	    <item> pg_lounlink </item>
+	    <item> pg_lowrite </item>
+	    <item> pg_meta_data </item>
+	    <item> pg_num_fields </item>
+	    <item> pg_num_rows </item>
+	    <item> pg_numfields </item>
+	    <item> pg_numrows </item>
+	    <item> pg_options </item>
+	    <item> pg_parameter_status </item>
+	    <item> pg_pconnect </item>
+	    <item> pg_ping </item>
+	    <item> pg_port </item>
+	    <item> pg_put_line </item>
+	    <item> pg_query </item>
+	    <item> pg_result </item>
+	    <item> pg_result_error </item>
+	    <item> pg_result_seek </item>
+	    <item> pg_result_status </item>
+	    <item> pg_select </item>
+	    <item> pg_send_query </item>
+	    <item> pg_set_client_encoding </item>
+	    <item> pg_setclientencoding </item>
+	    <item> pg_trace </item>
+	    <item> pg_tty </item>
+	    <item> pg_unescape_bytea </item>
+	    <item> pg_untrace </item>
+	    <item> pg_update </item>
+	    <item> pg_version </item>
+	    <item> php_check_syntax </item>
+	    <item> php_egg_logo_guid </item>
+	    <item> php_ini_scanned_files </item>
+	    <item> php_logo_guid </item>
+	    <item> php_real_logo_guid </item>
+	    <item> php_sapi_name </item>
+	    <item> php_strip_whitespace </item>
+	    <item> php_uname </item>
+	    <item> phpcredits </item>
+	    <item> phpinfo </item>
+	    <item> phpversion </item>
+	    <item> pi </item>
+	    <item> png2wbmp </item>
+	    <item> popen </item>
+	    <item> pos </item>
+	    <item> posix_ctermid </item>
+	    <item> posix_errno </item>
+	    <item> posix_get_last_error </item>
+	    <item> posix_getcwd </item>
+	    <item> posix_getegid </item>
+	    <item> posix_geteuid </item>
+	    <item> posix_getgid </item>
+	    <item> posix_getgrgid </item>
+	    <item> posix_getgrnam </item>
+	    <item> posix_getgroups </item>
+	    <item> posix_getlogin </item>
+	    <item> posix_getpgid </item>
+	    <item> posix_getpgrp </item>
+	    <item> posix_getpid </item>
+	    <item> posix_getppid </item>
+	    <item> posix_getpwnam </item>
+	    <item> posix_getpwuid </item>
+	    <item> posix_getrlimit </item>
+	    <item> posix_getsid </item>
+	    <item> posix_getuid </item>
+	    <item> posix_isatty </item>
+	    <item> posix_kill </item>
+	    <item> posix_mkfifo </item>
+	    <item> posix_setegid </item>
+	    <item> posix_seteuid </item>
+	    <item> posix_setgid </item>
+	    <item> posix_setpgid </item>
+	    <item> posix_setsid </item>
+	    <item> posix_setuid </item>
+	    <item> posix_strerror </item>
+	    <item> posix_times </item>
+	    <item> posix_ttyname </item>
+	    <item> posix_uname </item>
+	    <item> pow </item>
+	    <item> preg_grep </item>
+	    <item> preg_match </item>
+	    <item> preg_match_all </item>
+	    <item> preg_quote </item>
+	    <item> preg_replace </item>
+	    <item> preg_replace_callback </item>
+	    <item> preg_split </item>
+	    <item> prev </item>
+	    <item> print </item>
+	    <item> print_r </item>
+	    <item> printer_abort </item>
+	    <item> printer_close </item>
+	    <item> printer_create_brush </item>
+	    <item> printer_create_dc </item>
+	    <item> printer_create_font </item>
+	    <item> printer_create_pen </item>
+	    <item> printer_delete_brush </item>
+	    <item> printer_delete_dc </item>
+	    <item> printer_delete_font </item>
+	    <item> printer_delete_pen </item>
+	    <item> printer_draw_bmp </item>
+	    <item> printer_draw_chord </item>
+	    <item> printer_draw_elipse </item>
+	    <item> printer_draw_line </item>
+	    <item> printer_draw_pie </item>
+	    <item> printer_draw_rectangle </item>
+	    <item> printer_draw_roundrect </item>
+	    <item> printer_draw_text </item>
+	    <item> printer_end_doc </item>
+	    <item> printer_end_page </item>
+	    <item> printer_get_option </item>
+	    <item> printer_list </item>
+	    <item> printer_logical_fontheight </item>
+	    <item> printer_open </item>
+	    <item> printer_select_brush </item>
+	    <item> printer_select_font </item>
+	    <item> printer_select_pen </item>
+	    <item> printer_set_option </item>
+	    <item> printer_start_doc </item>
+	    <item> printer_start_page </item>
+	    <item> printer_write </item>
+	    <item> printf </item>
+	    <item> proc_close </item>
+	    <item> proc_get_status </item>
+	    <item> proc_nice </item>
+	    <item> proc_open </item>
+	    <item> proc_terminate </item>
+	    <item> pspell_add_to_personal </item>
+	    <item> pspell_add_to_session </item>
+	    <item> pspell_check </item>
+	    <item> pspell_clear_session </item>
+	    <item> pspell_config_create </item>
+	    <item> pspell_config_ignore </item>
+	    <item> pspell_config_mode </item>
+	    <item> pspell_config_personal </item>
+	    <item> pspell_config_repl </item>
+	    <item> pspell_config_runtogether </item>
+	    <item> pspell_config_save_repl </item>
+	    <item> pspell_new </item>
+	    <item> pspell_new_config </item>
+	    <item> pspell_new_personal </item>
+	    <item> pspell_save_wordlist </item>
+	    <item> pspell_store_replacement </item>
+	    <item> pspell_suggest </item>
+	    <item> putenv </item>
+	    <item> qdom_error </item>
+	    <item> qdom_tree </item>
+	    <item> quoted_printable_decode </item>
+	    <item> quotemeta </item>
+	    <item> rad2deg </item>
+	    <item> rand </item>
+	    <item> range </item>
+	    <item> rawurldecode </item>
+	    <item> rawurlencode </item>
+	    <item> read_exif_data </item>
+	    <item> readdir </item>
+	    <item> readfile </item>
+	    <item> readgzfile </item>
+	    <item> readline </item>
+	    <item> readline_add_history </item>
+	    <item> readline_clear_history </item>
+	    <item> readline_completion_function </item>
+	    <item> readline_info </item>
+	    <item> readline_list_history </item>
+	    <item> readline_read_history </item>
+	    <item> readline_write_history </item>
+	    <item> readlink </item>
+	    <item> realpath </item>
+	    <item> recode </item>
+	    <item> recode_file </item>
+	    <item> recode_string </item>
+	    <item> register_shutdown_function </item>
+	    <item> register_tick_function </item>
+	    <item> rename </item>
+	    <item> require </item>
+	    <item> require_once </item>
+	    <item> reset </item>
+	    <item> restore_error_handler </item>
+	    <item> restore_exception_handler </item>
+	    <item> restore_include_path </item>
+	    <item> rewind </item>
+	    <item> rewinddir </item>
+	    <item> rmdir </item>
+	    <item> round </item>
+	    <item> rsort </item>
+	    <item> rtrim </item>
+	    <item> scandir </item>
+	    <item> sem_acquire </item>
+	    <item> sem_get </item>
+	    <item> sem_release </item>
+	    <item> sem_remove </item>
+	    <item> serialize </item>
+	    <item> sesam_affected_rows </item>
+	    <item> sesam_commit </item>
+	    <item> sesam_connect </item>
+	    <item> sesam_diagnostic </item>
+	    <item> sesam_disconnect </item>
+	    <item> sesam_errormsg </item>
+	    <item> sesam_execimm </item>
+	    <item> sesam_fetch_array </item>
+	    <item> sesam_fetch_result </item>
+	    <item> sesam_fetch_row </item>
+	    <item> sesam_field_array </item>
+	    <item> sesam_field_name </item>
+	    <item> sesam_free_result </item>
+	    <item> sesam_num_fields </item>
+	    <item> sesam_query </item>
+	    <item> sesam_rollback </item>
+	    <item> sesam_seek_row </item>
+	    <item> sesam_settransaction </item>
+	    <item> session_cache_expire </item>
+	    <item> session_cache_limiter </item>
+	    <item> session_commit </item>
+	    <item> session_decode </item>
+	    <item> session_destroy </item>
+	    <item> session_encode </item>
+	    <item> session_get_cookie_params </item>
+	    <item> session_id </item>
+	    <item> session_is_registered </item>
+	    <item> session_module_name </item>
+	    <item> session_name </item>
+	    <item> session_regenerate_id </item>
+	    <item> session_register </item>
+	    <item> session_save_path </item>
+	    <item> session_set_cookie_params </item>
+	    <item> session_set_save_handler </item>
+	    <item> session_start </item>
+	    <item> session_unregister </item>
+	    <item> session_unset </item>
+	    <item> session_write_close </item>
+	    <item> set_error_handler </item>
+	    <item> set_exception_handler </item>
+	    <item> set_file_buffer </item>
+	    <item> set_include_path </item>
+	    <item> set_magic_quotes_runtime </item>
+	    <item> set_socket_blocking </item>
+	    <item> set_time_limit </item>
+	    <item> setcookie </item>
+	    <item> setlocale </item>
+	    <item> setrawcookie </item>
+	    <item> settype </item>
+	    <item> sha1 </item>
+	    <item> sha1_file </item>
+	    <item> shell_exec </item>
+	    <item> shm_attach </item>
+	    <item> shm_detach </item>
+	    <item> shm_get_var </item>
+	    <item> shm_put_var </item>
+	    <item> shm_remove </item>
+	    <item> shm_remove_var </item>
+	    <item> shmop_close </item>
+	    <item> shmop_delete </item>
+	    <item> shmop_open </item>
+	    <item> shmop_read </item>
+	    <item> shmop_size </item>
+	    <item> shmop_write </item>
+	    <item> show_source </item>
+	    <item> shuffle </item>
+	    <item> similar_text </item>
+	    <item> simplexml_load_file </item>
+	    <item> simplexml_load_string </item>
+	    <item> sin </item>
+	    <item> sinh </item>
+	    <item> sizeof </item>
+	    <item> sleep </item>
+	    <item> snmp3_get </item>
+	    <item> snmp3_getnext </item>
+	    <item> snmp3_real_walk </item>
+	    <item> snmp3_set </item>
+	    <item> snmp3_walk </item>
+	    <item> snmp_get_quick_print </item>
+	    <item> snmp_get_valueretrieval </item>
+	    <item> snmp_read_mib </item>
+	    <item> snmp_set_enum_print </item>
+	    <item> snmp_set_oid_numeric_print </item>
+	    <item> snmp_set_quick_print </item>
+	    <item> snmp_set_valueretrieval </item>
+	    <item> snmpget </item>
+	    <item> snmpgetnext </item>
+	    <item> snmprealwalk </item>
+	    <item> snmpset </item>
+	    <item> snmpwalk </item>
+	    <item> snmpwalkoid </item>
+	    <item> socket_accept </item>
+	    <item> socket_bind </item>
+	    <item> socket_clear_error </item>
+	    <item> socket_close </item>
+	    <item> socket_connect </item>
+	    <item> socket_create </item>
+	    <item> socket_create_listen </item>
+	    <item> socket_create_pair </item>
+	    <item> socket_get_option </item>
+	    <item> socket_get_status </item>
+	    <item> socket_getopt </item>
+	    <item> socket_getpeername </item>
+	    <item> socket_getsockname </item>
+	    <item> socket_iovec_add </item>
+	    <item> socket_iovec_alloc </item>
+	    <item> socket_iovec_delete </item>
+	    <item> socket_iovec_fetch </item>
+	    <item> socket_iovec_free </item>
+	    <item> socket_iovec_set </item>
+	    <item> socket_last_error </item>
+	    <item> socket_listen </item>
+	    <item> socket_read </item>
+	    <item> socket_readv </item>
+	    <item> socket_recv </item>
+	    <item> socket_recvfrom </item>
+	    <item> socket_recvmsg </item>
+	    <item> socket_select </item>
+	    <item> socket_send </item>
+	    <item> socket_sendmsg </item>
+	    <item> socket_sendto </item>
+	    <item> socket_set_block </item>
+	    <item> socket_set_blocking </item>
+	    <item> socket_set_nonblock </item>
+	    <item> socket_set_option </item>
+	    <item> socket_set_timeout </item>
+	    <item> socket_setopt </item>
+	    <item> socket_shutdown </item>
+	    <item> socket_strerror </item>
+	    <item> socket_write </item>
+	    <item> socket_writev </item>
+	    <item> sort </item>
+	    <item> soundex </item>
+	    <item> spl_classes </item>
+	    <item> split </item>
+	    <item> spliti </item>
+	    <item> sprintf </item>
+	    <item> sql_regcase </item>
+	    <item> sqlite_array_query </item>
+	    <item> sqlite_busy_timeout </item>
+	    <item> sqlite_changes </item>
+	    <item> sqlite_close </item>
+	    <item> sqlite_column </item>
+	    <item> sqlite_create_aggregate </item>
+	    <item> sqlite_create_function </item>
+	    <item> sqlite_current </item>
+	    <item> sqlite_error_string </item>
+	    <item> sqlite_escape_string </item>
+	    <item> sqlite_exec </item>
+	    <item> sqlite_factory </item>
+	    <item> sqlite_fetch_all </item>
+	    <item> sqlite_fetch_array </item>
+	    <item> sqlite_fetch_column_types </item>
+	    <item> sqlite_fetch_object </item>
+	    <item> sqlite_fetch_single </item>
+	    <item> sqlite_fetch_string </item>
+	    <item> sqlite_field_name </item>
+	    <item> sqlite_has_more </item>
+	    <item> sqlite_has_prev </item>
+	    <item> sqlite_last_error </item>
+	    <item> sqlite_last_insert_rowid </item>
+	    <item> sqlite_libencoding </item>
+	    <item> sqlite_libversion </item>
+	    <item> sqlite_next </item>
+	    <item> sqlite_num_fields </item>
+	    <item> sqlite_num_rows </item>
+	    <item> sqlite_open </item>
+	    <item> sqlite_popen </item>
+	    <item> sqlite_prev </item>
+	    <item> sqlite_query </item>
+	    <item> sqlite_rewind </item>
+	    <item> sqlite_seek </item>
+	    <item> sqlite_single_query </item>
+	    <item> sqlite_udf_decode_binary </item>
+	    <item> sqlite_udf_encode_binary </item>
+	    <item> sqlite_unbuffered_query </item>
+	    <item> sqlite_valid </item>
+	    <item> sqrt </item>
+	    <item> srand </item>
+	    <item> sscanf </item>
+	    <item> stat </item>
+	    <item> str_ireplace </item>
+	    <item> str_pad </item>
+	    <item> str_repeat </item>
+	    <item> str_replace </item>
+	    <item> str_rot13 </item>
+	    <item> str_shuffle </item>
+	    <item> str_split </item>
+	    <item> str_word_count </item>
+	    <item> strcasecmp </item>
+	    <item> strchr </item>
+	    <item> strcmp </item>
+	    <item> strcoll </item>
+	    <item> strcspn </item>
+	    <item> stream_bucket_append </item>
+	    <item> stream_bucket_make_writeable </item>
+	    <item> stream_bucket_new </item>
+	    <item> stream_bucket_prepend </item>
+	    <item> stream_context_create </item>
+	    <item> stream_context_get_options </item>
+	    <item> stream_context_set_option </item>
+	    <item> stream_context_set_params </item>
+	    <item> stream_copy_to_stream </item>
+	    <item> stream_filter_append </item>
+	    <item> stream_filter_prepend </item>
+	    <item> stream_filter_register </item>
+	    <item> stream_get_contents </item>
+	    <item> stream_get_filters </item>
+	    <item> stream_get_line </item>
+	    <item> stream_get_meta_data </item>
+	    <item> stream_get_transports </item>
+	    <item> stream_get_wrappers </item>
+	    <item> stream_register_wrapper </item>
+	    <item> stream_select </item>
+	    <item> stream_set_blocking </item>
+	    <item> stream_set_timeout </item>
+	    <item> stream_set_write_buffer </item>
+	    <item> stream_socket_accept </item>
+	    <item> stream_socket_client </item>
+	    <item> stream_socket_get_name </item>
+	    <item> stream_socket_recvfrom </item>
+	    <item> stream_socket_sendto </item>
+	    <item> stream_socket_server </item>
+	    <item> stream_wrapper_register </item>
+	    <item> strftime </item>
+	    <item> strip_tags </item>
+	    <item> stripcslashes </item>
+	    <item> stripos </item>
+	    <item> stripslashes </item>
+	    <item> stristr </item>
+	    <item> strlen </item>
+	    <item> strnatcasecmp </item>
+	    <item> strnatcmp </item>
+	    <item> strncasecmp </item>
+	    <item> strncmp </item>
+	    <item> strpbrk </item>
+	    <item> strpos </item>
+	    <item> strrchr </item>
+	    <item> strrev </item>
+	    <item> strripos </item>
+	    <item> strrpos </item>
+	    <item> strspn </item>
+	    <item> strstr </item>
+	    <item> strtok </item>
+	    <item> strtolower </item>
+	    <item> strtotime </item>
+	    <item> strtoupper </item>
+	    <item> strtr </item>
+	    <item> strval </item>
+	    <item> substr </item>
+	    <item> substr_compare </item>
+	    <item> substr_count </item>
+	    <item> substr_replace </item>
+	    <item> swf_actiongeturl </item>
+	    <item> swf_actiongotoframe </item>
+	    <item> swf_actiongotolabel </item>
+	    <item> swf_actionnextframe </item>
+	    <item> swf_actionplay </item>
+	    <item> swf_actionprevframe </item>
+	    <item> swf_actionsettarget </item>
+	    <item> swf_actionstop </item>
+	    <item> swf_actiontogglequality </item>
+	    <item> swf_actionwaitforframe </item>
+	    <item> swf_addbuttonrecord </item>
+	    <item> swf_addcolor </item>
+	    <item> swf_closefile </item>
+	    <item> swf_definebitmap </item>
+	    <item> swf_definefont </item>
+	    <item> swf_defineline </item>
+	    <item> swf_definepoly </item>
+	    <item> swf_definerect </item>
+	    <item> swf_definetext </item>
+	    <item> swf_endbutton </item>
+	    <item> swf_enddoaction </item>
+	    <item> swf_endshape </item>
+	    <item> swf_endsymbol </item>
+	    <item> swf_fontsize </item>
+	    <item> swf_fontslant </item>
+	    <item> swf_fonttracking </item>
+	    <item> swf_getbitmapinfo </item>
+	    <item> swf_getfontinfo </item>
+	    <item> swf_getframe </item>
+	    <item> swf_labelframe </item>
+	    <item> swf_lookat </item>
+	    <item> swf_modifyobject </item>
+	    <item> swf_mulcolor </item>
+	    <item> swf_nextid </item>
+	    <item> swf_oncondition </item>
+	    <item> swf_openfile </item>
+	    <item> swf_ortho </item>
+	    <item> swf_ortho2 </item>
+	    <item> swf_perspective </item>
+	    <item> swf_placeobject </item>
+	    <item> swf_polarview </item>
+	    <item> swf_popmatrix </item>
+	    <item> swf_posround </item>
+	    <item> swf_pushmatrix </item>
+	    <item> swf_removeobject </item>
+	    <item> swf_rotate </item>
+	    <item> swf_scale </item>
+	    <item> swf_setfont </item>
+	    <item> swf_setframe </item>
+	    <item> swf_shapearc </item>
+	    <item> swf_shapecurveto </item>
+	    <item> swf_shapecurveto3 </item>
+	    <item> swf_shapefillbitmapclip </item>
+	    <item> swf_shapefillbitmaptile </item>
+	    <item> swf_shapefilloff </item>
+	    <item> swf_shapefillsolid </item>
+	    <item> swf_shapelinesolid </item>
+	    <item> swf_shapelineto </item>
+	    <item> swf_shapemoveto </item>
+	    <item> swf_showframe </item>
+	    <item> swf_startbutton </item>
+	    <item> swf_startdoaction </item>
+	    <item> swf_startshape </item>
+	    <item> swf_startsymbol </item>
+	    <item> swf_textwidth </item>
+	    <item> swf_translate </item>
+	    <item> swf_viewport </item>
+	    <item> swfaction </item>
+	    <item> swfbitmap </item>
+	    <item> swfbitmap.getheight </item>
+	    <item> swfbitmap.getwidth </item>
+	    <item> swfbutton </item>
+	    <item> swfbutton.addaction </item>
+	    <item> swfbutton.addshape </item>
+	    <item> swfbutton.setaction </item>
+	    <item> swfbutton.setdown </item>
+	    <item> swfbutton.sethit </item>
+	    <item> swfbutton.setover </item>
+	    <item> swfbutton.setup </item>
+	    <item> swfbutton_keypress </item>
+	    <item> swfdisplayitem </item>
+	    <item> swfdisplayitem.addcolor </item>
+	    <item> swfdisplayitem.move </item>
+	    <item> swfdisplayitem.moveto </item>
+	    <item> swfdisplayitem.multcolor </item>
+	    <item> swfdisplayitem.remove </item>
+	    <item> swfdisplayitem.rotate </item>
+	    <item> swfdisplayitem.rotateto </item>
+	    <item> swfdisplayitem.scale </item>
+	    <item> swfdisplayitem.scaleto </item>
+	    <item> swfdisplayitem.setdepth </item>
+	    <item> swfdisplayitem.setname </item>
+	    <item> swfdisplayitem.setratio </item>
+	    <item> swfdisplayitem.skewx </item>
+	    <item> swfdisplayitem.skewxto </item>
+	    <item> swfdisplayitem.skewy </item>
+	    <item> swfdisplayitem.skewyto </item>
+	    <item> swffill </item>
+	    <item> swffill.moveto </item>
+	    <item> swffill.rotateto </item>
+	    <item> swffill.scaleto </item>
+	    <item> swffill.skewxto </item>
+	    <item> swffill.skewyto </item>
+	    <item> swffont </item>
+	    <item> swffont.getwidth </item>
+	    <item> swfgradient </item>
+	    <item> swfgradient.addentry </item>
+	    <item> swfmorph </item>
+	    <item> swfmorph.getshape1 </item>
+	    <item> swfmorph.getshape2 </item>
+	    <item> swfmovie </item>
+	    <item> swfmovie.add </item>
+	    <item> swfmovie.nextframe </item>
+	    <item> swfmovie.output </item>
+	    <item> swfmovie.remove </item>
+	    <item> swfmovie.save </item>
+	    <item> swfmovie.setbackground </item>
+	    <item> swfmovie.setdimension </item>
+	    <item> swfmovie.setframes </item>
+	    <item> swfmovie.setrate </item>
+	    <item> swfmovie.streammp3 </item>
+	    <item> swfshape </item>
+	    <item> swfshape.addfill </item>
+	    <item> swfshape.drawcurve </item>
+	    <item> swfshape.drawcurveto </item>
+	    <item> swfshape.drawline </item>
+	    <item> swfshape.drawlineto </item>
+	    <item> swfshape.movepen </item>
+	    <item> swfshape.movepento </item>
+	    <item> swfshape.setleftfill </item>
+	    <item> swfshape.setline </item>
+	    <item> swfshape.setrightfill </item>
+	    <item> swfsprite </item>
+	    <item> swfsprite.add </item>
+	    <item> swfsprite.nextframe </item>
+	    <item> swfsprite.remove </item>
+	    <item> swfsprite.setframes </item>
+	    <item> swftext </item>
+	    <item> swftext.addstring </item>
+	    <item> swftext.getwidth </item>
+	    <item> swftext.moveto </item>
+	    <item> swftext.setcolor </item>
+	    <item> swftext.setfont </item>
+	    <item> swftext.setheight </item>
+	    <item> swftext.setspacing </item>
+	    <item> swftextfield </item>
+	    <item> swftextfield.addstring </item>
+	    <item> swftextfield.align </item>
+	    <item> swftextfield.setbounds </item>
+	    <item> swftextfield.setcolor </item>
+	    <item> swftextfield.setfont </item>
+	    <item> swftextfield.setheight </item>
+	    <item> swftextfield.setindentation </item>
+	    <item> swftextfield.setleftmargin </item>
+	    <item> swftextfield.setlinespacing </item>
+	    <item> swftextfield.setmargins </item>
+	    <item> swftextfield.setname </item>
+	    <item> swftextfield.setrightmargin </item>
+	    <item> sybase_affected_rows </item>
+	    <item> sybase_close </item>
+	    <item> sybase_connect </item>
+	    <item> sybase_data_seek </item>
+	    <item> sybase_fetch_array </item>
+	    <item> sybase_fetch_field </item>
+	    <item> sybase_fetch_object </item>
+	    <item> sybase_fetch_row </item>
+	    <item> sybase_field_seek </item>
+	    <item> sybase_free_result </item>
+	    <item> sybase_get_last_message </item>
+	    <item> sybase_min_client_severity </item>
+	    <item> sybase_min_error_severity </item>
+	    <item> sybase_min_message_severity </item>
+	    <item> sybase_min_server_severity </item>
+	    <item> sybase_num_fields </item>
+	    <item> sybase_num_rows </item>
+	    <item> sybase_pconnect </item>
+	    <item> sybase_query </item>
+	    <item> sybase_result </item>
+	    <item> sybase_select_db </item>
+	    <item> symlink </item>
+	    <item> syslog </item>
+	    <item> system </item>
+	    <item> tan </item>
+	    <item> tanh </item>
+	    <item> tempnam </item>
+	    <item> textdomain </item>
+	    <item> time </item>
+	    <item> time_nanosleep </item>
+	    <item> tmpfile </item>
+	    <item> token_get_all </item>
+	    <item> token_name </item>
+	    <item> touch </item>
+	    <item> trigger_error </item>
+	    <item> trim </item>
+	    <item> uasort </item>
+	    <item> ucfirst </item>
+	    <item> ucwords </item>
+	    <item> udm_add_search_limit </item>
+	    <item> udm_alloc_agent </item>
+	    <item> udm_api_version </item>
+	    <item> udm_cat_list </item>
+	    <item> udm_cat_path </item>
+	    <item> udm_check_charset </item>
+	    <item> udm_check_stored </item>
+	    <item> udm_clear_search_limits </item>
+	    <item> udm_close_stored </item>
+	    <item> udm_crc32 </item>
+	    <item> udm_errno </item>
+	    <item> udm_error </item>
+	    <item> udm_find </item>
+	    <item> udm_free_agent </item>
+	    <item> udm_free_ispell_data </item>
+	    <item> udm_free_res </item>
+	    <item> udm_get_doc_count </item>
+	    <item> udm_get_res_field </item>
+	    <item> udm_get_res_param </item>
+	    <item> udm_load_ispell_data </item>
+	    <item> udm_open_stored </item>
+	    <item> udm_set_agent_param </item>
+	    <item> uksort </item>
+	    <item> umask </item>
+	    <item> uniqid </item>
+	    <item> unixtojd </item>
+	    <item> unlink </item>
+	    <item> unpack </item>
+	    <item> unregister_tick_function </item>
+	    <item> unserialize </item>
+	    <item> unset </item>
+	    <item> urldecode </item>
+	    <item> urlencode </item>
+	    <item> use_soap_error_handler </item>
+	    <item> user_error </item>
+	    <item> usleep </item>
+	    <item> usort </item>
+	    <item> utf8_decode </item>
+	    <item> utf8_encode </item>
+	    <item> var_dump </item>
+	    <item> var_export </item>
+	    <item> variant </item>
+	    <item> version_compare </item>
+	    <item> vfprintf </item>
+	    <item> virtual </item>
+	    <item> vpopmail_add_alias_domain </item>
+	    <item> vpopmail_add_alias_domain_ex </item>
+	    <item> vpopmail_add_domain </item>
+	    <item> vpopmail_add_domain_ex </item>
+	    <item> vpopmail_add_user </item>
+	    <item> vpopmail_alias_add </item>
+	    <item> vpopmail_alias_del </item>
+	    <item> vpopmail_alias_del_domain </item>
+	    <item> vpopmail_alias_get </item>
+	    <item> vpopmail_alias_get_all </item>
+	    <item> vpopmail_auth_user </item>
+	    <item> vpopmail_del_domain </item>
+	    <item> vpopmail_del_domain_ex </item>
+	    <item> vpopmail_del_user </item>
+	    <item> vpopmail_error </item>
+	    <item> vpopmail_passwd </item>
+	    <item> vpopmail_set_user_quota </item>
+	    <item> vprintf </item>
+	    <item> vsprintf </item>
+	    <item> w32api_deftype </item>
+	    <item> w32api_init_dtype </item>
+	    <item> w32api_invoke_function </item>
+	    <item> w32api_register_function </item>
+	    <item> w32api_set_call_method </item>
+	    <item> wddx_add_vars </item>
+	    <item> wddx_deserialize </item>
+	    <item> wddx_packet_end </item>
+	    <item> wddx_packet_start </item>
+	    <item> wddx_serialize_value </item>
+	    <item> wddx_serialize_vars </item>
+	    <item> wordwrap </item>
+	    <item> xml_error_string </item>
+	    <item> xml_get_current_byte_index </item>
+	    <item> xml_get_current_column_number </item>
+	    <item> xml_get_current_line_number </item>
+	    <item> xml_get_error_code </item>
+	    <item> xml_parse </item>
+	    <item> xml_parse_into_struct </item>
+	    <item> xml_parser_create </item>
+	    <item> xml_parser_create_ns </item>
+	    <item> xml_parser_free </item>
+	    <item> xml_parser_get_option </item>
+	    <item> xml_parser_set_option </item>
+	    <item> xml_set_character_data_handler </item>
+	    <item> xml_set_default_handler </item>
+	    <item> xml_set_element_handler </item>
+	    <item> xml_set_end_namespace_decl_handler </item>
+	    <item> xml_set_external_entity_ref_handler </item>
+	    <item> xml_set_notation_decl_handler </item>
+	    <item> xml_set_object </item>
+	    <item> xml_set_processing_instruction_handler </item>
+	    <item> xml_set_start_namespace_decl_handler </item>
+	    <item> xml_set_unparsed_entity_decl_handler </item>
+	    <item> xmldoc </item>
+	    <item> xmldocfile </item>
+	    <item> xmlrpc_decode </item>
+	    <item> xmlrpc_decode_request </item>
+	    <item> xmlrpc_encode </item>
+	    <item> xmlrpc_encode_request </item>
+	    <item> xmlrpc_get_type </item>
+	    <item> xmlrpc_is_fault </item>
+	    <item> xmlrpc_parse_method_descriptions </item>
+	    <item> xmlrpc_server_add_introspection_data </item>
+	    <item> xmlrpc_server_call_method </item>
+	    <item> xmlrpc_server_create </item>
+	    <item> xmlrpc_server_destroy </item>
+	    <item> xmlrpc_server_register_introspection_callback </item>
+	    <item> xmlrpc_server_register_method </item>
+	    <item> xmlrpc_set_type </item>
+	    <item> xmltree </item>
+	    <item> xpath_eval </item>
+	    <item> xpath_eval_expression </item>
+	    <item> xpath_new_context </item>
+	    <item> xptr_eval </item>
+	    <item> xptr_new_context </item>
+	    <item> xslt_create </item>
+	    <item> xslt_errno </item>
+	    <item> xslt_error </item>
+	    <item> xslt_free </item>
+	    <item> xslt_process </item>
+	    <item> xslt_set_base </item>
+	    <item> xslt_set_encoding </item>
+	    <item> xslt_set_error_handler </item>
+	    <item> xslt_set_log </item>
+	    <item> xslt_set_sax_handler </item>
+	    <item> xslt_set_sax_handlers </item>
+	    <item> xslt_set_scheme_handler </item>
+	    <item> xslt_set_scheme_handlers </item>
+	    <item> yaz_addinfo </item>
+	    <item> yaz_ccl_conf </item>
+	    <item> yaz_ccl_parse </item>
+	    <item> yaz_close </item>
+	    <item> yaz_connect </item>
+	    <item> yaz_database </item>
+	    <item> yaz_element </item>
+	    <item> yaz_errno </item>
+	    <item> yaz_error </item>
+	    <item> yaz_hits </item>
+	    <item> yaz_itemorder </item>
+	    <item> yaz_present </item>
+	    <item> yaz_range </item>
+	    <item> yaz_record </item>
+	    <item> yaz_scan </item>
+	    <item> yaz_scan_result </item>
+	    <item> yaz_search </item>
+	    <item> yaz_sort </item>
+	    <item> yaz_syntax </item>
+	    <item> yaz_wait </item>
+	    <item> yp_all </item>
+	    <item> yp_cat </item>
+	    <item> yp_err_string </item>
+	    <item> yp_errno </item>
+	    <item> yp_first </item>
+	    <item> yp_get_default_domain </item>
+	    <item> yp_master </item>
+	    <item> yp_match </item>
+	    <item> yp_next </item>
+	    <item> yp_order </item>
+	    <item> zend_logo_guid </item>
+	    <item> zend_version </item>
+	    <item> zip_close </item>
+	    <item> zip_entry_close </item>
+	    <item> zip_entry_compressedsize </item>
+	    <item> zip_entry_compressionmethod </item>
+	    <item> zip_entry_filesize </item>
+	    <item> zip_entry_name </item>
+	    <item> zip_entry_open </item>
+	    <item> zip_entry_read </item>
+	    <item> zip_open </item>
+	    <item> zip_read </item>
+	    <item> zlib_get_coding_type </item>
+    </list>
+    <contexts>
+      <context name="start" lineEndContext="#stay" attribute="Normal Text">
+          <RegExpr context="phpsource" attribute="Keyword" String="&lt;\?(?:=|php)?" beginRegion="php" />
+        <StringDetect attribute="Keyword" context="#pop" String="?&gt;" endRegion="php" />
+      </context>
+      <context name="braceregion" lineEndContext="#stay" attribute="Normal Text">
+        <IncludeRules context="phpsource"/>
+        <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="Brace1" />
+      </context>
+      <context name="phpsource" attribute="PHP Text" lineEndContext="#stay">
+        <DetectSpaces />
+        <!-- WORKAROUND for bug #143022 / missing feature #103257 -->
+        <StringDetect attribute="Keyword" context="#pop" String="?&gt;" endRegion="Brace1" lookAhead="true" />
+        <DetectChar attribute="Comment" context="onelinecomment" char="#" />
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="onelinecomment" char="/" char1="/" />
+        <Detect2Chars attribute="Comment" context="twolinecomment" char="/" char1="&#42;" beginRegion="Comment"/>
+        <keyword attribute="Control Structures" context="#stay" String="control structures" />
+        <keyword attribute="Keyword" context="#stay" String="keywords" />
+        <keyword attribute="Function" context="#stay" String="functions" />
+        <keyword attribute="Special method" context="#stay" String="special_methods" />
+        <DetectIdentifier />
+        <DetectChar attribute="String" context="doblequotestring" char="&quot;" />
+        <DetectChar attribute="String" context="backquotestring" char="`" />
+        <DetectChar attribute="String" context="singlequotestring" char="&#39;" />
+        <RegExpr attribute="Backslash Code" context="heredoc" String="&lt;&lt;&lt;([A-Za-z_][A-Za-z0-9_]*)" />
+        <RegExpr attribute="Variable" context="#stay" String="\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*" />
+        <RegExpr attribute="String" context="#stay" String="[0123456789]*\.\.\.[0123456789]*" />
+        <HlCOct attribute="Octal" context="#stay" />
+        <HlCHex attribute="Hex" context="#stay" />
+        <Float attribute="Float" context="#stay" />
+        <Int attribute="Decimal" context="#stay" />
+        <DetectChar attribute="Normal Text" context="braceregion" char="{" beginRegion="Brace1" />
+        <AnyChar attribute="Other" context="#stay" String=";():,[]" />
+      </context>
+      <context name="onelinecomment" attribute="Comment" lineEndContext="#pop">
+        <StringDetect attribute="Keyword" context="#pop" lookAhead="true" String="?&gt;" />
+      </context>
+      <context name="twolinecomment" attribute="Comment" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment" />
+      </context>
+      <context name="doublebackquotestringcommon" attribute="String" lineEndContext="#stay">
+<!-- Common rules for double quoted strings and backticks (execution operator) URL: http://de3.php.net/manual/en/language.types.string.php#language.types.string.syntax.double -->
+        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="\" />
+        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="n" />
+        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="r" />
+        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="t" />
+        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="$" />
+        <RegExpr attribute="Backslash Code" context="#stay" String="\\[0-7]{1,3}" />
+        <RegExpr attribute="Backslash Code" context="#stay" String="\\x[0-9A-Fa-f]{1,2}" />
+        <RegExpr attribute="Variable" context="#stay" String="\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*" />
+        <RegExpr attribute="Variable" context="#stay" String="\$\{[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*\}" />
+        <RegExpr attribute="Variable" context="#stay" String="\{\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[([0-9]*|&quot;[^&quot;]*&quot;)|'[^']*'|\])*(->[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*(\[([0-9]*|&quot;[a-zA-Z_]*&quot;)|'[a-zA-Z_]*'|\])*)*\}" />
+      </context>
+      <context name="backquotestring" attribute="String" lineEndContext="#stay">
+        <IncludeRules context="doublebackquotestringcommon"/>
+        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="`" />
+        <DetectChar attribute="String" context="#pop" char="`" />
+      </context>
+      <context name="doblequotestring" attribute="String" lineEndContext="#stay">
+        <IncludeRules context="doublebackquotestringcommon"/>
+        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="&quot;" />
+        <DetectChar attribute="String" context="#pop" char="&quot;" />
+      </context>
+      <context name="singlequotestring" attribute="String" lineEndContext="#stay">
+        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="'"/>
+        <Detect2Chars attribute="Backslash Code" context="#stay" char="\" char1="\"/>
+        <DetectChar attribute="String" context="#pop" char="'" />
+      </context>
+      <context name="heredoc" attribute="String" lineEndContext="#stay" dynamic="true">
+        <RegExpr attribute="Backslash Code" context="#pop" String="^%1;?$" dynamic="true" />
+        <RegExpr attribute="Variable" context="#stay" String="\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*" />
+        <RegExpr attribute="Variable" context="#stay" String="\$\{[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*\}" />
+        <RegExpr attribute="Variable" context="#stay" String="\{\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[([0-9]*|&quot;[a-zA-Z_]*&quot;)|'[a-zA-Z_]*'|\])*(->[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\[[a-zA-Z0-9_]*\])*(\[([0-9]*|&quot;[a-zA-Z_]*&quot;)|'[a-zA-Z_]*'|\])*)*\}" />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal" />
+      <itemData name="PHP Text" defStyleNum="dsNormal" />
+      <itemData name="Keyword" defStyleNum="dsKeyword" />
+      <itemData name="Function" defStyleNum="dsFunction" />
+      <itemData name="Special method" defStyleNum="dsFunction" />
+      <itemData name="Decimal" defStyleNum="dsDecVal" />
+      <itemData name="Octal" defStyleNum="dsBaseN" />
+      <itemData name="Hex" defStyleNum="dsBaseN" />
+      <itemData name="Float" defStyleNum="dsFloat" />
+      <itemData name="String" defStyleNum="dsString" />
+      <itemData name="Comment" defStyleNum="dsComment" />
+      <itemData name="Variable" defStyleNum="dsKeyword" color="#5555FF" selColor="#ffffff" bold="0" italic="0" />
+      <itemData name="Control Structures" defStyleNum="dsKeyword" color="#A1A100" selColor="#ffffff" bold="0" italic="0" />
+      <itemData name="Backslash Code" defStyleNum="dsKeyword" color="#0F0F8F" selColor="#ffffff" bold="1" italic="0" />
+      <itemData name="Other" defStyleNum="dsOthers" />
+
+      <itemData name="HTML Tag" defStyleNum="dsKeyword" color="#0F0000" selColor="#ffffff" bold="1" italic="0" />
+      <itemData name="HTML Comment" defStyleNum="dsComment" />
+      <itemData name="Identifier" defStyleNum="dsOthers" />
+      <itemData name="Types" defStyleNum="dsDataType" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="//" />
+      <comment name="multiLine" start="/*" end="*/" />
+    </comments>
+    <keywords casesensitive="0" weakDeliminator=""/>
+  </general>
+</language>
diff --git a/xml/postscript.xml b/xml/postscript.xml
new file mode 100644
--- /dev/null
+++ b/xml/postscript.xml
@@ -0,0 +1,434 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="PostScript" version="1.01" kateversion="2.1" section="Markup" extensions="*.ps;*.ai;*.eps" mimetype="application/postscript">
+<highlighting>
+	<list name="keywords">
+		<item> abs </item>
+		<item> add </item>
+		<item> aload </item>
+		<item> anchorsearch </item>
+		<item> and </item>
+		<item> arc </item>
+		<item> arcn </item>
+		<item> arct </item>
+		<item> arcto </item>
+		<item> array </item>
+		<item> ashow </item>
+		<item> astore </item>
+		<item> awidthshow </item>
+		<item> begin </item>
+		<item> bind </item>
+		<item> bitshift </item>
+		<item> ceiling </item>
+		<item> charpath </item>
+		<item> clear </item>
+		<item> cleartomark </item>
+		<item> clip </item>
+		<item> clippath </item>
+		<item> closepath </item>
+		<item> concat </item>
+		<item> concatmatrix </item>
+		<item> copy </item>
+		<item> count </item>
+		<item> counttomark </item>
+		<item> currentcmykcolor </item>
+		<item> currentdash </item>
+		<item> currentdict </item>
+		<item> currentfile </item>
+		<item> currentfont </item>
+		<item> currentgray </item>
+		<item> currentgstate </item>
+		<item> currenthsbcolor </item>
+		<item> currentlinecap </item>
+		<item> currentlinejoin </item>
+		<item> currentlinewidth </item>
+		<item> currentmatrix </item>
+		<item> currentpoint </item>
+		<item> currentrgbcolor </item>
+		<item> currentshared </item>
+		<item> curveto </item>
+		<item> cvi </item>
+		<item> cvlit </item>
+		<item> cvn </item>
+		<item> cvr </item>
+		<item> cvrs </item>
+		<item> cvs </item>
+		<item> cvx </item>
+		<item> def </item>
+		<item> defineusername </item>
+		<item> dict </item>
+		<item> div </item>
+		<item> dtransform </item>
+		<item> dup </item>
+		<item> end </item>
+		<item> eoclip </item>
+		<item> eofill </item>
+		<item> eoviewclip </item>
+		<item> eq </item>
+		<item> exch </item>
+		<item> exec </item>
+		<item> exit </item>
+		<item> file </item>
+		<item> fill </item>
+		<item> findfont </item>
+		<item> flattenpath </item>
+		<item> floor </item>
+		<item> flush </item>
+		<item> flushfile </item>
+		<item> for </item>
+		<item> forall </item>
+		<item> ge </item>
+		<item> get </item>
+		<item> getinterval </item>
+		<item> grestore </item>
+		<item> gsave </item>
+		<item> gstate </item>
+		<item> gt </item>
+		<item> identmatrix </item>
+		<item> idiv </item>
+		<item> idtransform </item>
+		<item> if </item>
+		<item> ifelse </item>
+		<item> image </item>
+		<item> imagemask </item>
+		<item> index </item>
+		<item> ineofill </item>
+		<item> infill </item>
+		<item> initviewclip </item>
+		<item> inueofill </item>
+		<item> inufill </item>
+		<item> invertmatrix </item>
+		<item> itransform </item>
+		<item> known </item>
+		<item> le </item>
+		<item> length </item>
+		<item> lineto </item>
+		<item> load </item>
+		<item> loop </item>
+		<item> lt </item>
+		<item> makefont </item>
+		<item> matrix </item>
+		<item> maxlength </item>
+		<item> mod </item>
+		<item> moveto </item>
+		<item> mul </item>
+		<item> ne </item>
+		<item> neg </item>
+		<item> newpath </item>
+		<item> not </item>
+		<item> null </item>
+		<item> or </item>
+		<item> pathbbox </item>
+		<item> pathforall </item>
+		<item> pop </item>
+		<item> print </item>
+		<item> printobject </item>
+		<item> put </item>
+		<item> putinterval </item>
+		<item> rcurveto </item>
+		<item> read </item>
+		<item> readhexstring </item>
+		<item> readline </item>
+		<item> readstring </item>
+		<item> rectclip </item>
+		<item> rectfill </item>
+		<item> rectstroke </item>
+		<item> rectviewclip </item>
+		<item> repeat </item>
+		<item> restore </item>
+		<item> rlineto </item>
+		<item> rmoveto </item>
+		<item> roll </item>
+		<item> rotate </item>
+		<item> round </item>
+		<item> save </item>
+		<item> scale </item>
+		<item> scalefont </item>
+		<item> search </item>
+		<item> selectfont </item>
+		<item> setbbox </item>
+		<item> setcachedevice </item>
+		<item> setcachedevice2 </item>
+		<item> setcharwidth </item>
+		<item> setcmykcolor </item>
+		<item> setdash </item>
+		<item> setfont </item>
+		<item> setgray </item>
+		<item> setgstate </item>
+		<item> sethsbcolor </item>
+		<item> setlinecap </item>
+		<item> setlinejoin </item>
+		<item> setlinewidth </item>
+		<item> setmatrix </item>
+		<item> setrgbcolor </item>
+		<item> setshared </item>
+		<item> shareddict </item>
+		<item> show </item>
+		<item> showpage </item>
+		<item> stop </item>
+		<item> stopped </item>
+		<item> store </item>
+		<item> string </item>
+		<item> stringwidth </item>
+		<item> stroke </item>
+		<item> strokepath </item>
+		<item> sub </item>
+		<item> systemdict </item>
+		<item> token </item>
+		<item> transform </item>
+		<item> translate </item>
+		<item> truncate </item>
+		<item> type </item>
+		<item> uappend </item>
+		<item> ucache </item>
+		<item> ueofill </item>
+		<item> ufill </item>
+		<item> undef </item>
+		<item> upath </item>
+		<item> userdict </item>
+		<item> ustroke </item>
+		<item> viewclip </item>
+		<item> viewclippath </item>
+		<item> where </item>
+		<item> widthshow </item>
+		<item> write </item>
+		<item> writehexstring </item>
+		<item> writeobject </item>
+		<item> writestring </item>
+		<item> wtranslation </item>
+		<item> xor </item>
+		<item> xshow </item>
+		<item> xyshow </item>
+		<item> yshow </item>
+		<item> FontDirectory </item>
+		<item> SharedFontDirectory </item>
+		<item> Courier </item>
+		<item> Courier-Bold </item>
+		<item> Courier-BoldOblique </item>
+		<item> Courier-Oblique </item>
+		<item> Helvetica </item>
+		<item> Helvetica-Bold </item>
+		<item> Helvetica-BoldOblique </item>
+		<item> Helvetica-Oblique </item>
+		<item> Symbol </item>
+		<item> Times-Bold </item>
+		<item> Times-BoldItalic </item>
+		<item> Times-Italic </item>
+		<item> Times-Roman </item>
+		<item> execuserobject </item>
+		<item> currentcolor </item>
+		<item> currentcolorspace </item>
+		<item> currentglobal </item>
+		<item> execform </item>
+		<item> filter </item>
+		<item> findresource </item>
+		<item> globaldict </item>
+		<item> makepattern </item>
+		<item> setcolor </item>
+		<item> setcolorspace </item>
+		<item> setglobal </item>
+		<item> setpagedevice </item>
+		<item> setpattern </item>
+		<item> ISOLatin1Encoding </item>
+		<item> StandardEncoding </item>
+		<item> atan </item>
+		<item> banddevice </item>
+		<item> bytesavailable </item>
+		<item> cachestatus </item>
+		<item> closefile </item>
+		<item> colorimage </item>
+		<item> condition </item>
+		<item> copypage </item>
+		<item> cos </item>
+		<item> countdictstack </item>
+		<item> countexecstack </item>
+		<item> cshow </item>
+		<item> currentblackgeneration </item>
+		<item> currentcacheparams </item>
+		<item> currentcolorscreen </item>
+		<item> currentcolortransfer </item>
+		<item> currentcontext </item>
+		<item> currentflat </item>
+		<item> currenthalftone </item>
+		<item> currenthalftonephase </item>
+		<item> currentmiterlimit </item>
+		<item> currentobjectformat </item>
+		<item> currentpacking </item>
+		<item> currentscreen </item>
+		<item> currentstrokeadjust </item>
+		<item> currenttransfer </item>
+		<item> currentundercolorremoval </item>
+		<item> defaultmatrix </item>
+		<item> definefont </item>
+		<item> deletefile </item>
+		<item> detach </item>
+		<item> deviceinfo </item>
+		<item> dictstack </item>
+		<item> echo </item>
+		<item> erasepage </item>
+		<item> errordict </item>
+		<item> execstack </item>
+		<item> executeonly </item>
+		<item> exp </item>
+		<item> false </item>
+		<item> filenameforall </item>
+		<item> fileposition </item>
+		<item> fork </item>
+		<item> framedevice </item>
+		<item> grestoreall </item>
+		<item> handleerror </item>
+		<item> initclip </item>
+		<item> initgraphics </item>
+		<item> initmatrix </item>
+		<item> instroke </item>
+		<item> inustroke </item>
+		<item> join </item>
+		<item> kshow </item>
+		<item> ln </item>
+		<item> lock </item>
+		<item> log </item>
+		<item> mark </item>
+		<item> monitor </item>
+		<item> noaccess </item>
+		<item> notify </item>
+		<item> nulldevice </item>
+		<item> packedarray </item>
+		<item> quit </item>
+		<item> rand </item>
+		<item> rcheck </item>
+		<item> readonly </item>
+		<item> realtime </item>
+		<item> renamefile </item>
+		<item> renderbands </item>
+		<item> resetfile </item>
+		<item> reversepath </item>
+		<item> rootfont </item>
+		<item> rrand </item>
+		<item> run </item>
+		<item> scheck </item>
+		<item> setblackgeneration </item>
+		<item> setcachelimit </item>
+		<item> setcacheparams </item>
+		<item> setcolorscreen </item>
+		<item> setcolortransfer </item>
+		<item> setfileposition </item>
+		<item> setflat </item>
+		<item> sethalftone </item>
+		<item> sethalftonephase </item>
+		<item> setmiterlimit </item>
+		<item> setobjectformat </item>
+		<item> setpacking </item>
+		<item> setscreen </item>
+		<item> setstrokeadjust </item>
+		<item> settransfer </item>
+		<item> setucacheparams </item>
+		<item> setundercolorremoval </item>
+		<item> sin </item>
+		<item> sqrt </item>
+		<item> srand </item>
+		<item> stack </item>
+		<item> status </item>
+		<item> statusdict </item>
+		<item> true </item>
+		<item> ucachestatus </item>
+		<item> undefinefont </item>
+		<item> usertime </item>
+		<item> ustrokepath </item>
+		<item> version </item>
+		<item> vmreclaim </item>
+		<item> vmstatus </item>
+		<item> wait </item>
+		<item> wcheck </item>
+		<item> xcheck </item>
+		<item> yield </item>
+		<item> defineuserobject </item>
+		<item> undefineuserobject </item>
+		<item> UserObjects </item>
+		<item> cleardictstack </item>
+		<item> setvmthreshold </item>
+		<item> currentcolorrendering </item>
+		<item> currentdevparams </item>
+		<item> currentoverprint </item>
+		<item> currentpagedevice </item>
+		<item> currentsystemparams </item>
+		<item> currentuserparams </item>
+		<item> defineresource </item>
+		<item> findencoding </item>
+		<item> gcheck </item>
+		<item> glyphshow </item>
+		<item> languagelevel </item>
+		<item> product </item>
+		<item> pstack </item>
+		<item> resourceforall </item>
+		<item> resourcestatus </item>
+		<item> revision </item>
+		<item> serialnumber </item>
+		<item> setcolorrendering </item>
+		<item> setdevparams </item>
+		<item> setoverprint </item>
+		<item> setsystemparams </item>
+		<item> setuserparams </item>
+		<item> startjob </item>
+		<item> undefineresource </item>
+		<item> GlobalFontDirectory </item>
+		<item> ASCII85Decode </item>
+		<item> ASCII85Encode </item>
+		<item> ASCIIHexDecode </item>
+		<item> ASCIIHexEncode </item>
+		<item> CCITTFaxDecode </item>
+		<item> CCITTFaxEncode </item>
+		<item> DCTDecode </item>
+		<item> DCTEncode </item>
+		<item> LZWDecode </item>
+		<item> LZWEncode </item>
+		<item> NullEncode </item>
+		<item> RunLengthDecode </item>
+		<item> RunLengthEncode </item>
+		<item> SubFileDecode </item>
+		<item> CIEBasedA </item>
+		<item> CIEBasedABC </item>
+		<item> DeviceCMYK </item>
+		<item> DeviceGray </item>
+		<item> DeviceRGB </item>
+		<item> Indexed </item>
+		<item> Pattern </item>
+		<item> Separation </item>
+		<item> CIEBasedDEF </item>
+		<item> CIEBasedDEFG </item>
+		<item> DeviceN </item>
+	</list>
+
+	<contexts>
+		<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+			<keyword attribute="Keyword" context="#stay" String="keywords"/>
+			<Detect2Chars attribute="Header" context="Header" char="%" char1="!"/>
+			<DetectChar attribute="Comment" context="Comment" char="%"/>
+			<Float attribute="Float" context="#stay"/>
+			<Int attribute="Decimal" context="#stay"/>
+		        <DetectChar attribute="String" context="String" char="("/>
+			<RegExpr attribute="Data Type" context="#stay" String="\/{1,2}[^\s\(\)\{\}\[\]%/]*"/>
+		</context>
+		<context attribute="Comment" lineEndContext="#pop" name="Comment"/>
+		<context attribute="Header" lineEndContext="#pop" name="Header"/>
+		<context attribute="String" lineEndContext="#stay" name="String">
+			<DetectChar attribute="String" context="#pop" char=")" />
+		</context>
+	</contexts>
+	<itemDatas>
+		<itemData name="Normal Text" defStyleNum="dsNormal"/>
+		<itemData name="Keyword" defStyleNum="dsKeyword"/>
+		<itemData name="Comment" defStyleNum="dsComment"/>
+		<itemData name="Header" defStyleNum="dsOthers"/>
+		<itemData name="Float" defStyleNum="dsFloat"/>
+		<itemData name="Decimal" defStyleNum="dsDecVal"/>
+		<itemData name="String" defStyleNum="dsString"/>
+		<itemData name="Data Type" defStyleNum="dsDataType"/>
+	</itemDatas>
+</highlighting>
+<general>
+	<comments>
+		<comment name="singleLine" start="%" />
+	</comments>
+	<keywords casesensitive="0" />
+</general>
+</language>
diff --git a/xml/prolog.xml b/xml/prolog.xml
new file mode 100644
--- /dev/null
+++ b/xml/prolog.xml
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="Prolog" version="1.04" kateversion="2.1" section="Sources" extensions="*.prolog" mimetype="text/x-prolog">
+    <highlighting>
+        <list name="keywordl">
+            <item> abstract </item>
+            <item> align </item>
+            <item> as </item>
+            <item> and </item>
+            <item> class </item>
+            <item> clauses </item>
+            <item> constants </item>
+            <item> database </item>
+            <item> determ </item>
+            <item> domains </item>
+            <item> elsedef </item>
+            <item> endclass </item>
+            <item> enddef </item>
+            <item> erroneous </item>
+            <item> facts </item>
+            <item> failure </item>
+            <item> global </item>
+            <item> goal </item>
+            <item> if </item>
+            <item> ifdef </item>
+            <item> ifndef </item>
+            <item> implement </item>
+            <item> include </item>
+            <item> language </item>
+            <item> multi </item>
+            <item> nocopy </item>
+            <item> nondeterm </item>
+            <item> object </item>
+            <item> or </item>
+            <item> procedure </item>
+            <item> protected </item>
+            <item> predicates </item>
+            <item> reference </item>
+            <item> single </item>
+            <item> static </item>
+            <item> struct </item>
+            <item> this </item>
+        </list>
+
+        <list name="keywordu">
+            <item> ABSTRACT </item>
+            <item> ALIGN </item>
+            <item> AS </item>
+            <item> AND </item>
+            <item> CLASS </item>
+            <item> CLAUSES </item>
+            <item> CONSTANTS </item>
+            <item> DATABASE </item>
+            <item> DETERM </item>
+            <item> DOMAINS </item>
+            <item> ELSEDEF </item>
+            <item> ENDCLASS </item>
+            <item> ENDDEF </item>
+            <item> ERRONEOUS </item>
+            <item> FACTS </item>
+            <item> FAILURE </item>
+            <item> GLOBAL </item>
+            <item> GOAL </item>
+            <item> IF </item>
+            <item> IFDEF </item>
+            <item> IFNDEF </item>
+            <item> IMPLEMENT </item>
+            <item> INCLUDE </item>
+            <item> LANGUAGE </item>
+            <item> MULTI </item>
+            <item> NOCOPY </item>
+            <item> NONDETERM </item>
+            <item> OBJECT </item>
+            <item> OR </item>
+            <item> PROCEDURE </item>
+            <item> PROTECTED </item>
+            <item> PREDICATES </item>
+            <item> REFERENCE </item>
+            <item> SINGLE </item>
+            <item> STATIC </item>
+            <item> STRUCT </item>
+            <item> THIS </item>
+        </list>
+
+
+        <list name="special">
+            <item> assert </item>
+            <item> asserta </item>
+            <item> assertz </item>
+            <item> bound </item>
+            <item> chain_inserta </item>
+            <item> chain_insertafter </item>
+            <item> chain_insertz </item>
+            <item> chain_terms </item>
+            <item> consult </item>
+            <item> db_btrees </item>
+            <item> db_chains </item>
+            <item> fail </item>
+            <item> findall </item>
+            <item> format </item>
+            <item> free </item>
+            <item> msgrecv </item>
+            <item> msgsend </item>
+            <item> nl </item>
+            <item> not </item>
+            <item> readterm </item>
+            <item> ref_term </item>
+            <item> retract </item>
+            <item> retractall </item>
+            <item> save </item>
+            <item> term_bin </item>
+            <item> term_replace </item>
+            <item> term_str </item>
+            <item> trap </item>
+            <item> write </item>
+            <item> writef </item>
+        </list>
+
+        <list name="compiler">
+            <item> bgidriver </item>
+            <item> bgifont </item>
+            <item> check_determ </item>
+            <item> code </item>
+            <item> config </item>
+            <item> diagnostics </item>
+            <item> error </item>
+            <item> errorlevel </item>
+            <item> heap </item>
+            <item> gstacksize </item>
+            <item> nobreak </item>
+            <item> nowarnings </item>
+            <item> printermenu </item>
+            <item> project </item>
+        </list>
+
+        <list name="arith">
+            <item> mod </item>
+            <item> div </item>
+            <item> abs </item>
+            <item> exp </item>
+            <item> ln </item>
+            <item> log </item>
+            <item> sqrt </item>
+            <item> round </item>
+            <item> trunc </item>
+            <item> val </item>
+            <item> cos </item>
+            <item> sin </item>
+            <item> tan </item>
+            <item> arctan </item>
+            <item> random </item>
+            <item> randominit </item>
+        </list>
+
+        <list name="basetype">
+            <item> char </item>
+            <item> real </item>
+            <item> string </item>
+            <item> symbol </item>
+            <item> byte </item>
+            <item> sbyte </item>
+            <item> short </item>
+            <item> ushort </item>
+            <item> word </item>
+            <item> integer </item>
+            <item> unsigned </item>
+            <item> dword </item>
+            <item> long </item>
+            <item> ulong </item>
+            <item> binary </item>
+            <item> ref </item>
+        </list>
+
+        <list name="keywords">
+            <item> true </item>
+            <item> false </item>
+        </list>
+
+        <contexts>
+            <context name="normal" attribute="Symbol" lineEndContext="#stay">
+                <keyword attribute="Keyword" context="#stay"  String="keywordl"/>
+                <keyword attribute="Keyword" context="#stay"  String="keywordu"/>
+                <keyword attribute="Arithmetic" context="#stay"  String="arith"/>
+                <keyword attribute="Keyword" context="#stay"  String="compiler"/>
+                <keyword attribute="Keyword" context="#stay"  String="special"/>
+                <keyword attribute="Data Type" context="#stay"  String="basetype"/>
+                <RegExpr String = "[A-Z_][A-Za-z0-9_]*" attribute = "Variable" context="#stay"/>
+                <RegExpr String = "[a-z][A-Za-z0-9_]*" attribute = "Identifier" context="#stay"/>
+                <DetectChar attribute="Comment" context="comment" char="%"/>
+                <Detect2Chars attribute="Comment" context="comment region" char="/" char1="*"/>
+                <Int attribute="Integer" context="#stay" />
+                <DetectChar attribute="String" context="string" char="&quot;" />
+                <DetectChar attribute="String" context="string2" char="'" />
+                <AnyChar attribute="Symbol" context="#stay" String="~!^*()-+=[]|\:;,./?&amp;&lt;&gt;" />
+            </context>
+            <context name="comment" attribute="Comment" lineEndContext="#pop" />
+            <context name="string" attribute="String" lineEndContext="#stay" >
+                <DetectChar attribute="String" context="#pop" char="&quot;" />
+            </context>
+            <context name="string2" attribute="String" lineEndContext="#stay">
+                <DetectChar attribute="String" context="#pop" char="'" />
+            </context>
+            <context name="comment region" attribute="Comment" lineEndContext="#stay">
+                <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" />
+            </context>
+        </contexts>
+        <itemDatas>
+            <itemData name="Normal Text" defStyleNum="dsNormal" />
+            <itemData name="Keyword" defStyleNum="dsKeyword" />
+            <itemData name="Data Type" defStyleNum="dsDataType" />
+            <itemData name="Comment" defStyleNum="dsComment" />
+            <itemData name="Integer" defStyleNum="dsDecVal" />
+            <itemData name="Symbol" defStyleNum="dsNormal" />
+            <itemData name="String"  defStyleNum="dsString"/>
+            <itemData name="Identifier"  defStyleNum="dsNormal"/>
+            <itemData name="Variable"  defStyleNum="dsOthers"/>
+            <itemData name="Arithmetic" defStyleNum="dsKeyword" />
+
+        </itemDatas>
+    </highlighting>
+  <general>
+    <keywords casesensitive="1" />
+    <comments>
+      <comment name="singleLine" start="%" />
+      <comment name="multiLine" start="/*" end="*/" />
+    </comments>
+
+  </general>
+</language>
+
diff --git a/xml/python.xml b/xml/python.xml
new file mode 100644
--- /dev/null
+++ b/xml/python.xml
@@ -0,0 +1,293 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language>
+<!-- Python syntax highlightning v0.9 by Per Wigren -->
+<!-- Python syntax highlighting v1.9 by Michael Bueker (improved keyword differentiation) -->
+<!-- Python syntax highlighting v1.97 by Paul Giannaros -->
+<language name="Python" version="1.98" kateversion="2.4" section="Scripts" extensions="*.py;*.pyw" mimetype="application/x-python;text/x-python" casesensitive="1" author="Michael Bueker" license="">
+	<highlighting>
+		<list name="prep">
+			<item> import </item>
+			<item> from </item>
+			<item> as </item>
+		</list>
+		<list name="defs">
+			<item> class </item>
+			<item> def </item>
+			<item> del </item>
+			<item> global </item>
+			<item> lambda </item>
+		</list>
+		<list name="operators">
+			<item> and </item>
+			<item> assert </item>
+			<item> in </item>
+			<item> is </item>
+			<item> not </item>
+			<item> or </item>
+		</list>
+		<list name="commands">
+			<item> exec </item>
+			<item> print </item>
+		</list>
+		<list name="flow">
+			<item> break </item>
+			<item> continue </item>
+			<item> elif </item>
+			<item> else </item>
+			<item> except </item>
+			<item> finally </item>
+			<item> for </item>
+			<item> if </item>
+			<item> pass </item>
+			<item> raise </item>
+			<item> return </item>
+			<item> try </item>
+			<item> while </item>
+			<item> yield </item>
+		</list>
+		<list name="builtinfuncs">
+			<item> __import__ </item>
+			<item> abs </item>
+			<item> all </item>
+			<item> any </item>
+			<item> apply </item>
+			<item> basestring </item>
+			<item> bool </item>
+			<item> buffer </item>
+			<item> callable </item>
+			<item> chr </item>
+			<item> classmethod </item>
+			<item> cmp </item>
+			<item> coerce </item>
+			<item> compile </item>
+			<item> complex </item>
+			<item> delattr </item>
+			<item> dict </item>
+			<item> dir </item>
+			<item> divmod </item>
+			<item> enumerate </item>
+			<item> eval </item>
+			<item> execfile </item>
+			<item> file </item>
+			<item> filter </item>
+			<item> float </item>
+			<item> frozenset </item>
+			<item> getattr </item>
+			<item> globals </item>
+			<item> hasattr </item>
+			<item> hash </item>
+			<item> hex </item>
+			<item> id </item>
+			<item> input </item>
+			<item> int </item>
+			<item> intern </item>
+			<item> isinstance </item>
+			<item> issubclass </item>
+			<item> iter </item>
+			<item> len </item>
+			<item> list </item>
+			<item> locals </item>
+			<item> long </item>
+			<item> map </item>
+			<item> max </item>
+			<item> min </item>
+			<item> object </item>
+			<item> oct </item>
+			<item> open </item>
+			<item> ord </item>
+			<item> pow </item>
+			<item> property </item>
+			<item> range </item>
+			<item> raw_input </item>
+			<item> reduce </item>
+			<item> reload </item>
+			<item> repr </item>
+			<item> reversed </item>
+			<item> round </item>
+			<item> set </item>
+			<item> setattr </item>
+			<item> slice </item>
+			<item> sorted </item>
+			<item> staticmethod </item>
+			<item> str </item>
+			<item> sum </item>
+			<item> super </item>
+			<item> tuple </item>
+			<item> type </item>
+			<item> unichr </item>
+			<item> unicode </item>
+			<item> vars </item>
+			<item> xrange </item>
+			<item> zip </item>
+		</list>
+		<list name="specialvars">
+			<item> None </item>
+			<item> self </item>
+			<item> True </item>
+			<item> False </item>
+			<item> NotImplemented </item>
+			<item> Ellipsis </item>
+		</list>
+		<list name="bindings">
+			<item> SIGNAL </item>
+			<item> SLOT </item>
+			<item> connect </item>
+		</list>
+		<contexts>
+			<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+				<keyword attribute="Preprocessor" String="prep" context="#stay"/>
+				<keyword attribute="Definition Keyword" String="defs" context="#stay"/>
+				<keyword attribute="Operator" String="operators" context="#stay"/>
+				<keyword attribute="Command Keyword" String="commands" context="#stay"/>
+				<keyword attribute="Flow Control Keyword" String="flow" context="#stay"/>
+				<keyword attribute="Builtin Function" String="builtinfuncs" context="#stay"/>
+				<keyword attribute="Special Variable" String="specialvars" context="#stay"/>
+				<keyword attribute="Extensions" String="bindings" context="#stay"/>
+				<RegExpr attribute="Normal" String="[a-zA-Z_][a-zA-Z_0-9]+" context="#stay"/>
+
+				<RegExpr attribute="Complex" String=" ((([0-9]*\.[0-9]+|[0-9]+\.)|([0-9]+|([0-9]*\.[0-9]+|[0-9]+\.))[eE](\+|-)?[0-9]+)|[0-9]+)[jJ]" context="#stay"/>
+				<RegExpr attribute="Float" String="([0-9]+\.[0-9]*|\.[0-9]+)([eE][0-9]+)?" context="#stay"/>
+				<RegExpr attribute="Int" String="([1-9][0-9]*([eE][0-9]+)?|0)" context="#stay"/>
+				<RegExpr attribute="Long" String="[1-9][0-9]*([eE][0-9.]+)?[Ll]" context="#stay"/>
+				<RegExpr attribute="Hex" String="0[Xx][0-9a-fA-F]+" context="#stay"/>
+				<RegExpr attribute="Octal" String="0[1-9][0-9]*" context="#stay"/>
+  
+				<RegExpr attribute="Raw String" String="[rR]'''" context="Raw Tripple A-string"/>
+				<RegExpr attribute="Raw String" String="[rR]&quot;&quot;&quot;" context="Raw Tripple Q-string"/>
+
+				<RegExpr attribute="Raw String" String="[rR]'" context="Raw A-string"/>
+				<RegExpr attribute="Raw String" String="[rR]&quot;" context="Raw Q-string"/>
+
+				<RegExpr attribute="Comment" String="#.*$" context="#stay"/>
+				<RegExpr attribute="Comment" String="^\s*'''" context="Tripple A-comment" beginRegion="Tripple A-region"/>
+				<RegExpr attribute="Comment" String="^\s*&quot;&quot;&quot;" context="Tripple Q-comment" beginRegion="Tripple Q-region"/>
+
+				<StringDetect attribute="String" String="'''" context="Tripple A-string" beginRegion="Tripple A-region"/>
+				<StringDetect attribute="String" String="&quot;&quot;&quot;" context="Tripple Q-string" beginRegion="Tripple Q-region"/>
+				<DetectChar attribute="String" char="'" context="Single A-string"/>
+				<DetectChar attribute="String" char="&quot;" context="Single Q-string"/>
+				
+				<DetectChar attribute="Operator" char="(" context="parenthesised" beginRegion="parenthesis"/>
+				<DetectChar attribute="Operator" char=")" context="#pop" endRegion="parenthesis"/>
+				
+				<RegExpr attribute="Operator" String="[+*/%\|=;\!&lt;&gt;!^&amp;~-]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+
+			</context>
+			
+			<context name="parenthesised" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<IncludeRules context="Normal" />
+			</context>
+			
+			<context name="Tripple A-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect attribute="Comment" String="'''" context="#pop" endRegion="Tripple A-region"/>
+			</context>
+
+			<context name="Tripple Q-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<HlCChar attribute="Comment" context="#stay"/>
+				<RegExpr attribute="Comment" String="&quot;&quot;&quot;" context="#pop" endRegion="Tripple Q-region"/>
+			</context>
+
+			<context name="Tripple A-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<HlCStringChar attribute="String Char" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/> 
+				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String" String="'''" context="#pop" endRegion="Tripple A-region"/>
+			</context>
+
+			<context name="Raw Tripple A-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<HlCStringChar attribute="Raw String" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/> 
+				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String" String="'''" context="#pop" endRegion="Tripple A-region"/>
+			</context>
+
+			<context name="Tripple Q-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<HlCStringChar attribute="String Char" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String" String="&quot;&quot;&quot;" context="#pop" endRegion="Tripple Q-region"/>
+			</context>
+
+			<context name="Raw Tripple Q-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<HlCStringChar attribute="Raw String" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String" String="&quot;&quot;&quot;" context="#pop" endRegion="Tripple Q-region"/>
+			</context>
+
+			<context name="Single A-comment" attribute="Comment" lineEndContext="#stay">
+				<HlCStringChar attribute="Comment" context="#stay"/>
+				<DetectChar attribute="Comment" char="'" context="#pop"/>
+			</context>
+
+			<context name="Single Q-comment" attribute="Comment" lineEndContext="#stay">
+				<HlCStringChar attribute="Comment" context="#stay"/>
+				<DetectChar attribute="Comment" char="&quot;" context="#pop"/>
+			</context>
+
+			<context name="Single A-string" attribute="String" lineEndContext="#stay">
+				<HlCStringChar attribute="String Char" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<DetectChar attribute="String" char="'" context="#pop"/>
+			</context>
+
+			<context name="Single Q-string" attribute="String" lineEndContext="#stay">
+				<HlCStringChar attribute="String Char" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<DetectChar attribute="String" char="&quot;" context="#pop"/>
+			</context>
+
+			<context name="Raw A-string" attribute="Raw String" lineEndContext="#stay">
+				<HlCStringChar attribute="Raw String" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<DetectChar attribute="Raw String" char="'" context="#pop"/>
+			</context>
+
+			<context name="Raw Q-string" attribute="Raw String" lineEndContext="#stay">
+				<HlCStringChar attribute="Raw String" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<DetectChar attribute="Raw String" char="&quot;" context="#pop"/>
+			</context>
+
+
+		</contexts>
+		<itemDatas>
+			<itemData name="Normal Text" defStyleNum="dsNormal"/>
+			<itemData name="Definition Keyword" defStyleNum="dsKeyword"/>
+			<itemData name="Operator" defStyleNum="dsNormal"/>
+			<itemData name="String Substitution" defStyleNum="dsNormal"/>
+			<itemData name="Command Keyword" defStyleNum="dsKeyword"/>
+			<itemData name="Flow Control Keyword" defStyleNum="dsKeyword"/>
+			<itemData name="Builtin Function" defStyleNum="dsDataType"/>
+			<itemData name="Special Variable" defStyleNum="dsOthers"/>
+			<itemData name="Extensions" defStyleNum="dsOthers" color="#0095ff" selColor="#ffffff" bold="1" italic="0"/>
+			<itemData name="Preprocessor" defStyleNum="dsChar"/>
+			<itemData name="String Char" defStyleNum="dsChar"/>
+			<itemData name="Long" defStyleNum="dsOthers"/>
+			<itemData name="Float" defStyleNum="dsFloat"/>
+			<itemData name="Int" defStyleNum="dsDecVal"/>
+			<itemData name="Hex" defStyleNum="dsOthers"/>
+			<itemData name="Octal" defStyleNum="dsOthers"/>
+			<itemData name="Complex" defStyleNum="dsOthers"/>
+			<itemData name="Comment" defStyleNum="dsComment"/>
+			<itemData name="String" defStyleNum="dsString"/>
+			<itemData name="Raw String" defStyleNum="dsString"/>
+		</itemDatas>
+	</highlighting>
+   <general>
+     <folding indentationsensitive="1" />
+     <emptyLines>
+       <emptyLine regexpr="\s+" casesensitive="false"/>
+       <emptyLine regexpr="\s*#.*$" casesensitive="false"/>
+     </emptyLines>
+     <comments>
+        <comment name="singleLine" start="#" position="afterwhitespace"/>
+     </comments>
+     <keywords casesensitive="1" />
+   </general>
+</language>
diff --git a/xml/rhtml.xml b/xml/rhtml.xml
new file mode 100644
--- /dev/null
+++ b/xml/rhtml.xml
@@ -0,0 +1,1235 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+	<!ENTITY name    "[A-Za-z_:][\w.:_-]*">
+	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
+]>
+	
+<!--
+	RHTML syntax highlighting definition for Kate. It combines the ruby and
+	html syntax grammars. Some ideas, and the list of Rails method names were 
+	taken from an rhtml kate grammar for Quanta based on earlier versions of
+	the syntax highlighters.
+	
+	Copyright (C) 2004  by Sebastian Vuorinen (sebastian dot vuorinen at helsinki dot fi)
+	Copyright (C) 2004  by Stefan Lang (langstefan@gmx.at)
+	Copyright (C) 2006  by Wilbert Berendsen (wilbert@kde.nl
+	Copyright (C) 2005  by Chris Martin (linux@chriscodes.com
+	Copyright (C) 2006  by Richard Dale (rdale@foton.es)
+	
+	This library is free software; you can redistribute it and/or
+	modify it under the terms of the GNU Library General Public
+	License as published by the Free Software Foundation; either
+	version 2 of the License, or (at your option) any later version.
+	
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+	Library General Public License for more details.
+	
+	You should have received a copy of the GNU Library General Public
+	License along with this library; if not, write to the
+	Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+	Boston, MA  02110-1301, USA.
+-->
+	
+<!--
+	TODO:	* Regular expressions spanning over multiple lines
+	work only if newlines are escaped.
+	* "Nested" HERE documents aren't recognized.
+	* Division is detected correctly only, if whitespace
+	is around the "/" operator.
+	E.g.:	detected correctly:				1 / 2
+	"/" interpreted as regex start:		1/2
+-->
+	
+<!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". -->
+<language name="Ruby/Rails/RHTML" version="1.00" kateversion="2.4" section="Markup" extensions="*.rhtml;*.html.erb" mimetype="" author="Richard Dale rdale@foton.es" license="LGPL">
+	
+	<highlighting>
+	
+		<list name="keywords">
+			<item> BEGIN </item>
+			<item> END </item>
+			<item> and </item>
+			<item> begin </item>
+			<item> break </item>
+			<item> case </item>
+			<item> defined? </item>
+			<item> do </item>
+			<item> else </item>
+			<item> elsif </item>
+			<item> end </item>
+			<item> ensure </item>
+			<item> for </item>
+			<item> if </item>
+			<item> in </item>
+			<item> include </item>
+			<item> next </item>
+			<item> not </item>
+			<item> or </item>
+			<item> redo </item>
+			<item> rescue </item>
+			<item> retry </item>
+			<item> return </item>
+			<item> then </item>
+			<item> unless </item>
+			<item> until </item>
+			<item> when </item>
+			<item> while </item>
+			<item> yield </item>
+		</list>
+		
+		<list name="access-control">
+			<item> private_class_method </item>
+			<item> private </item>
+			<item> protected </item>
+			<item> public_class_method </item>
+			<item> public </item>
+		</list>
+
+		<list name="attribute-definitions">
+			<item> attr_reader </item>
+			<item> attr_writer </item>
+			<item> attr_accessor </item>
+		</list>
+		
+		<list name="definitions">
+			<item> alias </item>
+			<item> module </item>
+			<item> class </item>
+			<item> def </item>
+			<item> undef </item>
+		</list>
+		
+		<list name="pseudo-variables">
+			<item> self </item>
+			<item> super </item>
+			<item> nil </item>
+			<item> false </item>
+			<item> true </item>
+			<item> caller </item>
+			<item> __FILE__ </item>
+			<item> __LINE__ </item>
+		</list>
+		
+		<list name="default-globals">
+			<item> $stdout </item>
+			<item> $defout </item>
+			<item> $stderr </item>
+			<item> $deferr </item>
+			<item> $stdin </item>
+		</list>
+		
+		<!-- Kernel module methods.
+			NOTE: Methods ending in ? or !
+				are included below as regexes.
+		-->
+		<list name="kernel-methods">
+			<!-- backquote ` -->
+			<item> abort </item>
+			<item> at_exit </item>
+			<item> autoload </item>
+			<item> autoload? </item>
+			<item> binding </item>
+			<item> block_given? </item>
+			<item> callcc </item>
+			<item> caller </item>
+			<item> catch </item>
+			<item> chomp </item>
+			<item> chomp! </item>
+			<item> chop </item>
+			<item> chop! </item>
+			<item> eval </item>
+			<item> exec </item>
+			<item> exit </item>
+			<item> exit! </item>
+			<item> fail </item>
+			<item> fork </item>
+			<item> format </item>
+			<item> getc </item>
+			<item> gets </item>
+			<item> global_variables </item>
+			<item> gsub </item>
+			<item> gsub! </item>
+			<item> iterator? </item>
+			<item> lambda </item>
+			<item> load </item>
+			<item> local_variables </item>
+			<item> loop </item>
+			<item> method_missing </item>
+			<item> open </item>
+			<item> p </item>
+			<item> print </item>
+			<item> printf </item>
+			<item> proc </item>
+			<item> putc </item>
+			<item> puts </item>
+			<item> raise </item>
+			<item> rand </item>
+			<item> readline </item>
+			<item> readlines </item>
+			<item> require </item>
+			<item> scan </item>
+			<item> select </item>
+			<item> set_trace_func </item>
+			<item> sleep </item>
+			<item> split </item>
+			<item> sprintf </item>
+			<item> srand </item>
+			<item> sub </item>
+			<item> sub! </item>
+			<item> syscall </item>
+			<item> system </item>
+			<item> test </item>
+			<item> throw </item>
+			<item> trace_var </item>
+			<item> trap </item>
+			<item> untrace_var </item>
+			<item> warn </item>
+			
+			<!-- ActionView methods from Rails docs -->
+			<item>auto_complete_field</item>
+			<item>auto_complete_result</item>
+			<item>auto_discovery_link_tag</item>
+			<item>auto_link</item>
+			<item>benchmark</item>
+			<item>button_to</item>
+			<item>cache</item>
+			<item>capture</item>
+			<item>check_box</item>
+			<item>check_box_tag</item>
+			<item>collection_select</item>
+			<item>concat</item>
+			<item>content_for</item>
+			<item>content_tag</item>
+			<item>country_options_for_select</item>
+			<item>country_select</item>
+			<item>current_page?</item>
+			<item>date_select</item>
+			<item>datetime_select</item>
+			<item>debug</item>
+			<item>define_javascript_functions</item>
+			<item>distance_of_time_in_words</item>
+			<item>distance_of_time_in_words_to_now</item>
+			<item>draggable_element</item>
+			<item>drop_receiving_element</item>
+			<item>end_form_tag</item>
+			<item>error_message_on</item>
+			<item>error_messages_for</item>
+			<item>escape_javascript</item>
+			<item>evaluate_remote_response</item>
+			<item>excerpt</item>
+			<item>file_field</item>
+			<item>file_field_tag</item>
+			<item>finish_upload_status</item>
+			<item>form</item>
+			<item>form_remote_tag</item>
+			<item>form_tag</item>
+			<item>form_tag_with_upload_progress</item>
+			<item>h</item>
+			<item>hidden_field</item>
+			<item>hidden_field_tag</item>
+			<item>highlight</item>
+			<item>human_size</item>
+			<item>image_path</item>
+			<item>image_submit_tag</item>
+			<item>image_tag</item>
+			<item>input</item>
+			<item>javascript_include_tag</item>
+			<item>javascript_path</item>
+			<item>javascript_tag</item>
+			<item>link_image_to</item>
+			<item>link_to</item>
+			<item>link_to_function</item>
+			<item>link_to_if</item>
+			<item>link_to_image</item>
+			<item>link_to_remote</item>
+			<item>link_to_unless</item>
+			<item>link_to_unless_current</item>
+			<item>mail_to</item>
+			<item>markdown</item>
+			<item>number_to_currency</item>
+			<item>number_to_human_size</item>
+			<item>number_to_percentage</item>
+			<item>number_to_phone</item>
+			<item>number_with_delimiter</item>
+			<item>number_with_precision</item>
+			<item>observe_field</item>
+			<item>observe_form</item>
+			<item>option_groups_from_collection_for_select</item>
+			<item>options_for_select</item>
+			<item>options_from_collection_for_select</item>
+			<item>pagination_links</item>
+			<item>password_field</item>
+			<item>password_field_tag</item>
+			<item>periodically_call_remote</item>
+			<item>pluralize</item>
+			<item>radio_button</item>
+			<item>radio_button_tag</item>
+			<item>register_template_handler</item>
+			<item>render</item>
+			<item>render_file</item>
+			<item>render_template</item>
+			<item>sanitize</item>
+			<item>select</item>
+			<item>select_date</item>
+			<item>select_datetime</item>
+			<item>select_day</item>
+			<item>select_hour</item>
+			<item>select_minute</item>
+			<item>select_month</item>
+			<item>select_second</item>
+			<item>select_tag</item>
+			<item>select_time</item>
+			<item>select_year</item>
+			<item>simple_format</item>
+			<item>sortable_element</item>
+			<item>start_form_tag</item>
+			<item>strip_links</item>
+			<item>stylesheet_link_tag</item>
+			<item>stylesheet_path</item>
+			<item>submit_tag</item>
+			<item>submit_to_remote</item>
+			<item>tag</item>
+			<item>text_area</item>
+			<item>text_area_tag</item>
+			<item>text_field</item>
+			<item>text_field_tag</item>
+			<item>text_field_with_auto_complete</item>
+			<item>textilize</item>
+			<item>textilize_without_paragraph</item>
+			<item>time_ago_in_words</item>
+			<item>time_zone_options_for_select</item>
+			<item>time_zone_select</item>
+			<item>truncate</item>
+			<item>update_element_function</item>
+			<item>upload_progress_status</item>
+			<item>upload_progress_text</item>
+			<item>upload_progress_update_bar_js</item>
+			<item>upload_status_progress_bar_tag</item>
+			<item>upload_status_tag</item>
+			<item>upload_status_text_tag</item>
+			<item>url_for</item>
+			<item>visual_effect</item>
+			<item>word_wrap</item>
+		</list>
+		
+		<list name="attention">
+			<item> TODO </item>
+			<item> FIXME </item>
+			<item> NOTE </item>
+		</list>
+		
+		<contexts>
+			
+		<!-- BEGIN HTML contexts -->
+			<context name="Start" attribute="Normal Text" lineEndContext="#stay">
+				<IncludeRules context="FindHTML" />
+			</context>
+			
+			<context name="FindHTML" attribute="Normal Text" lineEndContext="#stay">
+				<DetectSpaces/>
+				<DetectIdentifier/>
+				
+				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				<StringDetect attribute="Keyword" context="rubysourceline" String="%" />
+				
+				<StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
+				<StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
+				<RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" beginRegion="doctype" />
+				<RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
+				<RegExpr attribute="Element" context="CSS" String="&lt;style\b" insensitive="TRUE" beginRegion="style" />
+				<RegExpr attribute="Element" context="JS" String="&lt;script\b" insensitive="TRUE" beginRegion="script" />
+				<RegExpr attribute="Element" context="El Open" String="&lt;pre\b" insensitive="TRUE" beginRegion="pre" />
+				<RegExpr attribute="Element" context="El Open" String="&lt;div\b" insensitive="TRUE" beginRegion="div" />
+				<RegExpr attribute="Element" context="El Open" String="&lt;table\b" insensitive="TRUE" beginRegion="table" />
+				<RegExpr attribute="Element" context="El Open" String="&lt;&name;" />
+				<RegExpr attribute="Element" context="El Close" String="&lt;/pre\b" insensitive="TRUE" endRegion="pre" />
+				<RegExpr attribute="Element" context="El Close" String="&lt;/div\b" insensitive="TRUE" endRegion="div" />
+				<RegExpr attribute="Element" context="El Close" String="&lt;/table\b" insensitive="TRUE" endRegion="table" />
+				<RegExpr attribute="Element" context="El Close" String="&lt;/&name;" />
+				<!-- as long as kde gives DTDs the text/html mimetype--><IncludeRules context="FindDTDRules" />
+				<IncludeRules context="FindEntityRefs" />
+			</context>
+			
+			<context name="FindEntityRefs" attribute="Normal Text" lineEndContext="#stay">
+				<RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
+				<AnyChar attribute="Error" context="#stay" String="&amp;&lt;" />
+			</context>
+			
+			<context name="FindPEntityRefs" attribute="Normal Text" lineEndContext="#stay">
+				<RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
+				<RegExpr attribute="PEntityRef" context="#stay" String="%&name;;" />
+				<AnyChar attribute="Error" context="#stay" String="&amp;%" />
+			</context>
+			
+			<context name="FindAttributes" attribute="Normal Text" lineEndContext="#stay">
+				<RegExpr attribute="Attribute" context="#stay" String="&name;" column="0"/>
+				<RegExpr attribute="Attribute" context="#stay" String="\s+&name;" />
+				<DetectChar attribute="Attribute" context="Value" char="=" />
+			</context>
+			
+			<context name="FindDTDRules" attribute="Normal Text" lineEndContext="#stay">
+				<RegExpr attribute="Doctype" context="Doctype Markupdecl" String="&lt;!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />
+			</context>
+			
+			
+			<context name="Comment" attribute="Comment" lineEndContext="#stay">
+				<DetectSpaces/>
+				<IncludeRules context="##Alerts" />
+				<DetectIdentifier/>
+				<StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
+				<RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />
+			</context>
+			
+			<context name="CDATA" attribute="Normal Text" lineEndContext="#stay">
+				<DetectSpaces/>
+				<DetectIdentifier/>
+				<StringDetect attribute="CDATA" context="#pop" String="]]&gt;" endRegion="cdata" />
+				<StringDetect attribute="EntityRef" context="#stay" String="]]&amp;gt;" />
+			</context>
+			
+			<context name="PI" attribute="Normal Text" lineEndContext="#stay">
+				<Detect2Chars attribute="Processing Instruction" context="#pop" char="?" char1="&gt;" endRegion="pi" />
+			</context>
+			
+			<context name="Doctype" attribute="Normal Text" lineEndContext="#stay">
+				<DetectChar attribute="Doctype" context="#pop" char="&gt;" endRegion="doctype" />
+				<DetectChar attribute="Doctype" context="Doctype Internal Subset" char="[" beginRegion="int_subset" />
+			</context>
+			
+			<context name="Doctype Internal Subset" attribute="Normal Text" lineEndContext="#stay">
+				<DetectChar attribute="Doctype" context="#pop" char="]" endRegion="int_subset" />
+				<IncludeRules context="FindDTDRules" />
+				<StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
+				<RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
+				<IncludeRules context="FindPEntityRefs" />
+			</context>
+			
+			<context name="Doctype Markupdecl" attribute="Normal Text" lineEndContext="#stay">
+				<DetectChar attribute="Doctype" context="#pop" char="&gt;" />
+				<DetectChar attribute="Value" context="Doctype Markupdecl DQ" char="&quot;" />
+				<DetectChar attribute="Value" context="Doctype Markupdecl SQ" char="&apos;" />
+			</context>
+			
+			<context name="Doctype Markupdecl DQ" attribute="Value" lineEndContext="#stay">
+				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				
+				<DetectChar attribute="Value" context="#pop" char="&quot;" />
+				<IncludeRules context="FindPEntityRefs" />
+			</context>
+			
+			<context name="Doctype Markupdecl SQ" attribute="Value" lineEndContext="#stay">
+				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				
+				<DetectChar attribute="Value" context="#pop" char="&apos;" />
+				<IncludeRules context="FindPEntityRefs" />
+			</context>
+			
+			<context name="El Open" attribute="Normal Text" lineEndContext="#stay">
+				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				
+				<Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" />
+				<DetectChar attribute="Element" context="#pop" char="&gt;" />
+				<IncludeRules context="FindAttributes" />
+				<RegExpr attribute="Error" context="#stay" String="\S" />
+			</context>
+			
+			<context name="El Close" attribute="Normal Text" lineEndContext="#stay">
+				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				
+				<DetectChar attribute="Element" context="#pop" char="&gt;" />
+				<RegExpr attribute="Error" context="#stay" String="\S" />
+			</context>
+			
+			<context name="El Close 2" attribute="Normal Text" lineEndContext="#stay">
+				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				
+				<DetectChar attribute="Element" context="#pop#pop#pop" char="&gt;" />
+				<RegExpr attribute="Error" context="#stay" String="\S" />
+			</context>
+			
+			<context name="El Close 3" attribute="Normal Text" lineEndContext="#stay">
+				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				
+				<DetectChar attribute="Element" context="#pop#pop#pop#pop" char="&gt;" />
+				<RegExpr attribute="Error" context="#stay" String="\S" />
+			</context>
+			
+			<context name="CSS" attribute="Normal Text" lineEndContext="#stay">
+				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				
+				<Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="style" />
+				<DetectChar attribute="Element" context="CSS content" char="&gt;" />
+				<IncludeRules context="FindAttributes" />
+				<RegExpr attribute="Error" context="#stay" String="\S" />
+			</context>
+			
+			<context name="CSS content" attribute="Normal Text" lineEndContext="#stay">
+				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				
+				<RegExpr attribute="Element" context="El Close 2" String="&lt;/style\b" insensitive="TRUE" endRegion="style" />
+				<IncludeRules context="##CSS" includeAttrib="true"/>
+			</context>
+			
+			<context name="JS" attribute="Normal Text" lineEndContext="#stay">
+				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				
+				<Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="script" />
+				<DetectChar attribute="Element" context="JS content" char="&gt;" />
+				<IncludeRules context="FindAttributes" />
+				<RegExpr attribute="Error" context="#stay" String="\S" />
+			</context>
+			
+			<context name="JS content" attribute="Normal Text" lineEndContext="#stay">
+				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				
+				<RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="TRUE" endRegion="script" />
+				<RegExpr attribute="Comment" context="JS comment close" String="//(?=.*&lt;/script\b)" insensitive="TRUE" />
+				<IncludeRules context="##JavaScript" includeAttrib="true"/>
+			</context>
+			
+			<context name="JS comment close" attribute="Comment" lineEndContext="#pop">
+				<RegExpr attribute="Element" context="El Close 3" String="&lt;/script\b" insensitive="TRUE" endRegion="script" />
+				<IncludeRules context="##Alerts" />
+			</context>
+			
+			<context name="Value" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Value NQ">
+				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				
+				<DetectChar attribute="Value" context="Value DQ" char="&quot;" />
+				<DetectChar attribute="Value" context="Value SQ" char="&apos;" />
+				<DetectSpaces />
+			</context>
+			
+			<context name="Value NQ" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				
+				<IncludeRules context="FindEntityRefs" />
+				<RegExpr attribute="Value" context="#stay" String="/(?!&gt;)" />
+				<RegExpr attribute="Value" context="#stay" String="[^/&gt;&lt;&quot;&apos;\s]" />
+			</context>
+			
+			<context name="Value DQ" attribute="Value" lineEndContext="#stay">
+				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				
+				<DetectChar attribute="Value" context="#pop#pop" char="&quot;" />
+				<IncludeRules context="FindEntityRefs" />
+			</context>
+			
+			<context name="Value SQ" attribute="Value" lineEndContext="#stay">
+				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				
+				<DetectChar attribute="Value" context="#pop#pop" char="&apos;" />
+				<IncludeRules context="FindEntityRefs" />
+  			</context>	
+		<!-- END HTML contexts -->
+		
+		<!-- BEGIN Ruby contexts -->
+		
+			<!-- A single line of ruby source after a '%' ERB tag -->
+			<context name="rubysourceline" attribute="RUBY RAILS ERB Text" lineEndContext="#pop">
+				<IncludeRules context="rubysource" />
+			</context>
+			
+			<context name="rubysource" attribute="RUBY RAILS ERB Text" lineEndContext="#stay">
+				<!-- ruby ignores newline after \ -->
+				<LineContinue attribute="Ruby Normal Text" context="Line Continue"/>
+				
+				<RegExpr attribute="Keyword" context="#pop" String="-?%&gt;" />
+				
+				<!-- __END__ token on own line. -->
+				<RegExpr attribute="Keyword" String="__END__$" context="DATA" column="0"/>
+				
+				<!-- "shebang" line -->
+				<RegExpr attribute="Keyword" String="#!\/.*" context="#stay" column="0"/>
+				
+				<!-- "def" - "end" blocks -->
+				<!-- check for statement modifiers with regexes -->
+				<RegExpr attribute="Keyword" String="(\=|\(|\[|\{)\s*(if|unless|while|until)\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block" firstNonSpace="true"/>
+				<RegExpr attribute="Keyword" String="\;\s*(while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" beginRegion="def block" firstNonSpace="true"/>
+				<RegExpr attribute="Keyword" String="\;\s*(if|unless)\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bclass\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bmodule\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bbegin\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bfor\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bcase\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bdo\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bdef\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bend\b" context="#stay" endRegion="def block"/>
+				<!-- elsif/else close the current block and start a new one -->
+				<RegExpr attribute="Keyword" String="(\b|^\s*)(else|elsif|rescue|ensure)(\s+|$)" context="#stay" endRegion="def block" beginRegion="def block"/>
+				
+				<StringDetect attribute="Operator" String="..." context="#stay"/>
+				<Detect2Chars attribute="Operator" char="." char1="." context="#stay"/>
+				
+				<!-- marks a message (being sent, not defined) -->
+				<RegExpr attribute="Message" String="\.[_a-z][_a-zA-Z0-9]*(\?|\!|\b)" context="#stay"/>
+				
+				<!-- Check for "ASCII code operator". e.g.: ?a -->
+				<RegExpr attribute="Dec" String="\s\?(\\M\-)?(\\C\-)?\\?\S" context="#stay"/>
+				
+				<keyword attribute="Keyword" String="keywords" context="#stay"/>
+				<keyword attribute="Attribute Definition" String="attribute-definitions"  context="#stay"/>
+				<keyword attribute="Access Control" String="access-control" context="#stay"/>
+				<keyword attribute="Definition" String="definitions"  context="#stay" />
+				<keyword attribute="Pseudo variable" String="pseudo-variables"  context="#stay"/>
+				<keyword attribute="Default globals" String="default-globals" context="#stay"/>
+				<keyword attribute="Kernel methods" String="kernel-methods" context="#stay"/>
+				
+				<!-- (global) vars starting with $
+					Match them before $_.
+					-->
+				<RegExpr attribute="Global Variable" String="\$[a-zA-Z_0-9]+" context="#stay"/>
+				<RegExpr attribute="Global Variable" String="\$\-[a-zA-z_]\b" context="#stay"/>
+				<!-- special-character globals -->
+				<RegExpr attribute="Default globals" String="\$[\d_*`\!:?'/\\\-\&amp;]" context="#stay"/>
+				<RegExpr attribute="Global Constant" String="\b[_A-Z]+[A-Z_0-9]+\b" context="#stay"/>
+				<!-- Generally a module or class name like "File", "MyModule_1", .. -->
+				<RegExpr attribute="Constant" String="\b[A-Z]+_*([0-9]|[a-z])[_a-zA-Z0-9]*\b" context="#stay"/>
+				
+				<RegExpr attribute="Hex" String="\b\-?0[xX][_0-9a-fA-F]+" context="#stay"/>
+				<RegExpr attribute="Bin" String="\b\-?0[bB][_01]+" context="#stay"/>
+				<RegExpr attribute="Octal" String="\b\-?0[1-7][_0-7]*" context="#stay"/>
+				<RegExpr attribute="Float" String="\b\-?[0-9][0-9_]*\.[0-9][0-9_]*([eE]\-?[1-9][0-9]*(\.[0-9]*)?)?" context="#stay"/>
+				<RegExpr attribute="Dec" String="\b\-?[1-9][0-9_]*\b" context="#stay"/>
+				<Int attribute="Dec" context="#stay"/>
+				<HlCChar attribute="Char" context="#stay"/>
+				
+				<!-- Check for =begin before assignment operator. -->
+				<StringDetect attribute="Blockcomment" String="=begin" context="Embedded documentation" beginRegion="comment block" column="0"/>
+				
+				<!-- recognize the beginning of a HEREDOC
+					This uses new features in Kate 2.3 and later
+					
+					There is no other chance of keeping heredoc apart from the
+					push operator '<<' than requiring to put space between the operator
+										and the string.
+										-->
+				<RegExpr attribute="Operator" context="find_indented_heredoc" String="\s*&lt;&lt;-(?=\w+|[&quot;'])" beginRegion="HereDocument" />
+				<RegExpr attribute="Operator" context="find_heredoc" String="\s*&lt;&lt;(?=\w+|[&quot;'])" beginRegion="HereDocument" />
+				
+				<DetectChar attribute="Operator" char="." context="#stay"/>
+				<Detect2Chars attribute="Operator" char="&amp;" char1="&amp;" context="#stay"/>
+				<Detect2Chars attribute="Operator" char="|" char1="|" context="#stay"/>
+				<RegExpr attribute="Operator" String="\s[\?\:\%/]\s" context="#stay"/>
+				<RegExpr attribute="Operator" String="[|&amp;&lt;&gt;\^\+*~\-=]+" context="#stay"/>
+				<!-- regexp hack -->
+				<RegExpr attribute="Operator" String="\s!" context="#stay"/>
+				<RegExpr attribute="Operator" String="/=\s" context="#stay" insensitive="0"/>
+				<StringDetect attribute="Operator" String="%=" context="#stay" insensitive="0"/>
+				<Detect2Chars attribute="Operator" char=":" char1=":" context="Member Access"/>
+				
+				<RegExpr attribute="Symbol" String=":[a-zA-Z_][a-zA-Z0-9_]*" context="#stay"/>
+				
+				<DetectChar attribute="String" char="&quot;" context="Quoted String"/>
+				<DetectChar attribute="Raw String" char="'" context="Apostrophed String"/>
+				<DetectChar attribute="Command" char="`" context="Command String"/>
+				
+				<StringDetect attribute="Normal Text" String="?#" context="#stay"/>
+				
+				<RegExpr attribute="Comment" String="#\s*BEGIN.*$"  context="#stay" beginRegion="marker" column="0"/>
+				<RegExpr attribute="Comment" String="#\s*END.*$"  context="#stay" endRegion="marker" column="0"/>
+				<RegExpr attribute="Comment" String="#"  context="Comment Line" firstNonSpace="true"/>
+				<RegExpr attribute="Comment" String="\s#"  context="General Comment"/>
+				
+				<RegExpr attribute="Delimiter" String="[\[\]]+"  context="#stay"/>
+				<DetectChar attribute="Delimiter" char="{" context="#stay" beginRegion="def block"/>
+				<DetectChar attribute="Delimiter" char="}" context="#stay" endRegion="def block"/>
+				
+				<RegExpr attribute="Instance Variable" String="@[a-zA-Z_0-9]+" context="#stay"/>
+				<RegExpr attribute="Class Variable" String="@@[a-zA-Z_0-9]+" context="#stay"/>
+				
+				<!-- handle the different regular expression formats -->
+				<DetectChar attribute="Regular Expression" char="/" context="RegEx 1"/>
+				
+				<!-- recognize the beginning of a general delimited input format -->
+				<!-- this moves to the next context to separate out the exact nature of the GDL input -->
+				<RegExpr attribute="GDL input" context="find_gdl_input" String="\s*[%](?=[Qqxw]?[^\s&gt;])" beginRegion="GdlInput" />
+			</context>
+			
+			<context name="Line Continue" attribute="Ruby Normal Text" lineEndContext="#pop">
+				<RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)" context="#stay" firstNonSpace="true"/>
+				<RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" firstNonSpace="true"/>
+				<IncludeRules context="rubysource"/>
+			</context>
+			
+			<context name="Quoted String" attribute="String" lineEndContext="#stay">
+				<StringDetect attribute="String" String="\\" context="#stay"/>
+				<RegExpr attribute="String" String="\\\&quot;" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+				<!--HlCChar attribute="Char" context="#pop"/-->
+				<DetectChar char="&quot;" attribute="String" context="#pop"/>
+			</context>
+			
+			<context name="Apostrophed String" attribute="Raw String" lineEndContext="#stay">
+				<!-- <HlCChar attribute="Char" context="#pop"/> -->
+				<StringDetect attribute="String" String="\\" context="#stay"/>
+				<RegExpr attribute="String" String="\\\'" context="#stay"/>
+				<DetectChar char="'" attribute="Raw String" context="#pop"/>
+			</context>
+			
+			<context name="Command String" attribute="Command" lineEndContext="#stay">
+				<StringDetect attribute="String" String="\\" context="#stay"/>
+				<RegExpr attribute="String" String="\\\`" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+				<HlCChar attribute="Char" context="#pop"/>
+				<DetectChar char="`" attribute="Command" context="#pop"/>
+			</context>
+			
+			<context name="Embedded documentation" attribute="Ruby Comment" lineEndContext="#stay">
+				<StringDetect attribute="Ruby Comment" String="=end" context="#pop" endRegion="comment block" column="0"/>
+			</context>
+			
+			<context name="RegEx 1" attribute="Regular Expression" lineEndContext="#stay">
+				<RegExpr attribute="Regular Expression" String="\\\/" context="#stay"/>
+				<RegExpr attribute="Regular Expression" String="[^\\]$" context="#pop"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+				<RegExpr attribute="Regular Expression" String="/[uiomxn]*" context="#pop"/>
+			</context>
+			
+			<!-- Substitutions can be nested -->
+			<context name="Subst" attribute="Ruby Normal Text" lineEndContext="#stay">
+				<DetectChar attribute="Substitution" char="}" context="#pop"/>
+				<!-- Highlight substitution as code. -->
+				<IncludeRules context="rubysource"/>
+			</context>
+			
+			<context name="Short Subst" attribute="Substitution" lineEndContext="#pop">
+				<!-- Check for e.g.: "#@var#@@xy" -->
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="#stay"/>
+				<RegExpr attribute="Substitution" String="\w(?!\w)" context="#pop"/>
+			</context>
+			
+			<!-- This handles access of nested module classes and class methods -->
+			<context name="Member Access" attribute="Member" lineEndContext="#pop">
+				<!-- marks a message (being sent, not defined) -->
+				<RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?(?=[^\w\d\.\:])" context="#pop"/>
+				<RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?" context="#stay"/>
+				<RegExpr attribute="Constant" String="[A-Z]+_*(\d|[a-z])\w*(?=[^\w\d\.\:])" context="#pop"/>
+				<RegExpr attribute="Constant" String="[A-Z]+_*([0-9]|[a-z])\w*" context="#stay"/>
+				<RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*(?=[^\w\d\.\:])" context="#pop"/>
+				<RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*" context="#stay"/>
+				<Detect2Chars attribute="Operator" char=":" char1=":" context="#stay"/>
+				<DetectChar attribute="Member" char="." context="#stay"/>
+				
+				<AnyChar attribute="Operator" String="=+-*/%|&amp;[]{}~" context="#pop"/>
+				<DetectChar attribute="Ruby Comment" char="#" context="#pop"/>
+				<AnyChar attribute="Ruby Normal Text" String="()\" context="#pop"/>
+				<RegExpr attribute="Member" String="\W" context="#pop"/>
+			</context>
+			
+			<context name="Comment Line" attribute="Ruby Comment" lineEndContext="#pop">
+				<RegExpr attribute="Ruby Comment" String="\w\:\:\s" context="RDoc Label"/>
+				<keyword attribute="Alert" String="attention" context="#stay"/>
+				<RegExpr attribute="Keyword" context="#pop#pop" String="-?%&gt;" />
+			</context>
+			
+			<context name="General Comment" attribute="Ruby Comment" lineEndContext="#pop">
+				<keyword attribute="Dec" String="attention" context="#stay"/>
+			</context>
+			
+			<context name="RDoc Label" attribute="RDoc Value" lineEndContext="#pop"/>
+			
+			<!-- HEREDOC support
+				The contexts below support both normal and indented heredocs
+				-->
+			<!-- here we markup the heredoc markers -->
+			<context name="find_heredoc" attribute="Ruby Normal Text" lineEndContext="#pop" >
+				<RegExpr attribute="Keyword" context="apostrophed_normal_heredoc" String="'(\w+)'" />
+				<RegExpr attribute="Keyword" context="normal_heredoc" String="&quot;?(\w+)&quot;?" />
+			</context>
+			<context name="find_indented_heredoc" attribute="Ruby Normal Text" lineEndContext="#pop" >
+				<RegExpr attribute="Keyword" context="apostrophed_indented_heredoc" String="'(\w+)'" />
+				<RegExpr attribute="Keyword" context="indented_heredoc" String="&quot;?(\w+)&quot;?" />
+			</context>
+			<!-- these are the real heredoc contexts -->
+			<context name="indented_heredoc" attribute="Ruby Normal Text" lineEndContext="#stay" dynamic="true">
+				<!--				<RegExpr attribute="Keyword" context="#pop#pop" String="^\s*%1$" dynamic="true" endRegion="HereDocument"/>-->
+				<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>
+				<IncludeRules context="heredoc_rules" />
+			</context>
+			<context name="apostrophed_indented_heredoc" attribute="Ruby Normal Text" lineEndContext="#stay" dynamic="true">
+				<!--				<RegExpr attribute="Keyword" context="#pop#pop" String="^\s*%1$" dynamic="true" endRegion="HereDocument"/>-->
+				<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>
+			</context>
+			
+			<context name="normal_heredoc" attribute="Ruby Normal Text" lineEndContext="#stay" dynamic="true">
+				<!--				<RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument"/>-->
+				<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" column="0"/>
+				<IncludeRules context="heredoc_rules" />
+			</context>
+			<context name="apostrophed_normal_heredoc" attribute="Ruby Normal Text" lineEndContext="#stay" dynamic="true">
+				<!--				<RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument"/>-->
+				<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" column="0"/>
+			</context>
+			
+			<!-- rules for heredoc types -->
+			<context name="heredoc_rules" attribute="Ruby Normal Text" lineEndContext="#stay">
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+			</context>
+			
+			<!-- General delimited input support
+				The contexts below handle the various gdl formats
+				-->
+			<context name="find_gdl_input" attribute="Ruby Normal Text" lineEndContext="#pop">
+				
+				<!-- handle token arrays -->
+				<RegExpr attribute="GDL input" context="gdl_token_array_1" String="w\(" />
+				<RegExpr attribute="GDL input" context="gdl_token_array_2" String="w\{" />
+				<RegExpr attribute="GDL input" context="gdl_token_array_3" String="w\[" />
+				<RegExpr attribute="GDL input" context="gdl_token_array_4" String="w&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_token_array_5" String="w([^\s\w])" />
+				
+				<!-- handle apostrophed strings -->
+				<RegExpr attribute="GDL input" context="gdl_apostrophed_1" String="q\(" />
+				<RegExpr attribute="GDL input" context="gdl_apostrophed_2" String="q\{" />
+				<RegExpr attribute="GDL input" context="gdl_apostrophed_3" String="q\[" />
+				<RegExpr attribute="GDL input" context="gdl_apostrophed_4" String="q&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_apostrophed_5" String="q([^\s\w])" />
+				
+				<!-- handle shell commands -->
+				<RegExpr attribute="GDL input" context="gdl_shell_command_1" String="x\(" />
+				<RegExpr attribute="GDL input" context="gdl_shell_command_2" String="x\{" />
+				<RegExpr attribute="GDL input" context="gdl_shell_command_3" String="x\[" />
+				<RegExpr attribute="GDL input" context="gdl_shell_command_4" String="x&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_shell_command_5" String="x([^\s\w])" />
+				
+				<!-- handle regular expressions -->
+				<RegExpr attribute="GDL input" context="gdl_regexpr_1" String="r\(" />
+				<RegExpr attribute="GDL input" context="gdl_regexpr_2" String="r\{" />
+				<RegExpr attribute="GDL input" context="gdl_regexpr_3" String="r\[" />
+				<RegExpr attribute="GDL input" context="gdl_regexpr_4" String="r&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_regexpr_5" String="r([^\s\w])" />
+				
+				<!-- handle double-quoted strings -->
+				<!-- 
+					be careful to make this the last GDL ruleset, because the rule for
+					the short form %?foo? will otherwise catch any of the other formats
+					-->
+				<RegExpr attribute="GDL input" context="gdl_dq_string_1" String="Q?\(" />
+				<RegExpr attribute="GDL input" context="gdl_dq_string_2" String="Q?\{" />
+				<RegExpr attribute="GDL input" context="gdl_dq_string_3" String="Q?\[" />
+				<RegExpr attribute="GDL input" context="gdl_dq_string_4" String="Q?&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_dq_string_5" String="Q?([^\s\w])" />
+				
+			</context>
+			<!-- double-quoted string specific contexts follow -->
+			<context name="gdl_dq_string_1" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="dq_string_rules" />
+				<Detect2Chars attribute="String" char="\" char1=")" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_dq_string_1_nested" char="(" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_dq_string_1_nested" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="dq_string_rules" />
+				<DetectChar attribute="String" context="gdl_dq_string_1_nested" char="(" />
+				<DetectChar attribute="String" context="#pop" char=")" />
+			</context>
+			<!-- note that here substitution should win over nesting -->
+			<context name="gdl_dq_string_2" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="dq_string_rules" />
+				<Detect2Chars attribute="String" char="\" char1="}" context="#stay"/>
+				<DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />
+				<DetectChar attribute="String" context="gdl_dq_string_2_nested" char="{" />
+			</context>
+			<context name="gdl_dq_string_2_nested" attribute="String" lineEndContext="#stay" >
+				<DetectChar attribute="String" context="gdl_dq_string_2_nested" char="{" />
+				<DetectChar attribute="String" context="#pop" char="}" />
+				<IncludeRules context="dq_string_rules" />
+			</context>
+			
+			<context name="gdl_dq_string_3" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="dq_string_rules" />
+				<Detect2Chars attribute="String" char="\" char1="]" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_dq_string_3_nested" char="[" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_dq_string_3_nested" attribute="String" lineEndContext="#stay" >
+				<DetectChar attribute="String" context="gdl_dq_string_3_nested" char="[" />
+				<DetectChar attribute="String" context="#pop" char="]" />
+				<IncludeRules context="dq_string_rules" />
+			</context>
+			
+			<context name="gdl_dq_string_4" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="dq_string_rules" />
+				<Detect2Chars attribute="String" char="\" char1="&gt;" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_dq_string_4_nested" char="&lt;" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_dq_string_4_nested" attribute="String" lineEndContext="#stay" >
+				<DetectChar attribute="String" context="gdl_dq_string_4_nested" char="&lt;" />
+				<DetectChar attribute="String" context="#pop" char="&gt;" />
+				<IncludeRules context="dq_string_rules" />
+			</context>
+			
+			<!-- this format doesn't allow nesting. it is terminated by the next occurence of the
+				delimiter character
+				-->
+			<context name="gdl_dq_string_5" attribute="String" lineEndContext="#stay" dynamic="true">
+				<IncludeRules context="dq_string_rules" />
+				<RegExpr attribute="String" String="\\%1" context="#stay" dynamic="true" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
+			</context>
+			<!-- rules to be included in all dq_string contexts -->
+			<context name="dq_string_rules" attribute="String" lineEndContext="#stay" >
+				<Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+			</context>
+			
+			<!-- token array specific contexts -->
+			
+			<context name="gdl_token_array_1" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<Detect2Chars attribute="String" char="\" char1=")" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_token_array_1_nested" char="(" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_token_array_1_nested" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<DetectChar attribute="String" context="gdl_token_array_1_nested" char="(" />
+				<DetectChar attribute="String" context="#pop" char=")" />
+			</context>
+			
+			<context name="gdl_token_array_2" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<Detect2Chars attribute="String" char="\" char1="}" context="#stay"/>
+				<DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />
+				<DetectChar attribute="String" context="gdl_token_array_2_nested" char="{" />
+			</context>
+			<context name="gdl_token_array_2_nested" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<DetectChar attribute="String" context="gdl_token_array_2_nested" char="{" />
+				<DetectChar attribute="String" context="#pop" char="}" />
+			</context>
+			
+			<context name="gdl_token_array_3" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<Detect2Chars attribute="String" char="\" char1="]" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_token_array_3_nested" char="[" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_token_array_3_nested" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<DetectChar attribute="String" context="gdl_token_array_3_nested" char="[" />
+				<DetectChar attribute="String" context="#pop" char="]" />
+			</context>
+			
+			<context name="gdl_token_array_4" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<Detect2Chars attribute="String" char="\" char1="&gt;" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_token_array_4_nested" char="&lt;" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_token_array_4_nested" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<DetectChar attribute="String" context="gdl_token_array_4_nested" char="&lt;" />
+				<DetectChar attribute="String" context="#pop" char="&gt;" />
+			</context>
+			
+			<!-- this format doesn't allow nesting. it is terminated by the next occurence of the
+				delimiter character
+				-->
+			<context name="gdl_token_array_5" attribute="String" lineEndContext="#stay" dynamic="true">
+				<IncludeRules context="token_array_rules" />
+				<RegExpr attribute="String" String="\\%1" context="#stay" dynamic="true"/>
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
+			</context>
+			
+			<!-- rules to be included in all token_array contexts -->
+			<context name="token_array_rules" attribute="String" lineEndContext="#stay" >
+				<StringDetect attribute="String" String="\\" context="#stay"/>
+			</context>
+			
+			<!-- apostrophed string specific contexts -->
+			
+			<context name="gdl_apostrophed_1" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<Detect2Chars attribute="Raw String" char="\" char1=")" context="#stay"/>
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_1_nested" char="(" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_apostrophed_1_nested" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_1_nested" char="(" />
+				<DetectChar attribute="Raw String" context="#pop" char=")" />
+			</context>
+			
+			<context name="gdl_apostrophed_2" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<Detect2Chars attribute="Raw String" char="\" char1="}" context="#stay"/>
+				<DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_2_nested" char="{" />
+			</context>
+			<context name="gdl_apostrophed_2_nested" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_2_nested" char="{" />
+				<DetectChar attribute="Raw String" context="#pop" char="}" />
+			</context>
+			
+			<context name="gdl_apostrophed_3" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<Detect2Chars attribute="Raw String" char="\" char1="]" context="#stay"/>
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_3_nested" char="[" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_apostrophed_3_nested" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_3_nested" char="[" />
+				<DetectChar attribute="Raw String" context="#pop" char="]" />
+			</context>
+			
+			<context name="gdl_apostrophed_4" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<Detect2Chars attribute="Raw String" char="\" char1="&gt;" context="#stay"/>
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_4_nested" char="&lt;" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_apostrophed_4_nested" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_4_nested" char="&lt;" />
+				<DetectChar attribute="Raw String" context="#pop" char="&gt;" />
+			</context>
+			
+			<!-- this format doesn't allow nesting. it is terminated by the next occurence of the
+				delimiter character
+				-->
+			<context name="gdl_apostrophed_5" attribute="Raw String" lineEndContext="#stay" dynamic="true">
+				<IncludeRules context="apostrophed_rules" />
+				<RegExpr attribute="Raw String" String="\\%1" context="#stay" dynamic="true"/>
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
+			</context>
+			
+			<!-- rules to be included in all apostrophed contexts -->
+			<context name="apostrophed_rules" attribute="Raw String" lineEndContext="#stay" >
+				<Detect2Chars attribute="Raw String" char="\" char1="\" context="#stay"/>
+			</context>
+			
+			<!-- shell command specific contexts -->
+			
+			<context name="gdl_shell_command_1" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<Detect2Chars attribute="Command" char="\" char1=")" context="#stay"/>
+				<DetectChar attribute="Command" context="gdl_shell_command_1_nested" char="(" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_shell_command_1_nested" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<DetectChar attribute="Command" context="gdl_shell_command_1_nested" char="(" />
+				<DetectChar attribute="Command" context="#pop" char=")" />
+			</context>
+			
+			<context name="gdl_shell_command_2" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<Detect2Chars attribute="Command" char="\" char1="}" context="#stay"/>
+				<DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />
+				<DetectChar attribute="Command" context="gdl_shell_command_2_nested" char="{" />
+			</context>
+			<context name="gdl_shell_command_2_nested" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<DetectChar attribute="Command" context="gdl_shell_command_2_nested" char="{" />
+				<DetectChar attribute="Command" context="#pop" char="}" />
+			</context>
+			
+			<context name="gdl_shell_command_3" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<Detect2Chars attribute="Command" char="\" char1="]" context="#stay"/>
+				<DetectChar attribute="Command" context="gdl_shell_command_3_nested" char="[" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_shell_command_3_nested" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<DetectChar attribute="Command" context="gdl_shell_command_3_nested" char="[" />
+				<DetectChar attribute="Command" context="#pop" char="]" />
+			</context>
+			
+			<context name="gdl_shell_command_4" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<Detect2Chars attribute="Command" char="\" char1="&gt;" context="#stay"/>
+				<DetectChar attribute="Command" context="gdl_shell_command_4_nested" char="&lt;" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_shell_command_4_nested" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<DetectChar attribute="Command" context="gdl_shell_command_4_nested" char="&lt;" />
+				<DetectChar attribute="Command" context="#pop" char="&gt;" />
+			</context>
+			
+			<!-- this format doesn't allow nesting. it is terminated by the next occurence of the
+				delimiter character
+				-->
+			<context name="gdl_shell_command_5" attribute="Command" lineEndContext="#stay" dynamic="true">
+				<IncludeRules context="shell_command_rules" />
+				<RegExpr attribute="Command" String="\\%1" context="#stay" dynamic="true" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
+			</context>
+			
+			<!-- rules to be included in all shell_command contexts -->
+			<context name="shell_command_rules" attribute="Command" lineEndContext="#stay" >
+				<Detect2Chars attribute="Command" char="\" char1="\" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+			</context>
+			
+			<!-- regular expression specific contexts -->
+			
+			<context name="gdl_regexpr_1" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<Detect2Chars attribute="Regular Expression" char="\" char1=")" context="#stay"/>
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_1_nested" char="(" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\)[uiomxn]*" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_regexpr_1_nested" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_1_nested" char="(" />
+				<DetectChar attribute="Regular Expression" context="#pop" char=")" />
+			</context>
+			
+			<context name="gdl_regexpr_2" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<Detect2Chars attribute="Regular Expression" char="\" char1="}" context="#stay"/>
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\}[uiomxn]*" endRegion="GdlInput" />
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_2_nested" char="{" />
+			</context>
+			<context name="gdl_regexpr_2_nested" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_2_nested" char="{" />
+				<DetectChar attribute="Regular Expression" context="#pop" char="}" />
+			</context>
+			
+			<context name="gdl_regexpr_3" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<Detect2Chars attribute="Regular Expression" char="\" char1="]" context="#stay"/>
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_3_nested" char="[" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\][uiomxn]*" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_regexpr_3_nested" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_3_nested" char="[" />
+				<DetectChar attribute="Regular Expression" context="#pop" char="]" />
+			</context>
+			
+			<context name="gdl_regexpr_4" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<Detect2Chars attribute="Regular Expression" char="\" char1="&gt;" context="#stay"/>
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_4_nested" char="&lt;" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="&gt;[uiomxn]*" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_regexpr_4_nested" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_4_nested" char="&lt;" />
+				<DetectChar attribute="Regular Expression" context="#pop" char="&gt;" />
+			</context>
+			
+			<!-- this format doesn't allow nesting. it is terminated by the next occurence of the
+				delimiter character
+				-->
+			<context name="gdl_regexpr_5" attribute="Regular Expression" lineEndContext="#stay" dynamic="true">
+				<IncludeRules context="regexpr_rules" />
+				<RegExpr attribute="Regular Expression" String="\\%1" context="#stay" dynamic="true" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1[uiomxn]*" dynamic="true" endRegion="GdlInput" />
+			</context>
+			
+			<!-- rules to be included in all regexpr contexts -->
+			<context name="regexpr_rules" attribute="Regular Expression" lineEndContext="#stay" >
+				<Detect2Chars attribute="Regular Expression" char="\" char1="\" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+			</context>
+			
+			<!-- END of General delimited input support -->
+			
+			<!-- handle data in script -->
+			<context name="DATA" attribute="Data" lineEndContext="#stay"/>
+		<!-- END Ruby contexts -->			
+		</contexts>
+		
+		<itemDatas>
+		<!-- BEGIN Ruby itemData -->
+			<itemData name="Ruby Normal Text" defStyleNum="dsNormal"/>
+			
+			<itemData name="Keyword" defStyleNum="dsKeyword"/>
+			<itemData name="Attribute Definition" defStyleNum="dsOthers"/>
+			<itemData name="Access Control" defStyleNum="dsKeyword" color="#0000FF"/>
+			<itemData name="Definition" defStyleNum="dsKeyword"/>
+			<itemData name="Pseudo variable" defStyleNum="dsDecVal"/>
+			
+			<itemData name="Dec" defStyleNum="dsDecVal"/>
+			<itemData name="Float" defStyleNum="dsFloat"/>
+			<itemData name="Char" defStyleNum="dsChar"/>
+			<itemData name="Octal" defStyleNum="dsBaseN"/>
+			<itemData name="Hex" defStyleNum="dsBaseN"/>
+			<itemData name="Bin" defStyleNum="dsBaseN"/>
+			
+			<itemData name="Symbol" defStyleNum="dsString" color="#D40000"/>
+			<itemData name="String" defStyleNum="dsString"/>
+			<itemData name="Raw String" defStyleNum="dsString" color="#DD4A4A" selColor="#DD4A4A"/>
+			<itemData name="Command" defStyleNum="dsString" color="#AA3000"/>
+			<itemData name="Message" defStyleNum="dsNormal" color="#4000A7"/> <!-- #4A00C0 -->
+			<itemData name="Regular Expression" defStyleNum="dsOthers" color="#4A5704"/>
+			<itemData name="Substitution"	defStyleNum="dsOthers"/>
+			<itemData name="Data" defStyleNum="dsNormal"/>
+			<!-- short for 'general delimited input' -->
+			<itemData name="GDL input" defStyleNum="dsOthers" />
+			
+			<itemData name="Default globals" defStyleNum="dsDataType" color="#C00000" bold="1"/>
+			<itemData name="Global Variable" defStyleNum="dsDataType" color="#C00000"/>
+			<itemData name="Global Constant" defStyleNum="dsDataType" color="#bb1188" bold="1"/>
+			<itemData name="Constant" defStyleNum="dsDataType"/>
+			<itemData name="Constant Value" defStyleNum="dsDataType" color="#bb1188"/>
+			<itemData name="Kernel methods" defStyleNum="dsNormal" color="#000080" selColor="#ffffff"/> <!-- #CC0E86 -->
+			<itemData name="Member" defStyleNum="dsNormal"/>
+			<itemData name="Instance Variable" defStyleNum="dsOthers"/>
+			<itemData name="Class Variable" defStyleNum="dsOthers"/>
+			
+			<itemData name="Ruby Comment" defStyleNum="dsComment"/>
+			<itemData name="Blockcomment" defStyleNum="dsComment"/>
+			<itemData name="Region Marker" defStyleNum="dsNormal" color="#0000ff"/>
+			<itemData name="RDoc Value" defStyleNum="dsOthers"/>
+			
+			<!-- use these to mark errors and alerts things -->
+			<itemData name="Error" defStyleNum="dsError" />
+			<itemData name="Alert" defStyleNum="dsAlert" />
+
+			<itemData name="Delimiter" defStyleNum="dsChar"/>
+			<itemData name="Expression" defStyleNum="dsOthers"/>
+			<itemData name="Operator" defStyleNum="dsChar"/>
+		<!-- END Ruby itemData -->
+			
+		<!-- BEGIN HTML itemData -->
+			<itemData name="Normal Text" defStyleNum="dsNormal" />
+			<itemData name="Comment" defStyleNum="dsComment" />
+			<itemData name="CDATA" defStyleNum="dsBaseN" bold="1" />
+			<itemData name="Processing Instruction" defStyleNum="dsKeyword" />
+			<itemData name="Doctype" defStyleNum="dsDataType" bold="1" />
+			<itemData name="Element" defStyleNum="dsKeyword" />
+			<itemData name="Attribute" defStyleNum="dsOthers" />
+			<itemData name="Value" defStyleNum="dsString" color="#a00" />
+			<itemData name="EntityRef" defStyleNum="dsDecVal" />
+			<itemData name="PEntityRef" defStyleNum="dsDecVal" />
+			<itemData name="Error" defStyleNum="dsError" />
+		<!-- END HTML itemData -->
+		
+		</itemDatas>
+	</highlighting>
+	<general>
+		<comments>
+			<comment name="singleLine" start="#"/>
+			<comment name="multiLine" start="&lt;!--" end="--&gt;" />
+		</comments>
+		<keywords casesensitive="1" weakDeliminator="!?"/> 
+	</general>
+</language>
diff --git a/xml/ruby.xml b/xml/ruby.xml
new file mode 100644
--- /dev/null
+++ b/xml/ruby.xml
@@ -0,0 +1,873 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+
+<!--
+  Ruby syntax highlighting definition for Kate.
+  
+  Copyright (C) 2004  by Sebastian Vuorinen (sebastian dot vuorinen at helsinki dot fi)
+  Copyright (C) 2004  by Stefan Lang (langstefan@gmx.at)
+
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Library General Public
+  License as published by the Free Software Foundation; either
+  version 2 of the License, or (at your option) any later version.
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  Library General Public License for more details.
+
+  You should have received a copy of the GNU Library General Public
+  License along with this library; if not, write to the
+  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+  Boston, MA  02110-1301, USA.
+-->
+
+<!--
+	TODO:	* Regular expressions spanning over multiple lines
+				work only if newlines are escaped.
+			* "Nested" HERE documents aren't recognized.
+			* Division is detected correctly only, if whitespace
+				is around the "/" operator.
+				E.g.:	detected correctly:				1 / 2
+					"/" interpreted as regex start:		1/2
+-->
+
+<!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". -->
+<language name="Ruby" version="1.17" kateversion="2.4" section="Scripts" extensions="*.rb;*.rjs;*.rxml" mimetype="application/x-ruby" author="Stefan Lang (langstefan@gmx.at), Sebastian Vuorinen (sebastian.vuorinen@helsinki.fi)" license="LGPL">
+	
+	<highlighting>
+	
+		<list name="keywords">
+			<item> BEGIN </item>
+			<item> END </item>
+			<item> and </item>
+			<item> begin </item>
+			<item> break </item>
+			<item> case </item>
+			<item> defined? </item>
+			<item> do </item>
+			<item> else </item>
+			<item> elsif </item>
+			<item> end </item>
+			<item> ensure </item>
+			<item> for </item>
+			<item> if </item>
+			<item> in </item>
+			<item> include </item>
+			<item> next </item>
+			<item> not </item>
+			<item> or </item>
+			<item> redo </item>
+			<item> rescue </item>
+			<item> retry </item>
+			<item> return </item>
+			<item> then </item>
+			<item> unless </item>
+			<item> until </item>
+			<item> when </item>
+			<item> while </item>
+			<item> yield </item>
+		</list>
+		
+		<list name="access-control">
+			<item> private_class_method </item>
+			<item> private </item>
+			<item> protected </item>
+			<item> public_class_method </item>
+			<item> public </item>
+		</list>
+
+		<list name="attribute-definitions">
+			<item> attr_reader </item>
+			<item> attr_writer </item>
+			<item> attr_accessor </item>
+		</list>
+		
+		<list name="definitions">
+			<item> alias </item>
+			<item> module </item>
+			<item> class </item>
+			<item> def </item>
+			<item> undef </item>
+		</list>
+		
+		<list name="pseudo-variables">
+			<item> self </item>
+			<item> super </item>
+			<item> nil </item>
+			<item> false </item>
+			<item> true </item>
+			<item> caller </item>
+			<item> __FILE__ </item>
+			<item> __LINE__ </item>
+		</list>
+		
+		<list name="default-globals">
+			<item> $stdout </item>
+			<item> $defout </item>
+			<item> $stderr </item>
+			<item> $deferr </item>
+			<item> $stdin </item>
+		</list>
+		
+		<!-- Kernel module methods.
+			NOTE: Methods ending in ? or !
+				are included below as regexes.
+		-->
+		<list name="kernel-methods">
+			<!-- backquote ` -->
+			<item> abort </item>
+			<item> at_exit </item>
+			<item> autoload </item>
+			<item> autoload? </item>
+			<item> binding </item>
+			<item> block_given? </item>
+			<item> callcc </item>
+			<item> caller </item>
+			<item> catch </item>
+			<item> chomp </item>
+			<item> chomp! </item>
+			<item> chop </item>
+			<item> chop! </item>
+			<item> eval </item>
+			<item> exec </item>
+			<item> exit </item>
+			<item> exit! </item>
+			<item> fail </item>
+			<item> fork </item>
+			<item> format </item>
+			<item> getc </item>
+			<item> gets </item>
+			<item> global_variables </item>
+			<item> gsub </item>
+			<item> gsub! </item>
+			<item> iterator? </item>
+			<item> lambda </item>
+			<item> load </item>
+			<item> local_variables </item>
+			<item> loop </item>
+			<item> method_missing </item>
+			<item> open </item>
+			<item> p </item>
+			<item> print </item>
+			<item> printf </item>
+			<item> proc </item>
+			<item> putc </item>
+			<item> puts </item>
+			<item> raise </item>
+			<item> rand </item>
+			<item> readline </item>
+			<item> readlines </item>
+			<item> require </item>
+			<item> scan </item>
+			<item> select </item>
+			<item> set_trace_func </item>
+			<item> sleep </item>
+			<item> split </item>
+			<item> sprintf </item>
+			<item> srand </item>
+			<item> sub </item>
+			<item> sub! </item>
+			<item> syscall </item>
+			<item> system </item>
+			<item> test </item>
+			<item> throw </item>
+			<item> trace_var </item>
+			<item> trap </item>
+			<item> untrace_var </item>
+			<item> warn </item>
+		</list>
+		
+		<list name="attention">
+			<item> TODO </item>
+			<item> FIXME </item>
+			<item> NOTE </item>
+		</list>
+		
+		<contexts>
+			<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+				<!-- ruby ignores newline after \ -->
+				<LineContinue attribute="Normal Text" context="Line Continue"/>
+				
+				<!-- __END__ token on own line. -->
+				<RegExpr attribute="Keyword" String="__END__$" context="DATA" column="0"/>
+			
+				<!-- "shebang" line -->
+				<RegExpr attribute="Keyword" String="#!\/.*" context="#stay" column="0"/>
+				
+				<!-- "def" - "end" blocks -->
+				<!-- check for statement modifiers with regexes -->
+                <DetectChar attribute="Operator" char="{" context="Find closing block brace" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="(\=|\(|\[|\{)\s*(if|unless|while|until)\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block" firstNonSpace="true"/>
+				<RegExpr attribute="Keyword" String="\;\s*(while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" beginRegion="def block" firstNonSpace="true"/>
+				<RegExpr attribute="Keyword" String="\;\s*(if|unless)\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bclass\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bmodule\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bbegin\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bfor\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bcase\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bdo\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bdef\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bend\b" context="#stay" endRegion="def block"/>
+				<!-- elsif/else close the current block and start a new one -->
+				<RegExpr attribute="Keyword" String="(\b|^\s*)(else|elsif|rescue|ensure)(\b|$)" context="#stay" endRegion="def block" beginRegion="def block"/>
+				
+				<StringDetect attribute="Operator" String="..." context="#stay"/>
+				<Detect2Chars attribute="Operator" char="." char1="." context="#stay"/>
+				
+				<!-- marks a message (being sent, not defined) -->
+				<RegExpr attribute="Message" String="\.[_a-z][_a-zA-Z0-9]*(\?|\!|\b)" context="#stay"/>
+				
+				<!-- Check for "ASCII code operator". e.g.: ?a -->
+				<RegExpr attribute="Dec" String="\s\?(\\M\-)?(\\C\-)?\\?\S" context="#stay"/>
+				
+				<keyword attribute="Keyword" String="keywords" context="#stay"/>
+				<keyword attribute="Attribute Definition" String="attribute-definitions"  context="#stay"/>
+				<keyword attribute="Access Control" String="access-control" context="#stay"/>
+				<keyword attribute="Definition" String="definitions"  context="#stay" />
+				<keyword attribute="Pseudo variable" String="pseudo-variables"  context="#stay"/>
+				<keyword attribute="Default globals" String="default-globals" context="#stay"/>
+				<keyword attribute="Kernel methods" String="kernel-methods" context="#stay"/>
+				
+				<!-- (global) vars starting with $
+						Match them before $_.
+				-->
+				<RegExpr attribute="Global Variable" String="\$[a-zA-Z_0-9]+" context="#stay"/>
+				<RegExpr attribute="Global Variable" String="\$\-[a-zA-z_]\b" context="#stay"/>
+				<!-- special-character globals -->
+				<RegExpr attribute="Default globals" String="\$[\d_*`\!:?'/\\\-\&amp;&quot;]" context="#stay"/>
+				<RegExpr attribute="Global Constant" String="\b[_A-Z]+[A-Z_0-9]+\b" context="#stay"/>
+				<!-- Generally a module or class name like "File", "MyModule_1", .. -->
+				<RegExpr attribute="Constant" String="\b[A-Z]+_*([0-9]|[a-z])[_a-zA-Z0-9]*\b" context="#stay"/>
+				
+				<RegExpr attribute="Hex" String="\b\-?0[xX][_0-9a-fA-F]+" context="#stay"/>
+				<RegExpr attribute="Bin" String="\b\-?0[bB][_01]+" context="#stay"/>
+				<RegExpr attribute="Octal" String="\b\-?0[1-7][_0-7]*" context="#stay"/>
+				<RegExpr attribute="Float" String="\b\-?[0-9][0-9_]*\.[0-9][0-9_]*([eE]\-?[1-9][0-9]*(\.[0-9]*)?)?" context="#stay"/>
+				<RegExpr attribute="Dec" String="\b\-?[1-9][0-9_]*\b" context="#stay"/>
+				<Int attribute="Dec" context="#stay"/>
+				<HlCChar attribute="Char" context="#stay"/>
+				
+				<!-- Check for =begin before assignment operator. -->
+				<StringDetect attribute="Blockcomment" String="=begin" context="Embedded documentation" beginRegion="comment block" column="0"/>
+				
+				<!-- recognize the beginning of a HEREDOC
+					This uses new features in Kate 2.3 and later
+					
+					There is no other chance of keeping heredoc apart from the
+					push operator '<<' than requiring to put space between the operator
+					and the string.
+				-->
+				<RegExpr attribute="Operator" context="find_indented_heredoc" String="\s*&lt;&lt;-(?=\w+|[&quot;'])" beginRegion="HereDocument" />
+				<RegExpr attribute="Operator" context="find_heredoc" String="\s*&lt;&lt;(?=\w+|[&quot;'])" beginRegion="HereDocument" />
+				
+				<DetectChar attribute="Operator" char="." context="#stay"/>
+				<Detect2Chars attribute="Operator" char="&amp;" char1="&amp;" context="#stay"/>
+				<Detect2Chars attribute="Operator" char="|" char1="|" context="#stay"/>
+				<RegExpr attribute="Operator" String="\s[\?\:\%/]\s" context="#stay"/>
+				<RegExpr attribute="Operator" String="[|&amp;&lt;&gt;\^\+*~\-=]+" context="#stay"/>
+				<!-- regexp hack -->
+				<RegExpr attribute="Operator" String="\s!" context="#stay"/>
+				<RegExpr attribute="Operator" String="/=\s" context="#stay" insensitive="0"/>
+				<StringDetect attribute="Operator" String="%=" context="#stay" insensitive="0"/>
+				<Detect2Chars attribute="Operator" char=":" char1=":" context="Member Access"/>
+				
+				<RegExpr attribute="Symbol" String=":[a-zA-Z_][a-zA-Z0-9_]*" context="#stay"/>
+				
+				<DetectChar attribute="String" char="&quot;" context="Quoted String"/>
+				<DetectChar attribute="Raw String" char="'" context="Apostrophed String"/>
+				<DetectChar attribute="Command" char="`" context="Command String"/>
+				
+				<StringDetect attribute="Normal Text" String="?#" context="#stay"/>
+				
+				<RegExpr attribute="Comment" String="#\s*BEGIN.*$"  context="#stay" beginRegion="marker" column="0"/>
+				<RegExpr attribute="Comment" String="#\s*END.*$"  context="#stay" endRegion="marker" column="0"/>
+				<RegExpr attribute="Comment" String="#"  context="Comment Line" firstNonSpace="true"/>
+				<RegExpr attribute="Comment" String="(\b|\s)#"  context="General Comment"/>
+				
+				<RegExpr attribute="Delimiter" String="[\[\]]+"  context="#stay"/>
+				<DetectChar attribute="Delimiter" char="{" context="#stay" beginRegion="def block"/>
+				<DetectChar attribute="Delimiter" char="}" context="#stay" endRegion="def block"/>
+				
+				<RegExpr attribute="Instance Variable" String="@[a-zA-Z_0-9]+" context="#stay"/>
+				<RegExpr attribute="Class Variable" String="@@[a-zA-Z_0-9]+" context="#stay"/>
+				
+				<!-- handle the different regular expression formats -->
+				<DetectChar attribute="Regular Expression" char="/" context="RegEx 1"/>
+				
+				<!-- recognize the beginning of a general delimited input format -->
+				<!-- this moves to the next context to separate out the exact nature of the GDL input -->
+				<RegExpr attribute="GDL input" context="find_gdl_input" String="\s*[%](?=[Qqxw]?[^\s])" beginRegion="GdlInput" />
+				
+			</context>
+			
+			<context name="Line Continue" attribute="Normal Text" lineEndContext="#pop">
+				<RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)" context="#stay" firstNonSpace="true"/>
+				<RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" firstNonSpace="true"/>
+				<IncludeRules context="Normal"/>
+			</context>
+
+            <context name="Find closing block brace" attribute="Normal Text" lineEndContext="#stay">
+                <DetectChar attribute="Operator" char="}" context="#pop" endRegion="def block"/>
+                <IncludeRules context="Normal"/>
+            </context>
+			
+			<context name="Quoted String" attribute="String" lineEndContext="#stay">
+				<StringDetect attribute="String" String="\\" context="#stay"/>
+				<RegExpr attribute="String" String="\\\&quot;" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+				<!--HlCChar attribute="Char" context="#pop"/-->
+				<DetectChar char="&quot;" attribute="String" context="#pop"/>
+			</context>
+			
+			<context name="Apostrophed String" attribute="Raw String" lineEndContext="#stay">
+				<!-- <HlCChar attribute="Char" context="#pop"/> -->
+				<StringDetect attribute="String" String="\\" context="#stay"/>
+				<RegExpr attribute="String" String="\\\'" context="#stay"/>
+				<DetectChar char="'" attribute="Raw String" context="#pop"/>
+			</context>
+			
+			<context name="Command String" attribute="Command" lineEndContext="#stay">
+				<StringDetect attribute="String" String="\\" context="#stay"/>
+				<RegExpr attribute="String" String="\\\`" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+				<HlCChar attribute="Char" context="#pop"/>
+				<DetectChar char="`" attribute="Command" context="#pop"/>
+			</context>
+			
+			<context name="Embedded documentation" attribute="Comment" lineEndContext="#stay">
+				<StringDetect attribute="Comment" String="=end" context="#pop" endRegion="comment block" column="0"/>
+			</context>
+			
+			<context name="RegEx 1" attribute="Regular Expression" lineEndContext="#stay">
+				<RegExpr attribute="Regular Expression" String="\\\/" context="#stay"/>
+				<RegExpr attribute="Regular Expression" String="[^\\]$" context="#pop"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+				<RegExpr attribute="Regular Expression" String="/[uiomxn]*" context="#pop"/>
+			</context>
+			
+			<!-- Substitutions can be nested -->
+			<context name="Subst" attribute="Normal Text" lineEndContext="#stay">
+				<DetectChar attribute="Substitution" char="}" context="#pop"/>
+				<!-- Highlight substitution as code. -->
+				<IncludeRules context="Normal"/>
+			</context>
+
+			<context name="Short Subst" attribute="Substitution" lineEndContext="#pop">
+				<!-- Check for e.g.: "#@var#@@xy" -->
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="#stay"/>
+				<RegExpr attribute="Substitution" String="\w(?!\w)" context="#pop"/>
+			</context>
+			
+			<!-- This handles access of nested module classes and class methods -->
+			<context name="Member Access" attribute="Member" lineEndContext="#pop">
+				<!-- marks a message (being sent, not defined) -->
+				<RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?(?=[^\w\d\.\:])" context="#pop"/>
+				<RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?" context="#stay"/>
+				<RegExpr attribute="Constant" String="[A-Z]+_*(\d|[a-z])\w*(?=[^\w\d\.\:])" context="#pop"/>
+				<RegExpr attribute="Constant" String="[A-Z]+_*([0-9]|[a-z])\w*" context="#stay"/>
+				<RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*(?=[^\w\d\.\:])" context="#pop"/>
+				<RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*" context="#stay"/>
+				<Detect2Chars attribute="Operator" char=":" char1=":" context="#stay"/>
+				<DetectChar attribute="Member" char="." context="#stay"/>
+				
+				<AnyChar attribute="Operator" String="=+-*/%|&amp;[]{}~" context="#pop"/>
+				<DetectChar attribute="Comment" char="#" context="#pop"/>
+				<AnyChar attribute="Normal Text" String="()\" context="#pop"/>
+				<RegExpr attribute="Member" String="\W" context="#pop"/>
+			</context>
+			
+			<context name="Comment Line" attribute="Comment" lineEndContext="#pop">
+				<RegExpr attribute="Comment" String="\w\:\:\s" context="RDoc Label"/>
+				<keyword attribute="Alert" String="attention" context="#stay"/>
+			</context>
+			
+			<context name="General Comment" attribute="Comment" lineEndContext="#pop">
+				<keyword attribute="Dec" String="attention" context="#stay"/>
+			</context>
+			
+			<context name="RDoc Label" attribute="RDoc Value" lineEndContext="#pop"/>
+			
+			<!-- HEREDOC support
+				The contexts below support both normal and indented heredocs
+			 -->
+			<!-- here we markup the heredoc markers -->
+			<context name="find_heredoc" attribute="Normal Text" lineEndContext="#pop" >
+				<RegExpr attribute="Keyword" context="apostrophed_normal_heredoc" String="'(\w+)'" />
+				<RegExpr attribute="Keyword" context="normal_heredoc" String="&quot;?(\w+)&quot;?" />
+			</context>
+			<context name="find_indented_heredoc" attribute="Normal Text" lineEndContext="#pop" >
+				<RegExpr attribute="Keyword" context="apostrophed_indented_heredoc" String="'(\w+)'" />
+				<RegExpr attribute="Keyword" context="indented_heredoc" String="&quot;?(\w+)&quot;?" />
+			</context>
+			<!-- these are the real heredoc contexts -->
+			<context name="indented_heredoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
+<!--				<RegExpr attribute="Keyword" context="#pop#pop" String="^\s*%1$" dynamic="true" endRegion="HereDocument"/>-->
+				<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>
+				<IncludeRules context="heredoc_rules" />
+			</context>
+			<context name="apostrophed_indented_heredoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
+<!--				<RegExpr attribute="Keyword" context="#pop#pop" String="^\s*%1$" dynamic="true" endRegion="HereDocument"/>-->
+				<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>
+			</context>
+			
+			<context name="normal_heredoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
+<!--				<RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument"/>-->
+				<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" column="0"/>
+				<IncludeRules context="heredoc_rules" />
+			</context>
+			<context name="apostrophed_normal_heredoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
+<!--				<RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument"/>-->
+				<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" column="0"/>
+			</context>
+			
+			<!-- rules for heredoc types -->
+			<context name="heredoc_rules" attribute="Normal Text" lineEndContext="#stay">
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+			</context>
+			
+			<!-- General delimited input support
+				The contexts below handle the various gdl formats
+			 -->
+			<context name="find_gdl_input" attribute="Normal Text" lineEndContext="#pop">
+				
+				<!-- handle token arrays -->
+				<RegExpr attribute="GDL input" context="gdl_token_array_1" String="w\(" />
+				<RegExpr attribute="GDL input" context="gdl_token_array_2" String="w\{" />
+				<RegExpr attribute="GDL input" context="gdl_token_array_3" String="w\[" />
+				<RegExpr attribute="GDL input" context="gdl_token_array_4" String="w&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_token_array_5" String="w([^\s\w])" />
+				
+				<!-- handle apostrophed strings -->
+				<RegExpr attribute="GDL input" context="gdl_apostrophed_1" String="q\(" />
+				<RegExpr attribute="GDL input" context="gdl_apostrophed_2" String="q\{" />
+				<RegExpr attribute="GDL input" context="gdl_apostrophed_3" String="q\[" />
+				<RegExpr attribute="GDL input" context="gdl_apostrophed_4" String="q&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_apostrophed_5" String="q([^\s\w])" />
+				
+				<!-- handle shell commands -->
+				<RegExpr attribute="GDL input" context="gdl_shell_command_1" String="x\(" />
+				<RegExpr attribute="GDL input" context="gdl_shell_command_2" String="x\{" />
+				<RegExpr attribute="GDL input" context="gdl_shell_command_3" String="x\[" />
+				<RegExpr attribute="GDL input" context="gdl_shell_command_4" String="x&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_shell_command_5" String="x([^\s\w])" />
+				
+				<!-- handle regular expressions -->
+				<RegExpr attribute="GDL input" context="gdl_regexpr_1" String="r\(" />
+				<RegExpr attribute="GDL input" context="gdl_regexpr_2" String="r\{" />
+				<RegExpr attribute="GDL input" context="gdl_regexpr_3" String="r\[" />
+				<RegExpr attribute="GDL input" context="gdl_regexpr_4" String="r&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_regexpr_5" String="r([^\s\w])" />
+				
+				<!-- handle double-quoted strings -->
+				<!-- 
+					  be careful to make this the last GDL ruleset, because the rule for
+					  the short form %?foo? will otherwise catch any of the other formats
+				-->
+				<RegExpr attribute="GDL input" context="gdl_dq_string_1" String="Q?\(" />
+				<RegExpr attribute="GDL input" context="gdl_dq_string_2" String="Q?\{" />
+				<RegExpr attribute="GDL input" context="gdl_dq_string_3" String="Q?\[" />
+				<RegExpr attribute="GDL input" context="gdl_dq_string_4" String="Q?&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_dq_string_5" String="Q?([^\s\w])" />
+				
+			</context>
+			<!-- double-quoted string specific contexts follow -->
+			<context name="gdl_dq_string_1" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="dq_string_rules" />
+				<Detect2Chars attribute="String" char="\" char1=")" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_dq_string_1_nested" char="(" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_dq_string_1_nested" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="dq_string_rules" />
+				<DetectChar attribute="String" context="gdl_dq_string_1_nested" char="(" />
+				<DetectChar attribute="String" context="#pop" char=")" />
+			</context>
+			<!-- note that here substitution should win over nesting -->
+			<context name="gdl_dq_string_2" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="dq_string_rules" />
+				<Detect2Chars attribute="String" char="\" char1="}" context="#stay"/>
+				<DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />
+				<DetectChar attribute="String" context="gdl_dq_string_2_nested" char="{" />
+			</context>
+			<context name="gdl_dq_string_2_nested" attribute="String" lineEndContext="#stay" >
+				<DetectChar attribute="String" context="gdl_dq_string_2_nested" char="{" />
+				<DetectChar attribute="String" context="#pop" char="}" />
+				<IncludeRules context="dq_string_rules" />
+			</context>
+	
+			<context name="gdl_dq_string_3" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="dq_string_rules" />
+				<Detect2Chars attribute="String" char="\" char1="]" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_dq_string_3_nested" char="[" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_dq_string_3_nested" attribute="String" lineEndContext="#stay" >
+				<DetectChar attribute="String" context="gdl_dq_string_3_nested" char="[" />
+				<DetectChar attribute="String" context="#pop" char="]" />
+				<IncludeRules context="dq_string_rules" />
+			</context>
+	
+			<context name="gdl_dq_string_4" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="dq_string_rules" />
+				<Detect2Chars attribute="String" char="\" char1="&gt;" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_dq_string_4_nested" char="&lt;" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_dq_string_4_nested" attribute="String" lineEndContext="#stay" >
+				<DetectChar attribute="String" context="gdl_dq_string_4_nested" char="&lt;" />
+				<DetectChar attribute="String" context="#pop" char="&gt;" />
+				<IncludeRules context="dq_string_rules" />
+			</context>
+			
+			<!-- this format doesn't allow nesting. it is terminated by the next occurence of the
+				delimiter character
+			 -->
+			<context name="gdl_dq_string_5" attribute="String" lineEndContext="#stay" dynamic="true">
+				<IncludeRules context="dq_string_rules" />
+				<RegExpr attribute="String" String="\\%1" context="#stay" dynamic="true" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
+			</context>
+			<!-- rules to be included in all dq_string contexts -->
+			<context name="dq_string_rules" attribute="String" lineEndContext="#stay" >
+				<Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+			</context>
+			
+			<!-- token array specific contexts -->
+			
+			<context name="gdl_token_array_1" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<Detect2Chars attribute="String" char="\" char1=")" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_token_array_1_nested" char="(" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_token_array_1_nested" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<DetectChar attribute="String" context="gdl_token_array_1_nested" char="(" />
+				<DetectChar attribute="String" context="#pop" char=")" />
+			</context>
+			
+			<context name="gdl_token_array_2" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<Detect2Chars attribute="String" char="\" char1="}" context="#stay"/>
+				<DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />
+				<DetectChar attribute="String" context="gdl_token_array_2_nested" char="{" />
+			</context>
+			<context name="gdl_token_array_2_nested" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<DetectChar attribute="String" context="gdl_token_array_2_nested" char="{" />
+				<DetectChar attribute="String" context="#pop" char="}" />
+			</context>
+	
+			<context name="gdl_token_array_3" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<Detect2Chars attribute="String" char="\" char1="]" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_token_array_3_nested" char="[" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_token_array_3_nested" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<DetectChar attribute="String" context="gdl_token_array_3_nested" char="[" />
+				<DetectChar attribute="String" context="#pop" char="]" />
+			</context>
+	
+			<context name="gdl_token_array_4" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<Detect2Chars attribute="String" char="\" char1="&gt;" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_token_array_4_nested" char="&lt;" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_token_array_4_nested" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<DetectChar attribute="String" context="gdl_token_array_4_nested" char="&lt;" />
+				<DetectChar attribute="String" context="#pop" char="&gt;" />
+			</context>
+			
+			<!-- this format doesn't allow nesting. it is terminated by the next occurence of the
+				delimiter character
+			 -->
+			<context name="gdl_token_array_5" attribute="String" lineEndContext="#stay" dynamic="true">
+				<IncludeRules context="token_array_rules" />
+				<RegExpr attribute="String" String="\\%1" context="#stay" dynamic="true"/>
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
+			</context>
+			
+			<!-- rules to be included in all token_array contexts -->
+			<context name="token_array_rules" attribute="String" lineEndContext="#stay" >
+				<StringDetect attribute="String" String="\\" context="#stay"/>
+			</context>
+			
+			<!-- apostrophed string specific contexts -->
+			
+			<context name="gdl_apostrophed_1" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<Detect2Chars attribute="Raw String" char="\" char1=")" context="#stay"/>
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_1_nested" char="(" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_apostrophed_1_nested" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_1_nested" char="(" />
+				<DetectChar attribute="Raw String" context="#pop" char=")" />
+			</context>
+			
+			<context name="gdl_apostrophed_2" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<Detect2Chars attribute="Raw String" char="\" char1="}" context="#stay"/>
+				<DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_2_nested" char="{" />
+			</context>
+			<context name="gdl_apostrophed_2_nested" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_2_nested" char="{" />
+				<DetectChar attribute="Raw String" context="#pop" char="}" />
+			</context>
+	
+			<context name="gdl_apostrophed_3" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<Detect2Chars attribute="Raw String" char="\" char1="]" context="#stay"/>
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_3_nested" char="[" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_apostrophed_3_nested" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_3_nested" char="[" />
+				<DetectChar attribute="Raw String" context="#pop" char="]" />
+			</context>
+	
+			<context name="gdl_apostrophed_4" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<Detect2Chars attribute="Raw String" char="\" char1="&gt;" context="#stay"/>
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_4_nested" char="&lt;" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_apostrophed_4_nested" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_4_nested" char="&lt;" />
+				<DetectChar attribute="Raw String" context="#pop" char="&gt;" />
+			</context>
+			
+			<!-- this format doesn't allow nesting. it is terminated by the next occurence of the
+				delimiter character
+			 -->
+			<context name="gdl_apostrophed_5" attribute="Raw String" lineEndContext="#stay" dynamic="true">
+				<IncludeRules context="apostrophed_rules" />
+				<RegExpr attribute="Raw String" String="\\%1" context="#stay" dynamic="true"/>
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
+			</context>
+			
+			<!-- rules to be included in all apostrophed contexts -->
+			<context name="apostrophed_rules" attribute="Raw String" lineEndContext="#stay" >
+				<Detect2Chars attribute="Raw String" char="\" char1="\" context="#stay"/>
+			</context>
+			
+			<!-- shell command specific contexts -->
+			
+			<context name="gdl_shell_command_1" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<Detect2Chars attribute="Command" char="\" char1=")" context="#stay"/>
+				<DetectChar attribute="Command" context="gdl_shell_command_1_nested" char="(" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_shell_command_1_nested" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<DetectChar attribute="Command" context="gdl_shell_command_1_nested" char="(" />
+				<DetectChar attribute="Command" context="#pop" char=")" />
+			</context>
+			
+			<context name="gdl_shell_command_2" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<Detect2Chars attribute="Command" char="\" char1="}" context="#stay"/>
+				<DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />
+				<DetectChar attribute="Command" context="gdl_shell_command_2_nested" char="{" />
+			</context>
+			<context name="gdl_shell_command_2_nested" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<DetectChar attribute="Command" context="gdl_shell_command_2_nested" char="{" />
+				<DetectChar attribute="Command" context="#pop" char="}" />
+			</context>
+	
+			<context name="gdl_shell_command_3" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<Detect2Chars attribute="Command" char="\" char1="]" context="#stay"/>
+				<DetectChar attribute="Command" context="gdl_shell_command_3_nested" char="[" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_shell_command_3_nested" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<DetectChar attribute="Command" context="gdl_shell_command_3_nested" char="[" />
+				<DetectChar attribute="Command" context="#pop" char="]" />
+			</context>
+	
+			<context name="gdl_shell_command_4" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<Detect2Chars attribute="Command" char="\" char1="&gt;" context="#stay"/>
+				<DetectChar attribute="Command" context="gdl_shell_command_4_nested" char="&lt;" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_shell_command_4_nested" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<DetectChar attribute="Command" context="gdl_shell_command_4_nested" char="&lt;" />
+				<DetectChar attribute="Command" context="#pop" char="&gt;" />
+			</context>
+			
+			<!-- this format doesn't allow nesting. it is terminated by the next occurence of the
+				delimiter character
+			 -->
+			<context name="gdl_shell_command_5" attribute="Command" lineEndContext="#stay" dynamic="true">
+				<IncludeRules context="shell_command_rules" />
+				<RegExpr attribute="Command" String="\\%1" context="#stay" dynamic="true" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
+			</context>
+			
+			<!-- rules to be included in all shell_command contexts -->
+			<context name="shell_command_rules" attribute="Command" lineEndContext="#stay" >
+				<Detect2Chars attribute="Command" char="\" char1="\" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+			</context>
+			
+			<!-- regular expression specific contexts -->
+			
+			<context name="gdl_regexpr_1" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<Detect2Chars attribute="Regular Expression" char="\" char1=")" context="#stay"/>
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_1_nested" char="(" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\)[uiomxn]*" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_regexpr_1_nested" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_1_nested" char="(" />
+				<DetectChar attribute="Regular Expression" context="#pop" char=")" />
+			</context>
+			
+			<context name="gdl_regexpr_2" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<Detect2Chars attribute="Regular Expression" char="\" char1="}" context="#stay"/>
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\}[uiomxn]*" endRegion="GdlInput" />
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_2_nested" char="{" />
+			</context>
+			<context name="gdl_regexpr_2_nested" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_2_nested" char="{" />
+				<DetectChar attribute="Regular Expression" context="#pop" char="}" />
+			</context>
+	
+			<context name="gdl_regexpr_3" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<Detect2Chars attribute="Regular Expression" char="\" char1="]" context="#stay"/>
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_3_nested" char="[" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\][uiomxn]*" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_regexpr_3_nested" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_3_nested" char="[" />
+				<DetectChar attribute="Regular Expression" context="#pop" char="]" />
+			</context>
+	
+			<context name="gdl_regexpr_4" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<Detect2Chars attribute="Regular Expression" char="\" char1="&gt;" context="#stay"/>
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_4_nested" char="&lt;" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="&gt;[uiomxn]*" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_regexpr_4_nested" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_4_nested" char="&lt;" />
+				<DetectChar attribute="Regular Expression" context="#pop" char="&gt;" />
+			</context>
+			
+			<!-- this format doesn't allow nesting. it is terminated by the next occurence of the
+				delimiter character
+			 -->
+			<context name="gdl_regexpr_5" attribute="Regular Expression" lineEndContext="#stay" dynamic="true">
+				<IncludeRules context="regexpr_rules" />
+				<RegExpr attribute="Regular Expression" String="\\%1" context="#stay" dynamic="true" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1[uiomxn]*" dynamic="true" endRegion="GdlInput" />
+			</context>
+			
+			<!-- rules to be included in all regexpr contexts -->
+			<context name="regexpr_rules" attribute="Regular Expression" lineEndContext="#stay" >
+				<Detect2Chars attribute="Regular Expression" char="\" char1="\" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+			</context>
+			
+			<!-- END of General delimited input support -->
+			
+			<!-- handle data in script -->
+			<context name="DATA" attribute="Data" lineEndContext="#stay"/>
+		</contexts>
+		
+		<itemDatas>
+			<itemData name="Normal Text" defStyleNum="dsNormal"/>
+			
+			<itemData name="Keyword" defStyleNum="dsKeyword"/>
+			<itemData name="Attribute Definition" defStyleNum="dsOthers"/>
+			<itemData name="Access Control" defStyleNum="dsKeyword" color="#0000FF"/>
+			<itemData name="Definition" defStyleNum="dsKeyword"/>
+			<itemData name="Pseudo variable" defStyleNum="dsDecVal"/>
+			
+			<itemData name="Dec" defStyleNum="dsDecVal"/>
+			<itemData name="Float" defStyleNum="dsFloat"/>
+			<itemData name="Char" defStyleNum="dsChar"/>
+			<itemData name="Octal" defStyleNum="dsBaseN"/>
+			<itemData name="Hex" defStyleNum="dsBaseN"/>
+			<itemData name="Bin" defStyleNum="dsBaseN"/>
+			
+			<itemData name="Symbol" defStyleNum="dsString" color="#D40000"/>
+			<itemData name="String" defStyleNum="dsString"/>
+			<itemData name="Raw String" defStyleNum="dsString" color="#DD4A4A" selColor="#DD4A4A"/>
+			<itemData name="Command" defStyleNum="dsString" color="#AA3000"/>
+			<itemData name="Message" defStyleNum="dsNormal" color="#4000A7"/> <!-- #4A00C0 -->
+			<itemData name="Regular Expression" defStyleNum="dsOthers" color="#4A5704"/>
+			<itemData name="Substitution"	defStyleNum="dsOthers"/>
+			<itemData name="Data" defStyleNum="dsNormal"/>
+			<!-- short for 'general delimited input' -->
+			<itemData name="GDL input" defStyleNum="dsOthers" />
+			
+			<itemData name="Default globals" defStyleNum="dsDataType" color="#C00000" bold="1"/>
+			<itemData name="Global Variable" defStyleNum="dsDataType" color="#C00000"/>
+			<itemData name="Global Constant" defStyleNum="dsDataType" color="#bb1188" bold="1"/>
+			<itemData name="Constant" defStyleNum="dsDataType"/>
+			<itemData name="Constant Value" defStyleNum="dsDataType" color="#bb1188"/>
+			<itemData name="Kernel methods" defStyleNum="dsNormal" color="#000080" selColor="#ffffff"/> <!-- #CC0E86 -->
+			<itemData name="Member" defStyleNum="dsNormal"/>
+			<itemData name="Instance Variable" defStyleNum="dsOthers"/>
+			<itemData name="Class Variable" defStyleNum="dsOthers"/>
+			
+			<itemData name="Comment" defStyleNum="dsComment"/>
+			<itemData name="Blockcomment" defStyleNum="dsComment"/>
+			<itemData name="Region Marker" defStyleNum="dsNormal" color="#0000ff"/>
+			<itemData name="RDoc Value" defStyleNum="dsOthers"/>
+			
+			<!-- use these to mark errors and alerts things -->
+			<itemData name="Error" defStyleNum="dsError" />
+			<itemData name="Alert" defStyleNum="dsAlert" />
+
+			<itemData name="Delimiter" defStyleNum="dsChar"/>
+			<itemData name="Expression" defStyleNum="dsOthers"/>
+			<itemData name="Operator" defStyleNum="dsChar"/>
+		</itemDatas>
+	</highlighting>
+	<general>
+		<comments>
+			<comment name="singleLine" start="#"/>
+		</comments>
+		<keywords casesensitive="1" weakDeliminator="!?"/> 
+	</general>
+</language>
diff --git a/xml/scala.xml b/xml/scala.xml
new file mode 100644
--- /dev/null
+++ b/xml/scala.xml
@@ -0,0 +1,3503 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="Scala" version="1.0" kateversion="2.4" section="Sources"
+          extensions="*.scala" mimetype="text/x-scala" license="LGPL"
+          author="Stephane Micheloud (stephane.micheloud@epfl.ch)">
+<!--
+First version added to reository was 1.0 downloaded from
+https://lampsvn.epfl.ch/trac/scala/browser/scala-tool-support/trunk/src/kate/scala.xml?format=raw
+
+adapted from "java.xml" by Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)
+-->
+  <highlighting>
+    <list name="scala2">
+      <item> Actor </item>
+      <item> ActorProxy </item>
+      <item> ActorTask </item>
+      <item> ActorThread </item>
+      <item> AllRef </item>
+      <item> Any </item>
+      <item> AnyRef </item>
+      <item> Application </item>
+      <item> AppliedType </item>
+      <item> Array </item>
+      <item> ArrayBuffer </item>
+      <item> Attribute </item>
+      <item> BoxedArray </item>
+      <item> BoxedBooleanArray </item>
+      <item> BoxedByteArray </item>
+      <item> BoxedCharArray </item>
+      <item> Buffer </item>
+      <item> BufferedIterator </item>
+      <item> Char </item>
+      <item> Console </item>
+      <item> Enumeration </item>
+      <item> Fluid </item>
+      <item> Function </item>
+      <item> IScheduler </item>
+      <item> ImmutableMapAdaptor </item>
+      <item> ImmutableSetAdaptor </item>
+      <item> Int </item>
+      <item> Iterable </item>
+      <item> List </item>
+      <item> ListBuffer </item>
+      <item> None </item>
+      <item> Option </item>
+      <item> Ordered </item>
+      <item> Pair </item>
+      <item> PartialFunction </item>
+      <item> Pid </item>
+      <item> Predef </item>
+      <item> PriorityQueue </item>
+      <item> PriorityQueueProxy </item>
+      <item> Reaction </item>
+      <item> Ref </item>
+      <item> Responder </item>
+      <item> RichInt </item>
+      <item> RichString </item>
+      <item> Rule </item>
+      <item> RuleTransformer </item>
+      <item> Script </item>
+      <item> Seq </item>
+      <item> SerialVersionUID </item>
+      <item> Some </item>
+      <item> Stream </item>
+      <item> Symbol </item>
+      <item> TcpService </item>
+      <item> TcpServiceWorker </item>
+      <item> Triple </item>
+      <item> Unit </item>
+      <item> Value </item>
+      <item> WorkerThread </item>
+      <item> serializable </item>
+      <item> transient </item>
+      <item> volatile </item>
+    </list>
+    <list name="java15">
+      <item> ACTIVE </item>
+      <item> ACTIVITY_COMPLETED </item>
+      <item> ACTIVITY_REQUIRED </item>
+      <item> ARG_IN </item>
+      <item> ARG_INOUT </item>
+      <item> ARG_OUT </item>
+      <item> AWTError </item>
+      <item> AWTEvent </item>
+      <item> AWTEventListener </item>
+      <item> AWTEventListenerProxy </item>
+      <item> AWTEventMulticaster </item>
+      <item> AWTException </item>
+      <item> AWTKeyStroke </item>
+      <item> AWTPermission </item>
+      <item> AbstractAction </item>
+      <item> AbstractBorder </item>
+      <item> AbstractButton </item>
+      <item> AbstractCellEditor </item>
+      <item> AbstractCollection </item>
+      <item> AbstractColorChooserPanel </item>
+      <item> AbstractDocument </item>
+      <item> AbstractDocument.AttributeContext </item>
+      <item> AbstractDocument.Content </item>
+      <item> AbstractDocument.ElementEdit </item>
+      <item> AbstractExecutorService </item>
+      <item> AbstractInterruptibleChannel </item>
+      <item> AbstractLayoutCache </item>
+      <item> AbstractLayoutCache.NodeDimensions </item>
+      <item> AbstractList </item>
+      <item> AbstractListModel </item>
+      <item> AbstractMap </item>
+      <item> AbstractMethodError </item>
+      <item> AbstractPreferences </item>
+      <item> AbstractQueue </item>
+      <item> AbstractQueuedSynchronizer </item>
+      <item> AbstractSelectableChannel </item>
+      <item> AbstractSelectionKey </item>
+      <item> AbstractSelector </item>
+      <item> AbstractSequentialList </item>
+      <item> AbstractSet </item>
+      <item> AbstractSpinnerModel </item>
+      <item> AbstractTableModel </item>
+      <item> AbstractUndoableEdit </item>
+      <item> AbstractWriter </item>
+      <item> AccessControlContext </item>
+      <item> AccessControlException </item>
+      <item> AccessController </item>
+      <item> AccessException </item>
+      <item> Accessible </item>
+      <item> AccessibleAction </item>
+      <item> AccessibleAttributeSequence </item>
+      <item> AccessibleBundle </item>
+      <item> AccessibleComponent </item>
+      <item> AccessibleContext </item>
+      <item> AccessibleEditableText </item>
+      <item> AccessibleExtendedComponent </item>
+      <item> AccessibleExtendedTable </item>
+      <item> AccessibleExtendedText </item>
+      <item> AccessibleHyperlink </item>
+      <item> AccessibleHypertext </item>
+      <item> AccessibleIcon </item>
+      <item> AccessibleKeyBinding </item>
+      <item> AccessibleObject </item>
+      <item> AccessibleRelation </item>
+      <item> AccessibleRelationSet </item>
+      <item> AccessibleResourceBundle </item>
+      <item> AccessibleRole </item>
+      <item> AccessibleSelection </item>
+      <item> AccessibleState </item>
+      <item> AccessibleStateSet </item>
+      <item> AccessibleStreamable </item>
+      <item> AccessibleTable </item>
+      <item> AccessibleTableModelChange </item>
+      <item> AccessibleText </item>
+      <item> AccessibleTextSequence </item>
+      <item> AccessibleValue </item>
+      <item> AccountException </item>
+      <item> AccountExpiredException </item>
+      <item> AccountLockedException </item>
+      <item> AccountNotFoundException </item>
+      <item> Acl </item>
+      <item> AclEntry </item>
+      <item> AclNotFoundException </item>
+      <item> Action </item>
+      <item> ActionEvent </item>
+      <item> ActionListener </item>
+      <item> ActionMap </item>
+      <item> ActionMapUIResource </item>
+      <item> Activatable </item>
+      <item> ActivateFailedException </item>
+      <item> ActivationDesc </item>
+      <item> ActivationException </item>
+      <item> ActivationGroup </item>
+      <item> ActivationGroupDesc </item>
+      <item> ActivationGroupDesc.CommandEnvironment </item>
+      <item> ActivationGroupID </item>
+      <item> ActivationGroup_Stub </item>
+      <item> ActivationID </item>
+      <item> ActivationInstantiator </item>
+      <item> ActivationMonitor </item>
+      <item> ActivationSystem </item>
+      <item> Activator </item>
+      <item> ActiveEvent </item>
+      <item> ActivityCompletedException </item>
+      <item> ActivityRequiredException </item>
+      <item> AdapterActivator </item>
+      <item> AdapterActivatorOperations </item>
+      <item> AdapterAlreadyExists </item>
+      <item> AdapterAlreadyExistsHelper </item>
+      <item> AdapterInactive </item>
+      <item> AdapterInactiveHelper </item>
+      <item> AdapterManagerIdHelper </item>
+      <item> AdapterNameHelper </item>
+      <item> AdapterNonExistent </item>
+      <item> AdapterNonExistentHelper </item>
+      <item> AdapterStateHelper </item>
+      <item> AddressHelper </item>
+      <item> Adjustable </item>
+      <item> AdjustmentEvent </item>
+      <item> AdjustmentListener </item>
+      <item> Adler32 </item>
+      <item> AffineTransform </item>
+      <item> AffineTransformOp </item>
+      <item> AlgorithmParameterGenerator </item>
+      <item> AlgorithmParameterGeneratorSpi </item>
+      <item> AlgorithmParameterSpec </item>
+      <item> AlgorithmParameters </item>
+      <item> AlgorithmParametersSpi </item>
+      <item> AllPermission </item>
+      <item> AlphaComposite </item>
+      <item> AlreadyBound </item>
+      <item> AlreadyBoundException </item>
+      <item> AlreadyBoundHelper </item>
+      <item> AlreadyBoundHolder </item>
+      <item> AlreadyConnectedException </item>
+      <item> AncestorEvent </item>
+      <item> AncestorListener </item>
+      <item> AnnotatedElement </item>
+      <item> Annotation </item>
+      <item> Annotation </item>
+      <item> AnnotationFormatError </item>
+      <item> AnnotationTypeMismatchException </item>
+      <item> Any </item>
+      <item> AnyHolder </item>
+      <item> AnySeqHelper </item>
+      <item> AnySeqHelper </item>
+      <item> AnySeqHolder </item>
+      <item> AppConfigurationEntry </item>
+      <item> AppConfigurationEntry.LoginModuleControlFlag </item>
+      <item> Appendable </item>
+      <item> Applet </item>
+      <item> AppletContext </item>
+      <item> AppletInitializer </item>
+      <item> AppletStub </item>
+      <item> ApplicationException </item>
+      <item> Arc2D </item>
+      <item> Arc2D.Double </item>
+      <item> Arc2D.Float </item>
+      <item> Area </item>
+      <item> AreaAveragingScaleFilter </item>
+      <item> ArithmeticException </item>
+      <item> Array </item>
+      <item> Array </item>
+      <item> ArrayBlockingQueue </item>
+      <item> ArrayIndexOutOfBoundsException </item>
+      <item> ArrayList </item>
+      <item> ArrayStoreException </item>
+      <item> ArrayType </item>
+      <item> Arrays </item>
+      <item> AssertionError </item>
+      <item> AsyncBoxView </item>
+      <item> AsynchronousCloseException </item>
+      <item> AtomicBoolean </item>
+      <item> AtomicInteger </item>
+      <item> AtomicIntegerArray </item>
+      <item> AtomicIntegerFieldUpdater </item>
+      <item> AtomicLong </item>
+      <item> AtomicLongArray </item>
+      <item> AtomicLongFieldUpdater </item>
+      <item> AtomicMarkableReference </item>
+      <item> AtomicReference </item>
+      <item> AtomicReferenceArray </item>
+      <item> AtomicReferenceFieldUpdater </item>
+      <item> AtomicStampedReference </item>
+      <item> Attr </item>
+      <item> Attribute </item>
+      <item> Attribute </item>
+      <item> Attribute </item>
+      <item> AttributeChangeNotification </item>
+      <item> AttributeChangeNotificationFilter </item>
+      <item> AttributeException </item>
+      <item> AttributeInUseException </item>
+      <item> AttributeList </item>
+      <item> AttributeList </item>
+      <item> AttributeList </item>
+      <item> AttributeListImpl </item>
+      <item> AttributeModificationException </item>
+      <item> AttributeNotFoundException </item>
+      <item> AttributeSet </item>
+      <item> AttributeSet </item>
+      <item> AttributeSet.CharacterAttribute </item>
+      <item> AttributeSet.ColorAttribute </item>
+      <item> AttributeSet.FontAttribute </item>
+      <item> AttributeSet.ParagraphAttribute </item>
+      <item> AttributeSetUtilities </item>
+      <item> AttributeValueExp </item>
+      <item> AttributedCharacterIterator </item>
+      <item> AttributedCharacterIterator.Attribute </item>
+      <item> AttributedString </item>
+      <item> Attributes </item>
+      <item> Attributes </item>
+      <item> Attributes </item>
+      <item> Attributes.Name </item>
+      <item> Attributes2 </item>
+      <item> Attributes2Impl </item>
+      <item> AttributesImpl </item>
+      <item> AudioClip </item>
+      <item> AudioFileFormat </item>
+      <item> AudioFileFormat.Type </item>
+      <item> AudioFileReader </item>
+      <item> AudioFileWriter </item>
+      <item> AudioFormat </item>
+      <item> AudioFormat.Encoding </item>
+      <item> AudioInputStream </item>
+      <item> AudioPermission </item>
+      <item> AudioSystem </item>
+      <item> AuthPermission </item>
+      <item> AuthProvider </item>
+      <item> AuthenticationException </item>
+      <item> AuthenticationException </item>
+      <item> AuthenticationNotSupportedException </item>
+      <item> Authenticator </item>
+      <item> Authenticator.RequestorType </item>
+      <item> AuthorizeCallback </item>
+      <item> Autoscroll </item>
+      <item> BAD_CONTEXT </item>
+      <item> BAD_INV_ORDER </item>
+      <item> BAD_OPERATION </item>
+      <item> BAD_PARAM </item>
+      <item> BAD_POLICY </item>
+      <item> BAD_POLICY_TYPE </item>
+      <item> BAD_POLICY_VALUE </item>
+      <item> BAD_QOS </item>
+      <item> BAD_TYPECODE </item>
+      <item> BMPImageWriteParam </item>
+      <item> BackingStoreException </item>
+      <item> BadAttributeValueExpException </item>
+      <item> BadBinaryOpValueExpException </item>
+      <item> BadKind </item>
+      <item> BadLocationException </item>
+      <item> BadPaddingException </item>
+      <item> BadStringOperationException </item>
+      <item> BandCombineOp </item>
+      <item> BandedSampleModel </item>
+      <item> BaseRowSet </item>
+      <item> BasicArrowButton </item>
+      <item> BasicAttribute </item>
+      <item> BasicAttributes </item>
+      <item> BasicBorders </item>
+      <item> BasicBorders.ButtonBorder </item>
+      <item> BasicBorders.FieldBorder </item>
+      <item> BasicBorders.MarginBorder </item>
+      <item> BasicBorders.MenuBarBorder </item>
+      <item> BasicBorders.RadioButtonBorder </item>
+      <item> BasicBorders.RolloverButtonBorder </item>
+      <item> BasicBorders.SplitPaneBorder </item>
+      <item> BasicBorders.ToggleButtonBorder </item>
+      <item> BasicButtonListener </item>
+      <item> BasicButtonUI </item>
+      <item> BasicCheckBoxMenuItemUI </item>
+      <item> BasicCheckBoxUI </item>
+      <item> BasicColorChooserUI </item>
+      <item> BasicComboBoxEditor </item>
+      <item> BasicComboBoxEditor.UIResource </item>
+      <item> BasicComboBoxRenderer </item>
+      <item> BasicComboBoxRenderer.UIResource </item>
+      <item> BasicComboBoxUI </item>
+      <item> BasicComboPopup </item>
+      <item> BasicControl </item>
+      <item> BasicDesktopIconUI </item>
+      <item> BasicDesktopPaneUI </item>
+      <item> BasicDirectoryModel </item>
+      <item> BasicEditorPaneUI </item>
+      <item> BasicFileChooserUI </item>
+      <item> BasicFormattedTextFieldUI </item>
+      <item> BasicGraphicsUtils </item>
+      <item> BasicHTML </item>
+      <item> BasicIconFactory </item>
+      <item> BasicInternalFrameTitlePane </item>
+      <item> BasicInternalFrameUI </item>
+      <item> BasicLabelUI </item>
+      <item> BasicListUI </item>
+      <item> BasicLookAndFeel </item>
+      <item> BasicMenuBarUI </item>
+      <item> BasicMenuItemUI </item>
+      <item> BasicMenuUI </item>
+      <item> BasicOptionPaneUI </item>
+      <item> BasicOptionPaneUI.ButtonAreaLayout </item>
+      <item> BasicPanelUI </item>
+      <item> BasicPasswordFieldUI </item>
+      <item> BasicPermission </item>
+      <item> BasicPopupMenuSeparatorUI </item>
+      <item> BasicPopupMenuUI </item>
+      <item> BasicProgressBarUI </item>
+      <item> BasicRadioButtonMenuItemUI </item>
+      <item> BasicRadioButtonUI </item>
+      <item> BasicRootPaneUI </item>
+      <item> BasicScrollBarUI </item>
+      <item> BasicScrollPaneUI </item>
+      <item> BasicSeparatorUI </item>
+      <item> BasicSliderUI </item>
+      <item> BasicSpinnerUI </item>
+      <item> BasicSplitPaneDivider </item>
+      <item> BasicSplitPaneUI </item>
+      <item> BasicStroke </item>
+      <item> BasicTabbedPaneUI </item>
+      <item> BasicTableHeaderUI </item>
+      <item> BasicTableUI </item>
+      <item> BasicTextAreaUI </item>
+      <item> BasicTextFieldUI </item>
+      <item> BasicTextPaneUI </item>
+      <item> BasicTextUI </item>
+      <item> BasicTextUI.BasicCaret </item>
+      <item> BasicTextUI.BasicHighlighter </item>
+      <item> BasicToggleButtonUI </item>
+      <item> BasicToolBarSeparatorUI </item>
+      <item> BasicToolBarUI </item>
+      <item> BasicToolTipUI </item>
+      <item> BasicTreeUI </item>
+      <item> BasicViewportUI </item>
+      <item> BatchUpdateException </item>
+      <item> BeanContext </item>
+      <item> BeanContextChild </item>
+      <item> BeanContextChildComponentProxy </item>
+      <item> BeanContextChildSupport </item>
+      <item> BeanContextContainerProxy </item>
+      <item> BeanContextEvent </item>
+      <item> BeanContextMembershipEvent </item>
+      <item> BeanContextMembershipListener </item>
+      <item> BeanContextProxy </item>
+      <item> BeanContextServiceAvailableEvent </item>
+      <item> BeanContextServiceProvider </item>
+      <item> BeanContextServiceProviderBeanInfo </item>
+      <item> BeanContextServiceRevokedEvent </item>
+      <item> BeanContextServiceRevokedListener </item>
+      <item> BeanContextServices </item>
+      <item> BeanContextServicesListener </item>
+      <item> BeanContextServicesSupport </item>
+      <item> BeanContextServicesSupport.BCSSServiceProvider </item>
+      <item> BeanContextSupport </item>
+      <item> BeanContextSupport.BCSIterator </item>
+      <item> BeanDescriptor </item>
+      <item> BeanInfo </item>
+      <item> Beans </item>
+      <item> BevelBorder </item>
+      <item> Bidi </item>
+      <item> BigDecimal </item>
+      <item> BigInteger </item>
+      <item> BinaryRefAddr </item>
+      <item> BindException </item>
+      <item> Binding </item>
+      <item> Binding </item>
+      <item> BindingHelper </item>
+      <item> BindingHolder </item>
+      <item> BindingIterator </item>
+      <item> BindingIteratorHelper </item>
+      <item> BindingIteratorHolder </item>
+      <item> BindingIteratorOperations </item>
+      <item> BindingIteratorPOA </item>
+      <item> BindingListHelper </item>
+      <item> BindingListHolder </item>
+      <item> BindingType </item>
+      <item> BindingTypeHelper </item>
+      <item> BindingTypeHolder </item>
+      <item> BitSet </item>
+      <item> Blob </item>
+      <item> BlockView </item>
+      <item> BlockingQueue </item>
+      <item> Book </item>
+      <item> Boolean </item>
+      <item> BooleanControl </item>
+      <item> BooleanControl.Type </item>
+      <item> BooleanHolder </item>
+      <item> BooleanSeqHelper </item>
+      <item> BooleanSeqHolder </item>
+      <item> Border </item>
+      <item> BorderFactory </item>
+      <item> BorderLayout </item>
+      <item> BorderUIResource </item>
+      <item> BorderUIResource.BevelBorderUIResource </item>
+      <item> BorderUIResource.CompoundBorderUIResource </item>
+      <item> BorderUIResource.EmptyBorderUIResource </item>
+      <item> BorderUIResource.EtchedBorderUIResource </item>
+      <item> BorderUIResource.LineBorderUIResource </item>
+      <item> BorderUIResource.MatteBorderUIResource </item>
+      <item> BorderUIResource.TitledBorderUIResource </item>
+      <item> BoundedRangeModel </item>
+      <item> Bounds </item>
+      <item> Bounds </item>
+      <item> Box </item>
+      <item> Box.Filler </item>
+      <item> BoxLayout </item>
+      <item> BoxView </item>
+      <item> BoxedValueHelper </item>
+      <item> BreakIterator </item>
+      <item> BrokenBarrierException </item>
+      <item> Buffer </item>
+      <item> BufferCapabilities </item>
+      <item> BufferCapabilities.FlipContents </item>
+      <item> BufferOverflowException </item>
+      <item> BufferStrategy </item>
+      <item> BufferUnderflowException </item>
+      <item> BufferedImage </item>
+      <item> BufferedImageFilter </item>
+      <item> BufferedImageOp </item>
+      <item> BufferedInputStream </item>
+      <item> BufferedOutputStream </item>
+      <item> BufferedReader </item>
+      <item> BufferedWriter </item>
+      <item> Button </item>
+      <item> ButtonGroup </item>
+      <item> ButtonModel </item>
+      <item> ButtonUI </item>
+      <item> Byte </item>
+      <item> ByteArrayInputStream </item>
+      <item> ByteArrayOutputStream </item>
+      <item> ByteBuffer </item>
+      <item> ByteChannel </item>
+      <item> ByteHolder </item>
+      <item> ByteLookupTable </item>
+      <item> ByteOrder </item>
+      <item> CDATASection </item>
+      <item> CMMException </item>
+      <item> CODESET_INCOMPATIBLE </item>
+      <item> COMM_FAILURE </item>
+      <item> CRC32 </item>
+      <item> CRL </item>
+      <item> CRLException </item>
+      <item> CRLSelector </item>
+      <item> CSS </item>
+      <item> CSS.Attribute </item>
+      <item> CTX_RESTRICT_SCOPE </item>
+      <item> CacheRequest </item>
+      <item> CacheResponse </item>
+      <item> CachedRowSet </item>
+      <item> Calendar </item>
+      <item> Callable </item>
+      <item> CallableStatement </item>
+      <item> Callback </item>
+      <item> CallbackHandler </item>
+      <item> CancelablePrintJob </item>
+      <item> CancellationException </item>
+      <item> CancelledKeyException </item>
+      <item> CannotProceed </item>
+      <item> CannotProceedException </item>
+      <item> CannotProceedHelper </item>
+      <item> CannotProceedHolder </item>
+      <item> CannotRedoException </item>
+      <item> CannotUndoException </item>
+      <item> Canvas </item>
+      <item> CardLayout </item>
+      <item> Caret </item>
+      <item> CaretEvent </item>
+      <item> CaretListener </item>
+      <item> CellEditor </item>
+      <item> CellEditorListener </item>
+      <item> CellRendererPane </item>
+      <item> CertPath </item>
+      <item> CertPath.CertPathRep </item>
+      <item> CertPathBuilder </item>
+      <item> CertPathBuilderException </item>
+      <item> CertPathBuilderResult </item>
+      <item> CertPathBuilderSpi </item>
+      <item> CertPathParameters </item>
+      <item> CertPathTrustManagerParameters </item>
+      <item> CertPathValidator </item>
+      <item> CertPathValidatorException </item>
+      <item> CertPathValidatorResult </item>
+      <item> CertPathValidatorSpi </item>
+      <item> CertSelector </item>
+      <item> CertStore </item>
+      <item> CertStoreException </item>
+      <item> CertStoreParameters </item>
+      <item> CertStoreSpi </item>
+      <item> Certificate </item>
+      <item> Certificate </item>
+      <item> Certificate </item>
+      <item> Certificate.CertificateRep </item>
+      <item> CertificateEncodingException </item>
+      <item> CertificateEncodingException </item>
+      <item> CertificateException </item>
+      <item> CertificateException </item>
+      <item> CertificateExpiredException </item>
+      <item> CertificateExpiredException </item>
+      <item> CertificateFactory </item>
+      <item> CertificateFactorySpi </item>
+      <item> CertificateNotYetValidException </item>
+      <item> CertificateNotYetValidException </item>
+      <item> CertificateParsingException </item>
+      <item> CertificateParsingException </item>
+      <item> ChangeEvent </item>
+      <item> ChangeListener </item>
+      <item> ChangedCharSetException </item>
+      <item> Channel </item>
+      <item> ChannelBinding </item>
+      <item> Channels </item>
+      <item> CharArrayReader </item>
+      <item> CharArrayWriter </item>
+      <item> CharBuffer </item>
+      <item> CharConversionException </item>
+      <item> CharHolder </item>
+      <item> CharSeqHelper </item>
+      <item> CharSeqHolder </item>
+      <item> CharSequence </item>
+      <item> Character </item>
+      <item> Character.Subset </item>
+      <item> Character.UnicodeBlock </item>
+      <item> CharacterCodingException </item>
+      <item> CharacterData </item>
+      <item> CharacterIterator </item>
+      <item> Charset </item>
+      <item> CharsetDecoder </item>
+      <item> CharsetEncoder </item>
+      <item> CharsetProvider </item>
+      <item> Checkbox </item>
+      <item> CheckboxGroup </item>
+      <item> CheckboxMenuItem </item>
+      <item> CheckedInputStream </item>
+      <item> CheckedOutputStream </item>
+      <item> Checksum </item>
+      <item> Choice </item>
+      <item> ChoiceCallback </item>
+      <item> ChoiceFormat </item>
+      <item> Chromaticity </item>
+      <item> Cipher </item>
+      <item> CipherInputStream </item>
+      <item> CipherOutputStream </item>
+      <item> CipherSpi </item>
+      <item> Class </item>
+      <item> ClassCastException </item>
+      <item> ClassCircularityError </item>
+      <item> ClassDefinition </item>
+      <item> ClassDesc </item>
+      <item> ClassFileTransformer </item>
+      <item> ClassFormatError </item>
+      <item> ClassLoader </item>
+      <item> ClassLoaderRepository </item>
+      <item> ClassLoadingMXBean </item>
+      <item> ClassNotFoundException </item>
+      <item> ClientRequestInfo </item>
+      <item> ClientRequestInfoOperations </item>
+      <item> ClientRequestInterceptor </item>
+      <item> ClientRequestInterceptorOperations </item>
+      <item> Clip </item>
+      <item> Clipboard </item>
+      <item> ClipboardOwner </item>
+      <item> Clob </item>
+      <item> CloneNotSupportedException </item>
+      <item> Cloneable </item>
+      <item> Closeable </item>
+      <item> ClosedByInterruptException </item>
+      <item> ClosedChannelException </item>
+      <item> ClosedSelectorException </item>
+      <item> CodeSets </item>
+      <item> CodeSigner </item>
+      <item> CodeSource </item>
+      <item> Codec </item>
+      <item> CodecFactory </item>
+      <item> CodecFactoryHelper </item>
+      <item> CodecFactoryOperations </item>
+      <item> CodecOperations </item>
+      <item> CoderMalfunctionError </item>
+      <item> CoderResult </item>
+      <item> CodingErrorAction </item>
+      <item> CollationElementIterator </item>
+      <item> CollationKey </item>
+      <item> Collator </item>
+      <item> Collection </item>
+      <item> CollectionCertStoreParameters </item>
+      <item> Collections </item>
+      <item> Color </item>
+      <item> ColorChooserComponentFactory </item>
+      <item> ColorChooserUI </item>
+      <item> ColorConvertOp </item>
+      <item> ColorModel </item>
+      <item> ColorSelectionModel </item>
+      <item> ColorSpace </item>
+      <item> ColorSupported </item>
+      <item> ColorType </item>
+      <item> ColorUIResource </item>
+      <item> ComboBoxEditor </item>
+      <item> ComboBoxModel </item>
+      <item> ComboBoxUI </item>
+      <item> ComboPopup </item>
+      <item> Comment </item>
+      <item> CommunicationException </item>
+      <item> Comparable </item>
+      <item> Comparator </item>
+      <item> CompilationMXBean </item>
+      <item> Compiler </item>
+      <item> CompletionService </item>
+      <item> CompletionStatus </item>
+      <item> CompletionStatusHelper </item>
+      <item> Component </item>
+      <item> ComponentAdapter </item>
+      <item> ComponentColorModel </item>
+      <item> ComponentEvent </item>
+      <item> ComponentIdHelper </item>
+      <item> ComponentInputMap </item>
+      <item> ComponentInputMapUIResource </item>
+      <item> ComponentListener </item>
+      <item> ComponentOrientation </item>
+      <item> ComponentSampleModel </item>
+      <item> ComponentUI </item>
+      <item> ComponentView </item>
+      <item> Composite </item>
+      <item> CompositeContext </item>
+      <item> CompositeData </item>
+      <item> CompositeDataSupport </item>
+      <item> CompositeName </item>
+      <item> CompositeType </item>
+      <item> CompositeView </item>
+      <item> CompoundBorder </item>
+      <item> CompoundControl </item>
+      <item> CompoundControl.Type </item>
+      <item> CompoundEdit </item>
+      <item> CompoundName </item>
+      <item> Compression </item>
+      <item> ConcurrentHashMap </item>
+      <item> ConcurrentLinkedQueue </item>
+      <item> ConcurrentMap </item>
+      <item> ConcurrentModificationException </item>
+      <item> Condition </item>
+      <item> Configuration </item>
+      <item> ConfigurationException </item>
+      <item> ConfirmationCallback </item>
+      <item> ConnectException </item>
+      <item> ConnectException </item>
+      <item> ConnectIOException </item>
+      <item> Connection </item>
+      <item> ConnectionEvent </item>
+      <item> ConnectionEventListener </item>
+      <item> ConnectionPendingException </item>
+      <item> ConnectionPoolDataSource </item>
+      <item> ConsoleHandler </item>
+      <item> Constructor </item>
+      <item> Container </item>
+      <item> ContainerAdapter </item>
+      <item> ContainerEvent </item>
+      <item> ContainerListener </item>
+      <item> ContainerOrderFocusTraversalPolicy </item>
+      <item> ContentHandler </item>
+      <item> ContentHandler </item>
+      <item> ContentHandlerFactory </item>
+      <item> ContentModel </item>
+      <item> Context </item>
+      <item> Context </item>
+      <item> ContextList </item>
+      <item> ContextNotEmptyException </item>
+      <item> ContextualRenderedImageFactory </item>
+      <item> Control </item>
+      <item> Control </item>
+      <item> Control.Type </item>
+      <item> ControlFactory </item>
+      <item> ControllerEventListener </item>
+      <item> ConvolveOp </item>
+      <item> CookieHandler </item>
+      <item> CookieHolder </item>
+      <item> Copies </item>
+      <item> CopiesSupported </item>
+      <item> CopyOnWriteArrayList </item>
+      <item> CopyOnWriteArraySet </item>
+      <item> CountDownLatch </item>
+      <item> CounterMonitor </item>
+      <item> CounterMonitorMBean </item>
+      <item> CredentialException </item>
+      <item> CredentialExpiredException </item>
+      <item> CredentialNotFoundException </item>
+      <item> CropImageFilter </item>
+      <item> CubicCurve2D </item>
+      <item> CubicCurve2D.Double </item>
+      <item> CubicCurve2D.Float </item>
+      <item> Currency </item>
+      <item> Current </item>
+      <item> Current </item>
+      <item> Current </item>
+      <item> CurrentHelper </item>
+      <item> CurrentHelper </item>
+      <item> CurrentHelper </item>
+      <item> CurrentHolder </item>
+      <item> CurrentOperations </item>
+      <item> CurrentOperations </item>
+      <item> CurrentOperations </item>
+      <item> Cursor </item>
+      <item> CustomMarshal </item>
+      <item> CustomValue </item>
+      <item> Customizer </item>
+      <item> CyclicBarrier </item>
+      <item> DATA_CONVERSION </item>
+      <item> DESKeySpec </item>
+      <item> DESedeKeySpec </item>
+      <item> DGC </item>
+      <item> DHGenParameterSpec </item>
+      <item> DHKey </item>
+      <item> DHParameterSpec </item>
+      <item> DHPrivateKey </item>
+      <item> DHPrivateKeySpec </item>
+      <item> DHPublicKey </item>
+      <item> DHPublicKeySpec </item>
+      <item> DISCARDING </item>
+      <item> DOMConfiguration </item>
+      <item> DOMError </item>
+      <item> DOMErrorHandler </item>
+      <item> DOMException </item>
+      <item> DOMImplementation </item>
+      <item> DOMImplementationLS </item>
+      <item> DOMImplementationList </item>
+      <item> DOMImplementationRegistry </item>
+      <item> DOMImplementationSource </item>
+      <item> DOMLocator </item>
+      <item> DOMLocator </item>
+      <item> DOMResult </item>
+      <item> DOMSource </item>
+      <item> DOMStringList </item>
+      <item> DSAKey </item>
+      <item> DSAKeyPairGenerator </item>
+      <item> DSAParameterSpec </item>
+      <item> DSAParams </item>
+      <item> DSAPrivateKey </item>
+      <item> DSAPrivateKeySpec </item>
+      <item> DSAPublicKey </item>
+      <item> DSAPublicKeySpec </item>
+      <item> DTD </item>
+      <item> DTDConstants </item>
+      <item> DTDHandler </item>
+      <item> DataBuffer </item>
+      <item> DataBufferByte </item>
+      <item> DataBufferDouble </item>
+      <item> DataBufferFloat </item>
+      <item> DataBufferInt </item>
+      <item> DataBufferShort </item>
+      <item> DataBufferUShort </item>
+      <item> DataFlavor </item>
+      <item> DataFormatException </item>
+      <item> DataInput </item>
+      <item> DataInputStream </item>
+      <item> DataInputStream </item>
+      <item> DataLine </item>
+      <item> DataLine.Info </item>
+      <item> DataOutput </item>
+      <item> DataOutputStream </item>
+      <item> DataOutputStream </item>
+      <item> DataSource </item>
+      <item> DataTruncation </item>
+      <item> DatabaseMetaData </item>
+      <item> DatagramChannel </item>
+      <item> DatagramPacket </item>
+      <item> DatagramSocket </item>
+      <item> DatagramSocketImpl </item>
+      <item> DatagramSocketImplFactory </item>
+      <item> DatatypeConfigurationException </item>
+      <item> DatatypeConstants </item>
+      <item> DatatypeConstants.Field </item>
+      <item> DatatypeFactory </item>
+      <item> Date </item>
+      <item> Date </item>
+      <item> DateFormat </item>
+      <item> DateFormat.Field </item>
+      <item> DateFormatSymbols </item>
+      <item> DateFormatter </item>
+      <item> DateTimeAtCompleted </item>
+      <item> DateTimeAtCreation </item>
+      <item> DateTimeAtProcessing </item>
+      <item> DateTimeSyntax </item>
+      <item> DebugGraphics </item>
+      <item> DecimalFormat </item>
+      <item> DecimalFormatSymbols </item>
+      <item> DeclHandler </item>
+      <item> DefaultBoundedRangeModel </item>
+      <item> DefaultButtonModel </item>
+      <item> DefaultCaret </item>
+      <item> DefaultCellEditor </item>
+      <item> DefaultColorSelectionModel </item>
+      <item> DefaultComboBoxModel </item>
+      <item> DefaultDesktopManager </item>
+      <item> DefaultEditorKit </item>
+      <item> DefaultEditorKit.BeepAction </item>
+      <item> DefaultEditorKit.CopyAction </item>
+      <item> DefaultEditorKit.CutAction </item>
+      <item> DefaultEditorKit.DefaultKeyTypedAction </item>
+      <item> DefaultEditorKit.InsertBreakAction </item>
+      <item> DefaultEditorKit.InsertContentAction </item>
+      <item> DefaultEditorKit.InsertTabAction </item>
+      <item> DefaultEditorKit.PasteAction </item>
+      <item> DefaultFocusManager </item>
+      <item> DefaultFocusTraversalPolicy </item>
+      <item> DefaultFormatter </item>
+      <item> DefaultFormatterFactory </item>
+      <item> DefaultHandler </item>
+      <item> DefaultHandler2 </item>
+      <item> DefaultHighlighter </item>
+      <item> DefaultHighlighter.DefaultHighlightPainter </item>
+      <item> DefaultKeyboardFocusManager </item>
+      <item> DefaultListCellRenderer </item>
+      <item> DefaultListCellRenderer.UIResource </item>
+      <item> DefaultListModel </item>
+      <item> DefaultListSelectionModel </item>
+      <item> DefaultLoaderRepository </item>
+      <item> DefaultLoaderRepository </item>
+      <item> DefaultMenuLayout </item>
+      <item> DefaultMetalTheme </item>
+      <item> DefaultMutableTreeNode </item>
+      <item> DefaultPersistenceDelegate </item>
+      <item> DefaultSingleSelectionModel </item>
+      <item> DefaultStyledDocument </item>
+      <item> DefaultStyledDocument.AttributeUndoableEdit </item>
+      <item> DefaultStyledDocument.ElementSpec </item>
+      <item> DefaultTableCellRenderer </item>
+      <item> DefaultTableCellRenderer.UIResource </item>
+      <item> DefaultTableColumnModel </item>
+      <item> DefaultTableModel </item>
+      <item> DefaultTextUI </item>
+      <item> DefaultTreeCellEditor </item>
+      <item> DefaultTreeCellRenderer </item>
+      <item> DefaultTreeModel </item>
+      <item> DefaultTreeSelectionModel </item>
+      <item> DefinitionKind </item>
+      <item> DefinitionKindHelper </item>
+      <item> Deflater </item>
+      <item> DeflaterOutputStream </item>
+      <item> DelayQueue </item>
+      <item> Delayed </item>
+      <item> Delegate </item>
+      <item> Delegate </item>
+      <item> Delegate </item>
+      <item> DelegationPermission </item>
+      <item> Deprecated </item>
+      <item> Descriptor </item>
+      <item> DescriptorAccess </item>
+      <item> DescriptorSupport </item>
+      <item> DesignMode </item>
+      <item> DesktopIconUI </item>
+      <item> DesktopManager </item>
+      <item> DesktopPaneUI </item>
+      <item> Destination </item>
+      <item> DestroyFailedException </item>
+      <item> Destroyable </item>
+      <item> Dialog </item>
+      <item> Dictionary </item>
+      <item> DigestException </item>
+      <item> DigestInputStream </item>
+      <item> DigestOutputStream </item>
+      <item> Dimension </item>
+      <item> Dimension2D </item>
+      <item> DimensionUIResource </item>
+      <item> DirContext </item>
+      <item> DirObjectFactory </item>
+      <item> DirStateFactory </item>
+      <item> DirStateFactory.Result </item>
+      <item> DirectColorModel </item>
+      <item> DirectoryManager </item>
+      <item> DisplayMode </item>
+      <item> DnDConstants </item>
+      <item> Doc </item>
+      <item> DocAttribute </item>
+      <item> DocAttributeSet </item>
+      <item> DocFlavor </item>
+      <item> DocFlavor.BYTE_ARRAY </item>
+      <item> DocFlavor.CHAR_ARRAY </item>
+      <item> DocFlavor.INPUT_STREAM </item>
+      <item> DocFlavor.READER </item>
+      <item> DocFlavor.SERVICE_FORMATTED </item>
+      <item> DocFlavor.STRING </item>
+      <item> DocFlavor.URL </item>
+      <item> DocPrintJob </item>
+      <item> Document </item>
+      <item> Document </item>
+      <item> DocumentBuilder </item>
+      <item> DocumentBuilderFactory </item>
+      <item> DocumentEvent </item>
+      <item> DocumentEvent.ElementChange </item>
+      <item> DocumentEvent.EventType </item>
+      <item> DocumentFilter </item>
+      <item> DocumentFilter.FilterBypass </item>
+      <item> DocumentFragment </item>
+      <item> DocumentHandler </item>
+      <item> DocumentListener </item>
+      <item> DocumentName </item>
+      <item> DocumentParser </item>
+      <item> DocumentType </item>
+      <item> Documented </item>
+      <item> DomainCombiner </item>
+      <item> DomainManager </item>
+      <item> DomainManagerOperations </item>
+      <item> Double </item>
+      <item> DoubleBuffer </item>
+      <item> DoubleHolder </item>
+      <item> DoubleSeqHelper </item>
+      <item> DoubleSeqHolder </item>
+      <item> DragGestureEvent </item>
+      <item> DragGestureListener </item>
+      <item> DragGestureRecognizer </item>
+      <item> DragSource </item>
+      <item> DragSourceAdapter </item>
+      <item> DragSourceContext </item>
+      <item> DragSourceDragEvent </item>
+      <item> DragSourceDropEvent </item>
+      <item> DragSourceEvent </item>
+      <item> DragSourceListener </item>
+      <item> DragSourceMotionListener </item>
+      <item> Driver </item>
+      <item> DriverManager </item>
+      <item> DriverPropertyInfo </item>
+      <item> DropTarget </item>
+      <item> DropTarget.DropTargetAutoScroller </item>
+      <item> DropTargetAdapter </item>
+      <item> DropTargetContext </item>
+      <item> DropTargetDragEvent </item>
+      <item> DropTargetDropEvent </item>
+      <item> DropTargetEvent </item>
+      <item> DropTargetListener </item>
+      <item> DuplicateFormatFlagsException </item>
+      <item> DuplicateName </item>
+      <item> DuplicateNameHelper </item>
+      <item> Duration </item>
+      <item> DynAny </item>
+      <item> DynAny </item>
+      <item> DynAnyFactory </item>
+      <item> DynAnyFactoryHelper </item>
+      <item> DynAnyFactoryOperations </item>
+      <item> DynAnyHelper </item>
+      <item> DynAnyOperations </item>
+      <item> DynAnySeqHelper </item>
+      <item> DynArray </item>
+      <item> DynArray </item>
+      <item> DynArrayHelper </item>
+      <item> DynArrayOperations </item>
+      <item> DynEnum </item>
+      <item> DynEnum </item>
+      <item> DynEnumHelper </item>
+      <item> DynEnumOperations </item>
+      <item> DynFixed </item>
+      <item> DynFixed </item>
+      <item> DynFixedHelper </item>
+      <item> DynFixedOperations </item>
+      <item> DynSequence </item>
+      <item> DynSequence </item>
+      <item> DynSequenceHelper </item>
+      <item> DynSequenceOperations </item>
+      <item> DynStruct </item>
+      <item> DynStruct </item>
+      <item> DynStructHelper </item>
+      <item> DynStructOperations </item>
+      <item> DynUnion </item>
+      <item> DynUnion </item>
+      <item> DynUnionHelper </item>
+      <item> DynUnionOperations </item>
+      <item> DynValue </item>
+      <item> DynValue </item>
+      <item> DynValueBox </item>
+      <item> DynValueBoxOperations </item>
+      <item> DynValueCommon </item>
+      <item> DynValueCommonOperations </item>
+      <item> DynValueHelper </item>
+      <item> DynValueOperations </item>
+      <item> DynamicImplementation </item>
+      <item> DynamicImplementation </item>
+      <item> DynamicMBean </item>
+      <item> ECField </item>
+      <item> ECFieldF2m </item>
+      <item> ECFieldFp </item>
+      <item> ECGenParameterSpec </item>
+      <item> ECKey </item>
+      <item> ECParameterSpec </item>
+      <item> ECPoint </item>
+      <item> ECPrivateKey </item>
+      <item> ECPrivateKeySpec </item>
+      <item> ECPublicKey </item>
+      <item> ECPublicKeySpec </item>
+      <item> ENCODING_CDR_ENCAPS </item>
+      <item> EOFException </item>
+      <item> EditorKit </item>
+      <item> Element </item>
+      <item> Element </item>
+      <item> Element </item>
+      <item> ElementIterator </item>
+      <item> ElementType </item>
+      <item> Ellipse2D </item>
+      <item> Ellipse2D.Double </item>
+      <item> Ellipse2D.Float </item>
+      <item> EllipticCurve </item>
+      <item> EmptyBorder </item>
+      <item> EmptyStackException </item>
+      <item> EncodedKeySpec </item>
+      <item> Encoder </item>
+      <item> Encoding </item>
+      <item> EncryptedPrivateKeyInfo </item>
+      <item> Entity </item>
+      <item> Entity </item>
+      <item> EntityReference </item>
+      <item> EntityResolver </item>
+      <item> EntityResolver2 </item>
+      <item> Enum </item>
+      <item> EnumConstantNotPresentException </item>
+      <item> EnumControl </item>
+      <item> EnumControl.Type </item>
+      <item> EnumMap </item>
+      <item> EnumSet </item>
+      <item> EnumSyntax </item>
+      <item> Enumeration </item>
+      <item> Environment </item>
+      <item> Error </item>
+      <item> ErrorHandler </item>
+      <item> ErrorListener </item>
+      <item> ErrorManager </item>
+      <item> EtchedBorder </item>
+      <item> Event </item>
+      <item> EventContext </item>
+      <item> EventDirContext </item>
+      <item> EventHandler </item>
+      <item> EventListener </item>
+      <item> EventListenerList </item>
+      <item> EventListenerProxy </item>
+      <item> EventObject </item>
+      <item> EventQueue </item>
+      <item> EventSetDescriptor </item>
+      <item> Exception </item>
+      <item> ExceptionDetailMessage </item>
+      <item> ExceptionInInitializerError </item>
+      <item> ExceptionList </item>
+      <item> ExceptionListener </item>
+      <item> Exchanger </item>
+      <item> ExecutionException </item>
+      <item> Executor </item>
+      <item> ExecutorCompletionService </item>
+      <item> ExecutorService </item>
+      <item> Executors </item>
+      <item> ExemptionMechanism </item>
+      <item> ExemptionMechanismException </item>
+      <item> ExemptionMechanismSpi </item>
+      <item> ExpandVetoException </item>
+      <item> ExportException </item>
+      <item> Expression </item>
+      <item> ExtendedRequest </item>
+      <item> ExtendedResponse </item>
+      <item> Externalizable </item>
+      <item> FREE_MEM </item>
+      <item> FactoryConfigurationError </item>
+      <item> FailedLoginException </item>
+      <item> FeatureDescriptor </item>
+      <item> Fidelity </item>
+      <item> Field </item>
+      <item> FieldNameHelper </item>
+      <item> FieldNameHelper </item>
+      <item> FieldPosition </item>
+      <item> FieldView </item>
+      <item> File </item>
+      <item> FileCacheImageInputStream </item>
+      <item> FileCacheImageOutputStream </item>
+      <item> FileChannel </item>
+      <item> FileChannel.MapMode </item>
+      <item> FileChooserUI </item>
+      <item> FileDescriptor </item>
+      <item> FileDialog </item>
+      <item> FileFilter </item>
+      <item> FileFilter </item>
+      <item> FileHandler </item>
+      <item> FileImageInputStream </item>
+      <item> FileImageOutputStream </item>
+      <item> FileInputStream </item>
+      <item> FileLock </item>
+      <item> FileLockInterruptionException </item>
+      <item> FileNameMap </item>
+      <item> FileNotFoundException </item>
+      <item> FileOutputStream </item>
+      <item> FilePermission </item>
+      <item> FileReader </item>
+      <item> FileSystemView </item>
+      <item> FileView </item>
+      <item> FileWriter </item>
+      <item> FilenameFilter </item>
+      <item> Filter </item>
+      <item> FilterInputStream </item>
+      <item> FilterOutputStream </item>
+      <item> FilterReader </item>
+      <item> FilterWriter </item>
+      <item> FilteredImageSource </item>
+      <item> FilteredRowSet </item>
+      <item> Finishings </item>
+      <item> FixedHeightLayoutCache </item>
+      <item> FixedHolder </item>
+      <item> FlatteningPathIterator </item>
+      <item> FlavorEvent </item>
+      <item> FlavorException </item>
+      <item> FlavorListener </item>
+      <item> FlavorMap </item>
+      <item> FlavorTable </item>
+      <item> Float </item>
+      <item> FloatBuffer </item>
+      <item> FloatControl </item>
+      <item> FloatControl.Type </item>
+      <item> FloatHolder </item>
+      <item> FloatSeqHelper </item>
+      <item> FloatSeqHolder </item>
+      <item> FlowLayout </item>
+      <item> FlowView </item>
+      <item> FlowView.FlowStrategy </item>
+      <item> Flushable </item>
+      <item> FocusAdapter </item>
+      <item> FocusEvent </item>
+      <item> FocusListener </item>
+      <item> FocusManager </item>
+      <item> FocusTraversalPolicy </item>
+      <item> Font </item>
+      <item> FontFormatException </item>
+      <item> FontMetrics </item>
+      <item> FontRenderContext </item>
+      <item> FontUIResource </item>
+      <item> FormSubmitEvent </item>
+      <item> FormSubmitEvent.MethodType </item>
+      <item> FormView </item>
+      <item> Format </item>
+      <item> Format.Field </item>
+      <item> FormatConversionProvider </item>
+      <item> FormatFlagsConversionMismatchException </item>
+      <item> FormatMismatch </item>
+      <item> FormatMismatchHelper </item>
+      <item> Formattable </item>
+      <item> FormattableFlags </item>
+      <item> Formatter </item>
+      <item> Formatter </item>
+      <item> FormatterClosedException </item>
+      <item> ForwardRequest </item>
+      <item> ForwardRequest </item>
+      <item> ForwardRequestHelper </item>
+      <item> ForwardRequestHelper </item>
+      <item> Frame </item>
+      <item> Future </item>
+      <item> FutureTask </item>
+      <item> GSSContext </item>
+      <item> GSSCredential </item>
+      <item> GSSException </item>
+      <item> GSSManager </item>
+      <item> GSSName </item>
+      <item> GZIPInputStream </item>
+      <item> GZIPOutputStream </item>
+      <item> GapContent </item>
+      <item> GarbageCollectorMXBean </item>
+      <item> GatheringByteChannel </item>
+      <item> GaugeMonitor </item>
+      <item> GaugeMonitorMBean </item>
+      <item> GeneralPath </item>
+      <item> GeneralSecurityException </item>
+      <item> GenericArrayType </item>
+      <item> GenericDeclaration </item>
+      <item> GenericSignatureFormatError </item>
+      <item> GlyphJustificationInfo </item>
+      <item> GlyphMetrics </item>
+      <item> GlyphVector </item>
+      <item> GlyphView </item>
+      <item> GlyphView.GlyphPainter </item>
+      <item> GradientPaint </item>
+      <item> GraphicAttribute </item>
+      <item> Graphics </item>
+      <item> Graphics2D </item>
+      <item> GraphicsConfigTemplate </item>
+      <item> GraphicsConfiguration </item>
+      <item> GraphicsDevice </item>
+      <item> GraphicsEnvironment </item>
+      <item> GrayFilter </item>
+      <item> GregorianCalendar </item>
+      <item> GridBagConstraints </item>
+      <item> GridBagLayout </item>
+      <item> GridLayout </item>
+      <item> Group </item>
+      <item> Guard </item>
+      <item> GuardedObject </item>
+      <item> HOLDING </item>
+      <item> HTML </item>
+      <item> HTML.Attribute </item>
+      <item> HTML.Tag </item>
+      <item> HTML.UnknownTag </item>
+      <item> HTMLDocument </item>
+      <item> HTMLDocument.Iterator </item>
+      <item> HTMLEditorKit </item>
+      <item> HTMLEditorKit.HTMLFactory </item>
+      <item> HTMLEditorKit.HTMLTextAction </item>
+      <item> HTMLEditorKit.InsertHTMLTextAction </item>
+      <item> HTMLEditorKit.LinkController </item>
+      <item> HTMLEditorKit.Parser </item>
+      <item> HTMLEditorKit.ParserCallback </item>
+      <item> HTMLFrameHyperlinkEvent </item>
+      <item> HTMLWriter </item>
+      <item> Handler </item>
+      <item> HandlerBase </item>
+      <item> HandshakeCompletedEvent </item>
+      <item> HandshakeCompletedListener </item>
+      <item> HasControls </item>
+      <item> HashAttributeSet </item>
+      <item> HashDocAttributeSet </item>
+      <item> HashMap </item>
+      <item> HashPrintJobAttributeSet </item>
+      <item> HashPrintRequestAttributeSet </item>
+      <item> HashPrintServiceAttributeSet </item>
+      <item> HashSet </item>
+      <item> Hashtable </item>
+      <item> HeadlessException </item>
+      <item> HierarchyBoundsAdapter </item>
+      <item> HierarchyBoundsListener </item>
+      <item> HierarchyEvent </item>
+      <item> HierarchyListener </item>
+      <item> Highlighter </item>
+      <item> Highlighter.Highlight </item>
+      <item> Highlighter.HighlightPainter </item>
+      <item> HostnameVerifier </item>
+      <item> HttpRetryException </item>
+      <item> HttpURLConnection </item>
+      <item> HttpsURLConnection </item>
+      <item> HyperlinkEvent </item>
+      <item> HyperlinkEvent.EventType </item>
+      <item> HyperlinkListener </item>
+      <item> ICC_ColorSpace </item>
+      <item> ICC_Profile </item>
+      <item> ICC_ProfileGray </item>
+      <item> ICC_ProfileRGB </item>
+      <item> IDLEntity </item>
+      <item> IDLType </item>
+      <item> IDLTypeHelper </item>
+      <item> IDLTypeOperations </item>
+      <item> ID_ASSIGNMENT_POLICY_ID </item>
+      <item> ID_UNIQUENESS_POLICY_ID </item>
+      <item> IIOByteBuffer </item>
+      <item> IIOException </item>
+      <item> IIOImage </item>
+      <item> IIOInvalidTreeException </item>
+      <item> IIOMetadata </item>
+      <item> IIOMetadataController </item>
+      <item> IIOMetadataFormat </item>
+      <item> IIOMetadataFormatImpl </item>
+      <item> IIOMetadataNode </item>
+      <item> IIOParam </item>
+      <item> IIOParamController </item>
+      <item> IIOReadProgressListener </item>
+      <item> IIOReadUpdateListener </item>
+      <item> IIOReadWarningListener </item>
+      <item> IIORegistry </item>
+      <item> IIOServiceProvider </item>
+      <item> IIOWriteProgressListener </item>
+      <item> IIOWriteWarningListener </item>
+      <item> IMPLICIT_ACTIVATION_POLICY_ID </item>
+      <item> IMP_LIMIT </item>
+      <item> INACTIVE </item>
+      <item> INITIALIZE </item>
+      <item> INTERNAL </item>
+      <item> INTF_REPOS </item>
+      <item> INVALID_ACTIVITY </item>
+      <item> INVALID_TRANSACTION </item>
+      <item> INV_FLAG </item>
+      <item> INV_IDENT </item>
+      <item> INV_OBJREF </item>
+      <item> INV_POLICY </item>
+      <item> IOException </item>
+      <item> IOR </item>
+      <item> IORHelper </item>
+      <item> IORHolder </item>
+      <item> IORInfo </item>
+      <item> IORInfoOperations </item>
+      <item> IORInterceptor </item>
+      <item> IORInterceptorOperations </item>
+      <item> IORInterceptor_3_0 </item>
+      <item> IORInterceptor_3_0Helper </item>
+      <item> IORInterceptor_3_0Holder </item>
+      <item> IORInterceptor_3_0Operations </item>
+      <item> IRObject </item>
+      <item> IRObjectOperations </item>
+      <item> Icon </item>
+      <item> IconUIResource </item>
+      <item> IconView </item>
+      <item> IdAssignmentPolicy </item>
+      <item> IdAssignmentPolicyOperations </item>
+      <item> IdAssignmentPolicyValue </item>
+      <item> IdUniquenessPolicy </item>
+      <item> IdUniquenessPolicyOperations </item>
+      <item> IdUniquenessPolicyValue </item>
+      <item> IdentifierHelper </item>
+      <item> Identity </item>
+      <item> IdentityHashMap </item>
+      <item> IdentityScope </item>
+      <item> IllegalAccessError </item>
+      <item> IllegalAccessException </item>
+      <item> IllegalArgumentException </item>
+      <item> IllegalBlockSizeException </item>
+      <item> IllegalBlockingModeException </item>
+      <item> IllegalCharsetNameException </item>
+      <item> IllegalClassFormatException </item>
+      <item> IllegalComponentStateException </item>
+      <item> IllegalFormatCodePointException </item>
+      <item> IllegalFormatConversionException </item>
+      <item> IllegalFormatException </item>
+      <item> IllegalFormatFlagsException </item>
+      <item> IllegalFormatPrecisionException </item>
+      <item> IllegalFormatWidthException </item>
+      <item> IllegalMonitorStateException </item>
+      <item> IllegalPathStateException </item>
+      <item> IllegalSelectorException </item>
+      <item> IllegalStateException </item>
+      <item> IllegalThreadStateException </item>
+      <item> Image </item>
+      <item> ImageCapabilities </item>
+      <item> ImageConsumer </item>
+      <item> ImageFilter </item>
+      <item> ImageGraphicAttribute </item>
+      <item> ImageIO </item>
+      <item> ImageIcon </item>
+      <item> ImageInputStream </item>
+      <item> ImageInputStreamImpl </item>
+      <item> ImageInputStreamSpi </item>
+      <item> ImageObserver </item>
+      <item> ImageOutputStream </item>
+      <item> ImageOutputStreamImpl </item>
+      <item> ImageOutputStreamSpi </item>
+      <item> ImageProducer </item>
+      <item> ImageReadParam </item>
+      <item> ImageReader </item>
+      <item> ImageReaderSpi </item>
+      <item> ImageReaderWriterSpi </item>
+      <item> ImageTranscoder </item>
+      <item> ImageTranscoderSpi </item>
+      <item> ImageTypeSpecifier </item>
+      <item> ImageView </item>
+      <item> ImageWriteParam </item>
+      <item> ImageWriter </item>
+      <item> ImageWriterSpi </item>
+      <item> ImagingOpException </item>
+      <item> ImplicitActivationPolicy </item>
+      <item> ImplicitActivationPolicyOperations </item>
+      <item> ImplicitActivationPolicyValue </item>
+      <item> IncompatibleClassChangeError </item>
+      <item> IncompleteAnnotationException </item>
+      <item> InconsistentTypeCode </item>
+      <item> InconsistentTypeCode </item>
+      <item> InconsistentTypeCodeHelper </item>
+      <item> IndexColorModel </item>
+      <item> IndexOutOfBoundsException </item>
+      <item> IndexedPropertyChangeEvent </item>
+      <item> IndexedPropertyDescriptor </item>
+      <item> IndirectionException </item>
+      <item> Inet4Address </item>
+      <item> Inet6Address </item>
+      <item> InetAddress </item>
+      <item> InetSocketAddress </item>
+      <item> Inflater </item>
+      <item> InflaterInputStream </item>
+      <item> InheritableThreadLocal </item>
+      <item> Inherited </item>
+      <item> InitialContext </item>
+      <item> InitialContextFactory </item>
+      <item> InitialContextFactoryBuilder </item>
+      <item> InitialDirContext </item>
+      <item> InitialLdapContext </item>
+      <item> InlineView </item>
+      <item> InputContext </item>
+      <item> InputEvent </item>
+      <item> InputMap </item>
+      <item> InputMapUIResource </item>
+      <item> InputMethod </item>
+      <item> InputMethodContext </item>
+      <item> InputMethodDescriptor </item>
+      <item> InputMethodEvent </item>
+      <item> InputMethodHighlight </item>
+      <item> InputMethodListener </item>
+      <item> InputMethodRequests </item>
+      <item> InputMismatchException </item>
+      <item> InputSource </item>
+      <item> InputStream </item>
+      <item> InputStream </item>
+      <item> InputStream </item>
+      <item> InputStreamReader </item>
+      <item> InputSubset </item>
+      <item> InputVerifier </item>
+      <item> Insets </item>
+      <item> InsetsUIResource </item>
+      <item> InstanceAlreadyExistsException </item>
+      <item> InstanceNotFoundException </item>
+      <item> InstantiationError </item>
+      <item> InstantiationException </item>
+      <item> Instrument </item>
+      <item> Instrumentation </item>
+      <item> InsufficientResourcesException </item>
+      <item> IntBuffer </item>
+      <item> IntHolder </item>
+      <item> Integer </item>
+      <item> IntegerSyntax </item>
+      <item> Interceptor </item>
+      <item> InterceptorOperations </item>
+      <item> InternalError </item>
+      <item> InternalFrameAdapter </item>
+      <item> InternalFrameEvent </item>
+      <item> InternalFrameFocusTraversalPolicy </item>
+      <item> InternalFrameListener </item>
+      <item> InternalFrameUI </item>
+      <item> InternationalFormatter </item>
+      <item> InterruptedException </item>
+      <item> InterruptedIOException </item>
+      <item> InterruptedNamingException </item>
+      <item> InterruptibleChannel </item>
+      <item> IntrospectionException </item>
+      <item> IntrospectionException </item>
+      <item> Introspector </item>
+      <item> Invalid </item>
+      <item> InvalidActivityException </item>
+      <item> InvalidAddress </item>
+      <item> InvalidAddressHelper </item>
+      <item> InvalidAddressHolder </item>
+      <item> InvalidAlgorithmParameterException </item>
+      <item> InvalidApplicationException </item>
+      <item> InvalidAttributeIdentifierException </item>
+      <item> InvalidAttributeValueException </item>
+      <item> InvalidAttributeValueException </item>
+      <item> InvalidAttributesException </item>
+      <item> InvalidClassException </item>
+      <item> InvalidDnDOperationException </item>
+      <item> InvalidKeyException </item>
+      <item> InvalidKeyException </item>
+      <item> InvalidKeySpecException </item>
+      <item> InvalidMarkException </item>
+      <item> InvalidMidiDataException </item>
+      <item> InvalidName </item>
+      <item> InvalidName </item>
+      <item> InvalidName </item>
+      <item> InvalidNameException </item>
+      <item> InvalidNameHelper </item>
+      <item> InvalidNameHelper </item>
+      <item> InvalidNameHolder </item>
+      <item> InvalidObjectException </item>
+      <item> InvalidOpenTypeException </item>
+      <item> InvalidParameterException </item>
+      <item> InvalidParameterSpecException </item>
+      <item> InvalidPolicy </item>
+      <item> InvalidPolicyHelper </item>
+      <item> InvalidPreferencesFormatException </item>
+      <item> InvalidPropertiesFormatException </item>
+      <item> InvalidRelationIdException </item>
+      <item> InvalidRelationServiceException </item>
+      <item> InvalidRelationTypeException </item>
+      <item> InvalidRoleInfoException </item>
+      <item> InvalidRoleValueException </item>
+      <item> InvalidSearchControlsException </item>
+      <item> InvalidSearchFilterException </item>
+      <item> InvalidSeq </item>
+      <item> InvalidSlot </item>
+      <item> InvalidSlotHelper </item>
+      <item> InvalidTargetObjectTypeException </item>
+      <item> InvalidTransactionException </item>
+      <item> InvalidTypeForEncoding </item>
+      <item> InvalidTypeForEncodingHelper </item>
+      <item> InvalidValue </item>
+      <item> InvalidValue </item>
+      <item> InvalidValueHelper </item>
+      <item> InvocationEvent </item>
+      <item> InvocationHandler </item>
+      <item> InvocationTargetException </item>
+      <item> InvokeHandler </item>
+      <item> IstringHelper </item>
+      <item> ItemEvent </item>
+      <item> ItemListener </item>
+      <item> ItemSelectable </item>
+      <item> Iterable </item>
+      <item> Iterator </item>
+      <item> IvParameterSpec </item>
+      <item> JApplet </item>
+      <item> JButton </item>
+      <item> JCheckBox </item>
+      <item> JCheckBoxMenuItem </item>
+      <item> JColorChooser </item>
+      <item> JComboBox </item>
+      <item> JComboBox.KeySelectionManager </item>
+      <item> JComponent </item>
+      <item> JDesktopPane </item>
+      <item> JDialog </item>
+      <item> JEditorPane </item>
+      <item> JFileChooser </item>
+      <item> JFormattedTextField </item>
+      <item> JFormattedTextField.AbstractFormatter </item>
+      <item> JFormattedTextField.AbstractFormatterFactory </item>
+      <item> JFrame </item>
+      <item> JInternalFrame </item>
+      <item> JInternalFrame.JDesktopIcon </item>
+      <item> JLabel </item>
+      <item> JLayeredPane </item>
+      <item> JList </item>
+      <item> JMException </item>
+      <item> JMRuntimeException </item>
+      <item> JMXAuthenticator </item>
+      <item> JMXConnectionNotification </item>
+      <item> JMXConnector </item>
+      <item> JMXConnectorFactory </item>
+      <item> JMXConnectorProvider </item>
+      <item> JMXConnectorServer </item>
+      <item> JMXConnectorServerFactory </item>
+      <item> JMXConnectorServerMBean </item>
+      <item> JMXConnectorServerProvider </item>
+      <item> JMXPrincipal </item>
+      <item> JMXProviderException </item>
+      <item> JMXServerErrorException </item>
+      <item> JMXServiceURL </item>
+      <item> JMenu </item>
+      <item> JMenuBar </item>
+      <item> JMenuItem </item>
+      <item> JOptionPane </item>
+      <item> JPEGHuffmanTable </item>
+      <item> JPEGImageReadParam </item>
+      <item> JPEGImageWriteParam </item>
+      <item> JPEGQTable </item>
+      <item> JPanel </item>
+      <item> JPasswordField </item>
+      <item> JPopupMenu </item>
+      <item> JPopupMenu.Separator </item>
+      <item> JProgressBar </item>
+      <item> JRadioButton </item>
+      <item> JRadioButtonMenuItem </item>
+      <item> JRootPane </item>
+      <item> JScrollBar </item>
+      <item> JScrollPane </item>
+      <item> JSeparator </item>
+      <item> JSlider </item>
+      <item> JSpinner </item>
+      <item> JSpinner.DateEditor </item>
+      <item> JSpinner.DefaultEditor </item>
+      <item> JSpinner.ListEditor </item>
+      <item> JSpinner.NumberEditor </item>
+      <item> JSplitPane </item>
+      <item> JTabbedPane </item>
+      <item> JTable </item>
+      <item> JTable.PrintMode </item>
+      <item> JTableHeader </item>
+      <item> JTextArea </item>
+      <item> JTextComponent </item>
+      <item> JTextComponent.KeyBinding </item>
+      <item> JTextField </item>
+      <item> JTextPane </item>
+      <item> JToggleButton </item>
+      <item> JToggleButton.ToggleButtonModel </item>
+      <item> JToolBar </item>
+      <item> JToolBar.Separator </item>
+      <item> JToolTip </item>
+      <item> JTree </item>
+      <item> JTree.DynamicUtilTreeNode </item>
+      <item> JTree.EmptySelectionModel </item>
+      <item> JViewport </item>
+      <item> JWindow </item>
+      <item> JarEntry </item>
+      <item> JarException </item>
+      <item> JarFile </item>
+      <item> JarInputStream </item>
+      <item> JarOutputStream </item>
+      <item> JarURLConnection </item>
+      <item> JdbcRowSet </item>
+      <item> JobAttributes </item>
+      <item> JobAttributes.DefaultSelectionType </item>
+      <item> JobAttributes.DestinationType </item>
+      <item> JobAttributes.DialogType </item>
+      <item> JobAttributes.MultipleDocumentHandlingType </item>
+      <item> JobAttributes.SidesType </item>
+      <item> JobHoldUntil </item>
+      <item> JobImpressions </item>
+      <item> JobImpressionsCompleted </item>
+      <item> JobImpressionsSupported </item>
+      <item> JobKOctets </item>
+      <item> JobKOctetsProcessed </item>
+      <item> JobKOctetsSupported </item>
+      <item> JobMediaSheets </item>
+      <item> JobMediaSheetsCompleted </item>
+      <item> JobMediaSheetsSupported </item>
+      <item> JobMessageFromOperator </item>
+      <item> JobName </item>
+      <item> JobOriginatingUserName </item>
+      <item> JobPriority </item>
+      <item> JobPrioritySupported </item>
+      <item> JobSheets </item>
+      <item> JobState </item>
+      <item> JobStateReason </item>
+      <item> JobStateReasons </item>
+      <item> JoinRowSet </item>
+      <item> Joinable </item>
+      <item> KerberosKey </item>
+      <item> KerberosPrincipal </item>
+      <item> KerberosTicket </item>
+      <item> Kernel </item>
+      <item> Key </item>
+      <item> KeyAdapter </item>
+      <item> KeyAgreement </item>
+      <item> KeyAgreementSpi </item>
+      <item> KeyAlreadyExistsException </item>
+      <item> KeyEvent </item>
+      <item> KeyEventDispatcher </item>
+      <item> KeyEventPostProcessor </item>
+      <item> KeyException </item>
+      <item> KeyFactory </item>
+      <item> KeyFactorySpi </item>
+      <item> KeyGenerator </item>
+      <item> KeyGeneratorSpi </item>
+      <item> KeyListener </item>
+      <item> KeyManagementException </item>
+      <item> KeyManager </item>
+      <item> KeyManagerFactory </item>
+      <item> KeyManagerFactorySpi </item>
+      <item> KeyPair </item>
+      <item> KeyPairGenerator </item>
+      <item> KeyPairGeneratorSpi </item>
+      <item> KeyRep </item>
+      <item> KeyRep.Type </item>
+      <item> KeySpec </item>
+      <item> KeyStore </item>
+      <item> KeyStore.Builder </item>
+      <item> KeyStore.CallbackHandlerProtection </item>
+      <item> KeyStore.Entry </item>
+      <item> KeyStore.LoadStoreParameter </item>
+      <item> KeyStore.PasswordProtection </item>
+      <item> KeyStore.PrivateKeyEntry </item>
+      <item> KeyStore.ProtectionParameter </item>
+      <item> KeyStore.SecretKeyEntry </item>
+      <item> KeyStore.TrustedCertificateEntry </item>
+      <item> KeyStoreBuilderParameters </item>
+      <item> KeyStoreException </item>
+      <item> KeyStoreSpi </item>
+      <item> KeyStroke </item>
+      <item> KeyboardFocusManager </item>
+      <item> Keymap </item>
+      <item> LDAPCertStoreParameters </item>
+      <item> LIFESPAN_POLICY_ID </item>
+      <item> LOCATION_FORWARD </item>
+      <item> LSException </item>
+      <item> LSInput </item>
+      <item> LSLoadEvent </item>
+      <item> LSOutput </item>
+      <item> LSParser </item>
+      <item> LSParserFilter </item>
+      <item> LSProgressEvent </item>
+      <item> LSResourceResolver </item>
+      <item> LSSerializer </item>
+      <item> LSSerializerFilter </item>
+      <item> Label </item>
+      <item> LabelUI </item>
+      <item> LabelView </item>
+      <item> LanguageCallback </item>
+      <item> LastOwnerException </item>
+      <item> LayeredHighlighter </item>
+      <item> LayeredHighlighter.LayerPainter </item>
+      <item> LayoutFocusTraversalPolicy </item>
+      <item> LayoutManager </item>
+      <item> LayoutManager2 </item>
+      <item> LayoutQueue </item>
+      <item> LdapContext </item>
+      <item> LdapName </item>
+      <item> LdapReferralException </item>
+      <item> Lease </item>
+      <item> Level </item>
+      <item> LexicalHandler </item>
+      <item> LifespanPolicy </item>
+      <item> LifespanPolicyOperations </item>
+      <item> LifespanPolicyValue </item>
+      <item> LimitExceededException </item>
+      <item> Line </item>
+      <item> Line.Info </item>
+      <item> Line2D </item>
+      <item> Line2D.Double </item>
+      <item> Line2D.Float </item>
+      <item> LineBorder </item>
+      <item> LineBreakMeasurer </item>
+      <item> LineEvent </item>
+      <item> LineEvent.Type </item>
+      <item> LineListener </item>
+      <item> LineMetrics </item>
+      <item> LineNumberInputStream </item>
+      <item> LineNumberReader </item>
+      <item> LineUnavailableException </item>
+      <item> LinkException </item>
+      <item> LinkLoopException </item>
+      <item> LinkRef </item>
+      <item> LinkageError </item>
+      <item> LinkedBlockingQueue </item>
+      <item> LinkedHashMap </item>
+      <item> LinkedHashSet </item>
+      <item> LinkedList </item>
+      <item> List </item>
+      <item> List </item>
+      <item> ListCellRenderer </item>
+      <item> ListDataEvent </item>
+      <item> ListDataListener </item>
+      <item> ListIterator </item>
+      <item> ListModel </item>
+      <item> ListResourceBundle </item>
+      <item> ListSelectionEvent </item>
+      <item> ListSelectionListener </item>
+      <item> ListSelectionModel </item>
+      <item> ListUI </item>
+      <item> ListView </item>
+      <item> ListenerNotFoundException </item>
+      <item> LoaderHandler </item>
+      <item> LocalObject </item>
+      <item> Locale </item>
+      <item> LocateRegistry </item>
+      <item> Locator </item>
+      <item> Locator2 </item>
+      <item> Locator2Impl </item>
+      <item> LocatorImpl </item>
+      <item> Lock </item>
+      <item> LockSupport </item>
+      <item> LogManager </item>
+      <item> LogRecord </item>
+      <item> LogStream </item>
+      <item> Logger </item>
+      <item> LoggingMXBean </item>
+      <item> LoggingPermission </item>
+      <item> LoginContext </item>
+      <item> LoginException </item>
+      <item> LoginModule </item>
+      <item> Long </item>
+      <item> LongBuffer </item>
+      <item> LongHolder </item>
+      <item> LongLongSeqHelper </item>
+      <item> LongLongSeqHolder </item>
+      <item> LongSeqHelper </item>
+      <item> LongSeqHolder </item>
+      <item> LookAndFeel </item>
+      <item> LookupOp </item>
+      <item> LookupTable </item>
+      <item> MARSHAL </item>
+      <item> MBeanAttributeInfo </item>
+      <item> MBeanConstructorInfo </item>
+      <item> MBeanException </item>
+      <item> MBeanFeatureInfo </item>
+      <item> MBeanInfo </item>
+      <item> MBeanNotificationInfo </item>
+      <item> MBeanOperationInfo </item>
+      <item> MBeanParameterInfo </item>
+      <item> MBeanPermission </item>
+      <item> MBeanRegistration </item>
+      <item> MBeanRegistrationException </item>
+      <item> MBeanServer </item>
+      <item> MBeanServerBuilder </item>
+      <item> MBeanServerConnection </item>
+      <item> MBeanServerDelegate </item>
+      <item> MBeanServerDelegateMBean </item>
+      <item> MBeanServerFactory </item>
+      <item> MBeanServerForwarder </item>
+      <item> MBeanServerInvocationHandler </item>
+      <item> MBeanServerNotification </item>
+      <item> MBeanServerNotificationFilter </item>
+      <item> MBeanServerPermission </item>
+      <item> MBeanTrustPermission </item>
+      <item> MGF1ParameterSpec </item>
+      <item> MLet </item>
+      <item> MLetMBean </item>
+      <item> Mac </item>
+      <item> MacSpi </item>
+      <item> MalformedInputException </item>
+      <item> MalformedLinkException </item>
+      <item> MalformedObjectNameException </item>
+      <item> MalformedParameterizedTypeException </item>
+      <item> MalformedURLException </item>
+      <item> ManageReferralControl </item>
+      <item> ManagementFactory </item>
+      <item> ManagementPermission </item>
+      <item> ManagerFactoryParameters </item>
+      <item> Manifest </item>
+      <item> Map </item>
+      <item> Map.Entry </item>
+      <item> MappedByteBuffer </item>
+      <item> MarshalException </item>
+      <item> MarshalledObject </item>
+      <item> MaskFormatter </item>
+      <item> MatchResult </item>
+      <item> Matcher </item>
+      <item> Math </item>
+      <item> MathContext </item>
+      <item> MatteBorder </item>
+      <item> Media </item>
+      <item> MediaName </item>
+      <item> MediaPrintableArea </item>
+      <item> MediaSize </item>
+      <item> MediaSize.Engineering </item>
+      <item> MediaSize.ISO </item>
+      <item> MediaSize.JIS </item>
+      <item> MediaSize.NA </item>
+      <item> MediaSize.Other </item>
+      <item> MediaSizeName </item>
+      <item> MediaTracker </item>
+      <item> MediaTray </item>
+      <item> Member </item>
+      <item> MemoryCacheImageInputStream </item>
+      <item> MemoryCacheImageOutputStream </item>
+      <item> MemoryHandler </item>
+      <item> MemoryImageSource </item>
+      <item> MemoryMXBean </item>
+      <item> MemoryManagerMXBean </item>
+      <item> MemoryNotificationInfo </item>
+      <item> MemoryPoolMXBean </item>
+      <item> MemoryType </item>
+      <item> MemoryUsage </item>
+      <item> Menu </item>
+      <item> MenuBar </item>
+      <item> MenuBarUI </item>
+      <item> MenuComponent </item>
+      <item> MenuContainer </item>
+      <item> MenuDragMouseEvent </item>
+      <item> MenuDragMouseListener </item>
+      <item> MenuElement </item>
+      <item> MenuEvent </item>
+      <item> MenuItem </item>
+      <item> MenuItemUI </item>
+      <item> MenuKeyEvent </item>
+      <item> MenuKeyListener </item>
+      <item> MenuListener </item>
+      <item> MenuSelectionManager </item>
+      <item> MenuShortcut </item>
+      <item> MessageDigest </item>
+      <item> MessageDigestSpi </item>
+      <item> MessageFormat </item>
+      <item> MessageFormat.Field </item>
+      <item> MessageProp </item>
+      <item> MetaEventListener </item>
+      <item> MetaMessage </item>
+      <item> MetalBorders </item>
+      <item> MetalBorders.ButtonBorder </item>
+      <item> MetalBorders.Flush3DBorder </item>
+      <item> MetalBorders.InternalFrameBorder </item>
+      <item> MetalBorders.MenuBarBorder </item>
+      <item> MetalBorders.MenuItemBorder </item>
+      <item> MetalBorders.OptionDialogBorder </item>
+      <item> MetalBorders.PaletteBorder </item>
+      <item> MetalBorders.PopupMenuBorder </item>
+      <item> MetalBorders.RolloverButtonBorder </item>
+      <item> MetalBorders.ScrollPaneBorder </item>
+      <item> MetalBorders.TableHeaderBorder </item>
+      <item> MetalBorders.TextFieldBorder </item>
+      <item> MetalBorders.ToggleButtonBorder </item>
+      <item> MetalBorders.ToolBarBorder </item>
+      <item> MetalButtonUI </item>
+      <item> MetalCheckBoxIcon </item>
+      <item> MetalCheckBoxUI </item>
+      <item> MetalComboBoxButton </item>
+      <item> MetalComboBoxEditor </item>
+      <item> MetalComboBoxEditor.UIResource </item>
+      <item> MetalComboBoxIcon </item>
+      <item> MetalComboBoxUI </item>
+      <item> MetalDesktopIconUI </item>
+      <item> MetalFileChooserUI </item>
+      <item> MetalIconFactory </item>
+      <item> MetalIconFactory.FileIcon16 </item>
+      <item> MetalIconFactory.FolderIcon16 </item>
+      <item> MetalIconFactory.PaletteCloseIcon </item>
+      <item> MetalIconFactory.TreeControlIcon </item>
+      <item> MetalIconFactory.TreeFolderIcon </item>
+      <item> MetalIconFactory.TreeLeafIcon </item>
+      <item> MetalInternalFrameTitlePane </item>
+      <item> MetalInternalFrameUI </item>
+      <item> MetalLabelUI </item>
+      <item> MetalLookAndFeel </item>
+      <item> MetalMenuBarUI </item>
+      <item> MetalPopupMenuSeparatorUI </item>
+      <item> MetalProgressBarUI </item>
+      <item> MetalRadioButtonUI </item>
+      <item> MetalRootPaneUI </item>
+      <item> MetalScrollBarUI </item>
+      <item> MetalScrollButton </item>
+      <item> MetalScrollPaneUI </item>
+      <item> MetalSeparatorUI </item>
+      <item> MetalSliderUI </item>
+      <item> MetalSplitPaneUI </item>
+      <item> MetalTabbedPaneUI </item>
+      <item> MetalTextFieldUI </item>
+      <item> MetalTheme </item>
+      <item> MetalToggleButtonUI </item>
+      <item> MetalToolBarUI </item>
+      <item> MetalToolTipUI </item>
+      <item> MetalTreeUI </item>
+      <item> Method </item>
+      <item> MethodDescriptor </item>
+      <item> MidiChannel </item>
+      <item> MidiDevice </item>
+      <item> MidiDevice.Info </item>
+      <item> MidiDeviceProvider </item>
+      <item> MidiEvent </item>
+      <item> MidiFileFormat </item>
+      <item> MidiFileReader </item>
+      <item> MidiFileWriter </item>
+      <item> MidiMessage </item>
+      <item> MidiSystem </item>
+      <item> MidiUnavailableException </item>
+      <item> MimeTypeParseException </item>
+      <item> MinimalHTMLWriter </item>
+      <item> MissingFormatArgumentException </item>
+      <item> MissingFormatWidthException </item>
+      <item> MissingResourceException </item>
+      <item> Mixer </item>
+      <item> Mixer.Info </item>
+      <item> MixerProvider </item>
+      <item> ModelMBean </item>
+      <item> ModelMBeanAttributeInfo </item>
+      <item> ModelMBeanConstructorInfo </item>
+      <item> ModelMBeanInfo </item>
+      <item> ModelMBeanInfoSupport </item>
+      <item> ModelMBeanNotificationBroadcaster </item>
+      <item> ModelMBeanNotificationInfo </item>
+      <item> ModelMBeanOperationInfo </item>
+      <item> ModificationItem </item>
+      <item> Modifier </item>
+      <item> Monitor </item>
+      <item> MonitorMBean </item>
+      <item> MonitorNotification </item>
+      <item> MonitorSettingException </item>
+      <item> MouseAdapter </item>
+      <item> MouseDragGestureRecognizer </item>
+      <item> MouseEvent </item>
+      <item> MouseInfo </item>
+      <item> MouseInputAdapter </item>
+      <item> MouseInputListener </item>
+      <item> MouseListener </item>
+      <item> MouseMotionAdapter </item>
+      <item> MouseMotionListener </item>
+      <item> MouseWheelEvent </item>
+      <item> MouseWheelListener </item>
+      <item> MultiButtonUI </item>
+      <item> MultiColorChooserUI </item>
+      <item> MultiComboBoxUI </item>
+      <item> MultiDesktopIconUI </item>
+      <item> MultiDesktopPaneUI </item>
+      <item> MultiDoc </item>
+      <item> MultiDocPrintJob </item>
+      <item> MultiDocPrintService </item>
+      <item> MultiFileChooserUI </item>
+      <item> MultiInternalFrameUI </item>
+      <item> MultiLabelUI </item>
+      <item> MultiListUI </item>
+      <item> MultiLookAndFeel </item>
+      <item> MultiMenuBarUI </item>
+      <item> MultiMenuItemUI </item>
+      <item> MultiOptionPaneUI </item>
+      <item> MultiPanelUI </item>
+      <item> MultiPixelPackedSampleModel </item>
+      <item> MultiPopupMenuUI </item>
+      <item> MultiProgressBarUI </item>
+      <item> MultiRootPaneUI </item>
+      <item> MultiScrollBarUI </item>
+      <item> MultiScrollPaneUI </item>
+      <item> MultiSeparatorUI </item>
+      <item> MultiSliderUI </item>
+      <item> MultiSpinnerUI </item>
+      <item> MultiSplitPaneUI </item>
+      <item> MultiTabbedPaneUI </item>
+      <item> MultiTableHeaderUI </item>
+      <item> MultiTableUI </item>
+      <item> MultiTextUI </item>
+      <item> MultiToolBarUI </item>
+      <item> MultiToolTipUI </item>
+      <item> MultiTreeUI </item>
+      <item> MultiViewportUI </item>
+      <item> MulticastSocket </item>
+      <item> MultipleComponentProfileHelper </item>
+      <item> MultipleComponentProfileHolder </item>
+      <item> MultipleDocumentHandling </item>
+      <item> MultipleMaster </item>
+      <item> MutableAttributeSet </item>
+      <item> MutableComboBoxModel </item>
+      <item> MutableTreeNode </item>
+      <item> NON_EXISTENT </item>
+      <item> NO_IMPLEMENT </item>
+      <item> NO_MEMORY </item>
+      <item> NO_PERMISSION </item>
+      <item> NO_RESOURCES </item>
+      <item> NO_RESPONSE </item>
+      <item> NVList </item>
+      <item> Name </item>
+      <item> NameAlreadyBoundException </item>
+      <item> NameCallback </item>
+      <item> NameClassPair </item>
+      <item> NameComponent </item>
+      <item> NameComponentHelper </item>
+      <item> NameComponentHolder </item>
+      <item> NameDynAnyPair </item>
+      <item> NameDynAnyPairHelper </item>
+      <item> NameDynAnyPairSeqHelper </item>
+      <item> NameHelper </item>
+      <item> NameHolder </item>
+      <item> NameList </item>
+      <item> NameNotFoundException </item>
+      <item> NameParser </item>
+      <item> NameValuePair </item>
+      <item> NameValuePair </item>
+      <item> NameValuePairHelper </item>
+      <item> NameValuePairHelper </item>
+      <item> NameValuePairSeqHelper </item>
+      <item> NamedNodeMap </item>
+      <item> NamedValue </item>
+      <item> NamespaceChangeListener </item>
+      <item> NamespaceContext </item>
+      <item> NamespaceSupport </item>
+      <item> Naming </item>
+      <item> NamingContext </item>
+      <item> NamingContextExt </item>
+      <item> NamingContextExtHelper </item>
+      <item> NamingContextExtHolder </item>
+      <item> NamingContextExtOperations </item>
+      <item> NamingContextExtPOA </item>
+      <item> NamingContextHelper </item>
+      <item> NamingContextHolder </item>
+      <item> NamingContextOperations </item>
+      <item> NamingContextPOA </item>
+      <item> NamingEnumeration </item>
+      <item> NamingEvent </item>
+      <item> NamingException </item>
+      <item> NamingExceptionEvent </item>
+      <item> NamingListener </item>
+      <item> NamingManager </item>
+      <item> NamingSecurityException </item>
+      <item> NavigationFilter </item>
+      <item> NavigationFilter.FilterBypass </item>
+      <item> NegativeArraySizeException </item>
+      <item> NetPermission </item>
+      <item> NetworkInterface </item>
+      <item> NoClassDefFoundError </item>
+      <item> NoConnectionPendingException </item>
+      <item> NoContext </item>
+      <item> NoContextHelper </item>
+      <item> NoInitialContextException </item>
+      <item> NoPermissionException </item>
+      <item> NoRouteToHostException </item>
+      <item> NoServant </item>
+      <item> NoServantHelper </item>
+      <item> NoSuchAlgorithmException </item>
+      <item> NoSuchAttributeException </item>
+      <item> NoSuchElementException </item>
+      <item> NoSuchFieldError </item>
+      <item> NoSuchFieldException </item>
+      <item> NoSuchMethodError </item>
+      <item> NoSuchMethodException </item>
+      <item> NoSuchObjectException </item>
+      <item> NoSuchPaddingException </item>
+      <item> NoSuchProviderException </item>
+      <item> Node </item>
+      <item> NodeChangeEvent </item>
+      <item> NodeChangeListener </item>
+      <item> NodeList </item>
+      <item> NonReadableChannelException </item>
+      <item> NonWritableChannelException </item>
+      <item> NoninvertibleTransformException </item>
+      <item> NotActiveException </item>
+      <item> NotBoundException </item>
+      <item> NotCompliantMBeanException </item>
+      <item> NotContextException </item>
+      <item> NotEmpty </item>
+      <item> NotEmptyHelper </item>
+      <item> NotEmptyHolder </item>
+      <item> NotFound </item>
+      <item> NotFoundHelper </item>
+      <item> NotFoundHolder </item>
+      <item> NotFoundReason </item>
+      <item> NotFoundReasonHelper </item>
+      <item> NotFoundReasonHolder </item>
+      <item> NotOwnerException </item>
+      <item> NotSerializableException </item>
+      <item> NotYetBoundException </item>
+      <item> NotYetConnectedException </item>
+      <item> Notation </item>
+      <item> Notification </item>
+      <item> NotificationBroadcaster </item>
+      <item> NotificationBroadcasterSupport </item>
+      <item> NotificationEmitter </item>
+      <item> NotificationFilter </item>
+      <item> NotificationFilterSupport </item>
+      <item> NotificationListener </item>
+      <item> NotificationResult </item>
+      <item> NullCipher </item>
+      <item> NullPointerException </item>
+      <item> Number </item>
+      <item> NumberFormat </item>
+      <item> NumberFormat.Field </item>
+      <item> NumberFormatException </item>
+      <item> NumberFormatter </item>
+      <item> NumberOfDocuments </item>
+      <item> NumberOfInterveningJobs </item>
+      <item> NumberUp </item>
+      <item> NumberUpSupported </item>
+      <item> NumericShaper </item>
+      <item> OAEPParameterSpec </item>
+      <item> OBJECT_NOT_EXIST </item>
+      <item> OBJ_ADAPTER </item>
+      <item> OMGVMCID </item>
+      <item> ORB </item>
+      <item> ORB </item>
+      <item> ORBIdHelper </item>
+      <item> ORBInitInfo </item>
+      <item> ORBInitInfoOperations </item>
+      <item> ORBInitializer </item>
+      <item> ORBInitializerOperations </item>
+      <item> ObjID </item>
+      <item> Object </item>
+      <item> Object </item>
+      <item> ObjectAlreadyActive </item>
+      <item> ObjectAlreadyActiveHelper </item>
+      <item> ObjectChangeListener </item>
+      <item> ObjectFactory </item>
+      <item> ObjectFactoryBuilder </item>
+      <item> ObjectHelper </item>
+      <item> ObjectHolder </item>
+      <item> ObjectIdHelper </item>
+      <item> ObjectIdHelper </item>
+      <item> ObjectImpl </item>
+      <item> ObjectImpl </item>
+      <item> ObjectInput </item>
+      <item> ObjectInputStream </item>
+      <item> ObjectInputStream.GetField </item>
+      <item> ObjectInputValidation </item>
+      <item> ObjectInstance </item>
+      <item> ObjectName </item>
+      <item> ObjectNotActive </item>
+      <item> ObjectNotActiveHelper </item>
+      <item> ObjectOutput </item>
+      <item> ObjectOutputStream </item>
+      <item> ObjectOutputStream.PutField </item>
+      <item> ObjectReferenceFactory </item>
+      <item> ObjectReferenceFactoryHelper </item>
+      <item> ObjectReferenceFactoryHolder </item>
+      <item> ObjectReferenceTemplate </item>
+      <item> ObjectReferenceTemplateHelper </item>
+      <item> ObjectReferenceTemplateHolder </item>
+      <item> ObjectReferenceTemplateSeqHelper </item>
+      <item> ObjectReferenceTemplateSeqHolder </item>
+      <item> ObjectStreamClass </item>
+      <item> ObjectStreamConstants </item>
+      <item> ObjectStreamException </item>
+      <item> ObjectStreamField </item>
+      <item> ObjectView </item>
+      <item> Observable </item>
+      <item> Observer </item>
+      <item> OceanTheme </item>
+      <item> OctetSeqHelper </item>
+      <item> OctetSeqHolder </item>
+      <item> Oid </item>
+      <item> OpenDataException </item>
+      <item> OpenMBeanAttributeInfo </item>
+      <item> OpenMBeanAttributeInfoSupport </item>
+      <item> OpenMBeanConstructorInfo </item>
+      <item> OpenMBeanConstructorInfoSupport </item>
+      <item> OpenMBeanInfo </item>
+      <item> OpenMBeanInfoSupport </item>
+      <item> OpenMBeanOperationInfo </item>
+      <item> OpenMBeanOperationInfoSupport </item>
+      <item> OpenMBeanParameterInfo </item>
+      <item> OpenMBeanParameterInfoSupport </item>
+      <item> OpenType </item>
+      <item> OpenType </item>
+      <item> OperatingSystemMXBean </item>
+      <item> Operation </item>
+      <item> OperationNotSupportedException </item>
+      <item> OperationsException </item>
+      <item> Option </item>
+      <item> OptionPaneUI </item>
+      <item> OptionalDataException </item>
+      <item> OrientationRequested </item>
+      <item> OutOfMemoryError </item>
+      <item> OutputDeviceAssigned </item>
+      <item> OutputKeys </item>
+      <item> OutputStream </item>
+      <item> OutputStream </item>
+      <item> OutputStream </item>
+      <item> OutputStreamWriter </item>
+      <item> OverlappingFileLockException </item>
+      <item> OverlayLayout </item>
+      <item> Override </item>
+      <item> Owner </item>
+      <item> PBEKey </item>
+      <item> PBEKeySpec </item>
+      <item> PBEParameterSpec </item>
+      <item> PDLOverrideSupported </item>
+      <item> PERSIST_STORE </item>
+      <item> PKCS8EncodedKeySpec </item>
+      <item> PKIXBuilderParameters </item>
+      <item> PKIXCertPathBuilderResult </item>
+      <item> PKIXCertPathChecker </item>
+      <item> PKIXCertPathValidatorResult </item>
+      <item> PKIXParameters </item>
+      <item> POA </item>
+      <item> POAHelper </item>
+      <item> POAManager </item>
+      <item> POAManagerOperations </item>
+      <item> POAOperations </item>
+      <item> PRIVATE_MEMBER </item>
+      <item> PSSParameterSpec </item>
+      <item> PSource </item>
+      <item> PSource.PSpecified </item>
+      <item> PUBLIC_MEMBER </item>
+      <item> Pack200 </item>
+      <item> Pack200.Packer </item>
+      <item> Pack200.Unpacker </item>
+      <item> Package </item>
+      <item> PackedColorModel </item>
+      <item> PageAttributes </item>
+      <item> PageAttributes.ColorType </item>
+      <item> PageAttributes.MediaType </item>
+      <item> PageAttributes.OrientationRequestedType </item>
+      <item> PageAttributes.OriginType </item>
+      <item> PageAttributes.PrintQualityType </item>
+      <item> PageFormat </item>
+      <item> PageRanges </item>
+      <item> Pageable </item>
+      <item> PagedResultsControl </item>
+      <item> PagedResultsResponseControl </item>
+      <item> PagesPerMinute </item>
+      <item> PagesPerMinuteColor </item>
+      <item> Paint </item>
+      <item> PaintContext </item>
+      <item> PaintEvent </item>
+      <item> Panel </item>
+      <item> PanelUI </item>
+      <item> Paper </item>
+      <item> ParagraphView </item>
+      <item> ParagraphView </item>
+      <item> Parameter </item>
+      <item> ParameterBlock </item>
+      <item> ParameterDescriptor </item>
+      <item> ParameterMetaData </item>
+      <item> ParameterMode </item>
+      <item> ParameterModeHelper </item>
+      <item> ParameterModeHolder </item>
+      <item> ParameterizedType </item>
+      <item> ParseException </item>
+      <item> ParsePosition </item>
+      <item> Parser </item>
+      <item> Parser </item>
+      <item> ParserAdapter </item>
+      <item> ParserConfigurationException </item>
+      <item> ParserDelegator </item>
+      <item> ParserFactory </item>
+      <item> PartialResultException </item>
+      <item> PasswordAuthentication </item>
+      <item> PasswordCallback </item>
+      <item> PasswordView </item>
+      <item> Patch </item>
+      <item> PathIterator </item>
+      <item> Pattern </item>
+      <item> PatternSyntaxException </item>
+      <item> Permission </item>
+      <item> Permission </item>
+      <item> PermissionCollection </item>
+      <item> Permissions </item>
+      <item> PersistenceDelegate </item>
+      <item> PersistentMBean </item>
+      <item> PhantomReference </item>
+      <item> Pipe </item>
+      <item> Pipe.SinkChannel </item>
+      <item> Pipe.SourceChannel </item>
+      <item> PipedInputStream </item>
+      <item> PipedOutputStream </item>
+      <item> PipedReader </item>
+      <item> PipedWriter </item>
+      <item> PixelGrabber </item>
+      <item> PixelInterleavedSampleModel </item>
+      <item> PlainDocument </item>
+      <item> PlainView </item>
+      <item> Point </item>
+      <item> Point2D </item>
+      <item> Point2D.Double </item>
+      <item> Point2D.Float </item>
+      <item> PointerInfo </item>
+      <item> Policy </item>
+      <item> Policy </item>
+      <item> Policy </item>
+      <item> PolicyError </item>
+      <item> PolicyErrorCodeHelper </item>
+      <item> PolicyErrorHelper </item>
+      <item> PolicyErrorHolder </item>
+      <item> PolicyFactory </item>
+      <item> PolicyFactoryOperations </item>
+      <item> PolicyHelper </item>
+      <item> PolicyHolder </item>
+      <item> PolicyListHelper </item>
+      <item> PolicyListHolder </item>
+      <item> PolicyNode </item>
+      <item> PolicyOperations </item>
+      <item> PolicyQualifierInfo </item>
+      <item> PolicyTypeHelper </item>
+      <item> Polygon </item>
+      <item> PooledConnection </item>
+      <item> Popup </item>
+      <item> PopupFactory </item>
+      <item> PopupMenu </item>
+      <item> PopupMenuEvent </item>
+      <item> PopupMenuListener </item>
+      <item> PopupMenuUI </item>
+      <item> Port </item>
+      <item> Port.Info </item>
+      <item> PortUnreachableException </item>
+      <item> PortableRemoteObject </item>
+      <item> PortableRemoteObjectDelegate </item>
+      <item> Position </item>
+      <item> Position.Bias </item>
+      <item> Predicate </item>
+      <item> PreferenceChangeEvent </item>
+      <item> PreferenceChangeListener </item>
+      <item> Preferences </item>
+      <item> PreferencesFactory </item>
+      <item> PreparedStatement </item>
+      <item> PresentationDirection </item>
+      <item> Principal </item>
+      <item> Principal </item>
+      <item> PrincipalHolder </item>
+      <item> PrintEvent </item>
+      <item> PrintException </item>
+      <item> PrintGraphics </item>
+      <item> PrintJob </item>
+      <item> PrintJobAdapter </item>
+      <item> PrintJobAttribute </item>
+      <item> PrintJobAttributeEvent </item>
+      <item> PrintJobAttributeListener </item>
+      <item> PrintJobAttributeSet </item>
+      <item> PrintJobEvent </item>
+      <item> PrintJobListener </item>
+      <item> PrintQuality </item>
+      <item> PrintRequestAttribute </item>
+      <item> PrintRequestAttributeSet </item>
+      <item> PrintService </item>
+      <item> PrintServiceAttribute </item>
+      <item> PrintServiceAttributeEvent </item>
+      <item> PrintServiceAttributeListener </item>
+      <item> PrintServiceAttributeSet </item>
+      <item> PrintServiceLookup </item>
+      <item> PrintStream </item>
+      <item> PrintWriter </item>
+      <item> Printable </item>
+      <item> PrinterAbortException </item>
+      <item> PrinterException </item>
+      <item> PrinterGraphics </item>
+      <item> PrinterIOException </item>
+      <item> PrinterInfo </item>
+      <item> PrinterIsAcceptingJobs </item>
+      <item> PrinterJob </item>
+      <item> PrinterLocation </item>
+      <item> PrinterMakeAndModel </item>
+      <item> PrinterMessageFromOperator </item>
+      <item> PrinterMoreInfo </item>
+      <item> PrinterMoreInfoManufacturer </item>
+      <item> PrinterName </item>
+      <item> PrinterResolution </item>
+      <item> PrinterState </item>
+      <item> PrinterStateReason </item>
+      <item> PrinterStateReasons </item>
+      <item> PrinterURI </item>
+      <item> PriorityBlockingQueue </item>
+      <item> PriorityQueue </item>
+      <item> PrivateClassLoader </item>
+      <item> PrivateCredentialPermission </item>
+      <item> PrivateKey </item>
+      <item> PrivateMLet </item>
+      <item> PrivilegedAction </item>
+      <item> PrivilegedActionException </item>
+      <item> PrivilegedExceptionAction </item>
+      <item> Process </item>
+      <item> ProcessBuilder </item>
+      <item> ProcessingInstruction </item>
+      <item> ProfileDataException </item>
+      <item> ProfileIdHelper </item>
+      <item> ProgressBarUI </item>
+      <item> ProgressMonitor </item>
+      <item> ProgressMonitorInputStream </item>
+      <item> Properties </item>
+      <item> PropertyChangeEvent </item>
+      <item> PropertyChangeListener </item>
+      <item> PropertyChangeListenerProxy </item>
+      <item> PropertyChangeSupport </item>
+      <item> PropertyDescriptor </item>
+      <item> PropertyEditor </item>
+      <item> PropertyEditorManager </item>
+      <item> PropertyEditorSupport </item>
+      <item> PropertyPermission </item>
+      <item> PropertyResourceBundle </item>
+      <item> PropertyVetoException </item>
+      <item> ProtectionDomain </item>
+      <item> ProtocolException </item>
+      <item> Provider </item>
+      <item> Provider.Service </item>
+      <item> ProviderException </item>
+      <item> Proxy </item>
+      <item> Proxy </item>
+      <item> Proxy.Type </item>
+      <item> ProxySelector </item>
+      <item> PublicKey </item>
+      <item> PushbackInputStream </item>
+      <item> PushbackReader </item>
+      <item> QName </item>
+      <item> QuadCurve2D </item>
+      <item> QuadCurve2D.Double </item>
+      <item> QuadCurve2D.Float </item>
+      <item> Query </item>
+      <item> QueryEval </item>
+      <item> QueryExp </item>
+      <item> Queue </item>
+      <item> QueuedJobCount </item>
+      <item> RC2ParameterSpec </item>
+      <item> RC5ParameterSpec </item>
+      <item> REBIND </item>
+      <item> REQUEST_PROCESSING_POLICY_ID </item>
+      <item> RGBImageFilter </item>
+      <item> RMIClassLoader </item>
+      <item> RMIClassLoaderSpi </item>
+      <item> RMIClientSocketFactory </item>
+      <item> RMIConnection </item>
+      <item> RMIConnectionImpl </item>
+      <item> RMIConnectionImpl_Stub </item>
+      <item> RMIConnector </item>
+      <item> RMIConnectorServer </item>
+      <item> RMICustomMaxStreamFormat </item>
+      <item> RMIFailureHandler </item>
+      <item> RMIIIOPServerImpl </item>
+      <item> RMIJRMPServerImpl </item>
+      <item> RMISecurityException </item>
+      <item> RMISecurityManager </item>
+      <item> RMIServer </item>
+      <item> RMIServerImpl </item>
+      <item> RMIServerImpl_Stub </item>
+      <item> RMIServerSocketFactory </item>
+      <item> RMISocketFactory </item>
+      <item> RSAKey </item>
+      <item> RSAKeyGenParameterSpec </item>
+      <item> RSAMultiPrimePrivateCrtKey </item>
+      <item> RSAMultiPrimePrivateCrtKeySpec </item>
+      <item> RSAOtherPrimeInfo </item>
+      <item> RSAPrivateCrtKey </item>
+      <item> RSAPrivateCrtKeySpec </item>
+      <item> RSAPrivateKey </item>
+      <item> RSAPrivateKeySpec </item>
+      <item> RSAPublicKey </item>
+      <item> RSAPublicKeySpec </item>
+      <item> RTFEditorKit </item>
+      <item> Random </item>
+      <item> RandomAccess </item>
+      <item> RandomAccessFile </item>
+      <item> Raster </item>
+      <item> RasterFormatException </item>
+      <item> RasterOp </item>
+      <item> Rdn </item>
+      <item> ReadOnlyBufferException </item>
+      <item> ReadWriteLock </item>
+      <item> Readable </item>
+      <item> ReadableByteChannel </item>
+      <item> Reader </item>
+      <item> RealmCallback </item>
+      <item> RealmChoiceCallback </item>
+      <item> Receiver </item>
+      <item> Rectangle </item>
+      <item> Rectangle2D </item>
+      <item> Rectangle2D.Double </item>
+      <item> Rectangle2D.Float </item>
+      <item> RectangularShape </item>
+      <item> ReentrantLock </item>
+      <item> ReentrantReadWriteLock </item>
+      <item> ReentrantReadWriteLock.ReadLock </item>
+      <item> ReentrantReadWriteLock.WriteLock </item>
+      <item> Ref </item>
+      <item> RefAddr </item>
+      <item> Reference </item>
+      <item> Reference </item>
+      <item> ReferenceQueue </item>
+      <item> ReferenceUriSchemesSupported </item>
+      <item> Referenceable </item>
+      <item> ReferralException </item>
+      <item> ReflectPermission </item>
+      <item> ReflectionException </item>
+      <item> RefreshFailedException </item>
+      <item> Refreshable </item>
+      <item> Region </item>
+      <item> RegisterableService </item>
+      <item> Registry </item>
+      <item> RegistryHandler </item>
+      <item> RejectedExecutionException </item>
+      <item> RejectedExecutionHandler </item>
+      <item> Relation </item>
+      <item> RelationException </item>
+      <item> RelationNotFoundException </item>
+      <item> RelationNotification </item>
+      <item> RelationService </item>
+      <item> RelationServiceMBean </item>
+      <item> RelationServiceNotRegisteredException </item>
+      <item> RelationSupport </item>
+      <item> RelationSupportMBean </item>
+      <item> RelationType </item>
+      <item> RelationTypeNotFoundException </item>
+      <item> RelationTypeSupport </item>
+      <item> RemarshalException </item>
+      <item> Remote </item>
+      <item> RemoteCall </item>
+      <item> RemoteException </item>
+      <item> RemoteObject </item>
+      <item> RemoteObjectInvocationHandler </item>
+      <item> RemoteRef </item>
+      <item> RemoteServer </item>
+      <item> RemoteStub </item>
+      <item> RenderContext </item>
+      <item> RenderableImage </item>
+      <item> RenderableImageOp </item>
+      <item> RenderableImageProducer </item>
+      <item> RenderedImage </item>
+      <item> RenderedImageFactory </item>
+      <item> Renderer </item>
+      <item> RenderingHints </item>
+      <item> RenderingHints.Key </item>
+      <item> RepaintManager </item>
+      <item> ReplicateScaleFilter </item>
+      <item> RepositoryIdHelper </item>
+      <item> Request </item>
+      <item> RequestInfo </item>
+      <item> RequestInfoOperations </item>
+      <item> RequestProcessingPolicy </item>
+      <item> RequestProcessingPolicyOperations </item>
+      <item> RequestProcessingPolicyValue </item>
+      <item> RequestingUserName </item>
+      <item> RequiredModelMBean </item>
+      <item> RescaleOp </item>
+      <item> ResolutionSyntax </item>
+      <item> ResolveResult </item>
+      <item> Resolver </item>
+      <item> ResourceBundle </item>
+      <item> ResponseCache </item>
+      <item> ResponseHandler </item>
+      <item> Result </item>
+      <item> ResultSet </item>
+      <item> ResultSetMetaData </item>
+      <item> Retention </item>
+      <item> RetentionPolicy </item>
+      <item> ReverbType </item>
+      <item> Robot </item>
+      <item> Role </item>
+      <item> RoleInfo </item>
+      <item> RoleInfoNotFoundException </item>
+      <item> RoleList </item>
+      <item> RoleNotFoundException </item>
+      <item> RoleResult </item>
+      <item> RoleStatus </item>
+      <item> RoleUnresolved </item>
+      <item> RoleUnresolvedList </item>
+      <item> RootPaneContainer </item>
+      <item> RootPaneUI </item>
+      <item> RoundRectangle2D </item>
+      <item> RoundRectangle2D.Double </item>
+      <item> RoundRectangle2D.Float </item>
+      <item> RoundingMode </item>
+      <item> RowMapper </item>
+      <item> RowSet </item>
+      <item> RowSetEvent </item>
+      <item> RowSetInternal </item>
+      <item> RowSetListener </item>
+      <item> RowSetMetaData </item>
+      <item> RowSetMetaDataImpl </item>
+      <item> RowSetReader </item>
+      <item> RowSetWarning </item>
+      <item> RowSetWriter </item>
+      <item> RuleBasedCollator </item>
+      <item> RunTime </item>
+      <item> RunTimeOperations </item>
+      <item> Runnable </item>
+      <item> Runtime </item>
+      <item> RuntimeErrorException </item>
+      <item> RuntimeException </item>
+      <item> RuntimeMBeanException </item>
+      <item> RuntimeMXBean </item>
+      <item> RuntimeOperationsException </item>
+      <item> RuntimePermission </item>
+      <item> SAXException </item>
+      <item> SAXNotRecognizedException </item>
+      <item> SAXNotSupportedException </item>
+      <item> SAXParseException </item>
+      <item> SAXParser </item>
+      <item> SAXParserFactory </item>
+      <item> SAXResult </item>
+      <item> SAXSource </item>
+      <item> SAXTransformerFactory </item>
+      <item> SERVANT_RETENTION_POLICY_ID </item>
+      <item> SQLData </item>
+      <item> SQLException </item>
+      <item> SQLInput </item>
+      <item> SQLInputImpl </item>
+      <item> SQLOutput </item>
+      <item> SQLOutputImpl </item>
+      <item> SQLPermission </item>
+      <item> SQLWarning </item>
+      <item> SSLContext </item>
+      <item> SSLContextSpi </item>
+      <item> SSLEngine </item>
+      <item> SSLEngineResult </item>
+      <item> SSLEngineResult.HandshakeStatus </item>
+      <item> SSLEngineResult.Status </item>
+      <item> SSLException </item>
+      <item> SSLHandshakeException </item>
+      <item> SSLKeyException </item>
+      <item> SSLPeerUnverifiedException </item>
+      <item> SSLPermission </item>
+      <item> SSLProtocolException </item>
+      <item> SSLServerSocket </item>
+      <item> SSLServerSocketFactory </item>
+      <item> SSLSession </item>
+      <item> SSLSessionBindingEvent </item>
+      <item> SSLSessionBindingListener </item>
+      <item> SSLSessionContext </item>
+      <item> SSLSocket </item>
+      <item> SSLSocketFactory </item>
+      <item> SUCCESSFUL </item>
+      <item> SYNC_WITH_TRANSPORT </item>
+      <item> SYSTEM_EXCEPTION </item>
+      <item> SampleModel </item>
+      <item> Sasl </item>
+      <item> SaslClient </item>
+      <item> SaslClientFactory </item>
+      <item> SaslException </item>
+      <item> SaslServer </item>
+      <item> SaslServerFactory </item>
+      <item> Savepoint </item>
+      <item> Scanner </item>
+      <item> ScatteringByteChannel </item>
+      <item> ScheduledExecutorService </item>
+      <item> ScheduledFuture </item>
+      <item> ScheduledThreadPoolExecutor </item>
+      <item> Schema </item>
+      <item> SchemaFactory </item>
+      <item> SchemaFactoryLoader </item>
+      <item> SchemaViolationException </item>
+      <item> ScrollBarUI </item>
+      <item> ScrollPane </item>
+      <item> ScrollPaneAdjustable </item>
+      <item> ScrollPaneConstants </item>
+      <item> ScrollPaneLayout </item>
+      <item> ScrollPaneLayout.UIResource </item>
+      <item> ScrollPaneUI </item>
+      <item> Scrollable </item>
+      <item> Scrollbar </item>
+      <item> SealedObject </item>
+      <item> SearchControls </item>
+      <item> SearchResult </item>
+      <item> SecretKey </item>
+      <item> SecretKeyFactory </item>
+      <item> SecretKeyFactorySpi </item>
+      <item> SecretKeySpec </item>
+      <item> SecureCacheResponse </item>
+      <item> SecureClassLoader </item>
+      <item> SecureRandom </item>
+      <item> SecureRandomSpi </item>
+      <item> Security </item>
+      <item> SecurityException </item>
+      <item> SecurityManager </item>
+      <item> SecurityPermission </item>
+      <item> Segment </item>
+      <item> SelectableChannel </item>
+      <item> SelectionKey </item>
+      <item> Selector </item>
+      <item> SelectorProvider </item>
+      <item> Semaphore </item>
+      <item> SeparatorUI </item>
+      <item> Sequence </item>
+      <item> SequenceInputStream </item>
+      <item> Sequencer </item>
+      <item> Sequencer.SyncMode </item>
+      <item> SerialArray </item>
+      <item> SerialBlob </item>
+      <item> SerialClob </item>
+      <item> SerialDatalink </item>
+      <item> SerialException </item>
+      <item> SerialJavaObject </item>
+      <item> SerialRef </item>
+      <item> SerialStruct </item>
+      <item> Serializable </item>
+      <item> SerializablePermission </item>
+      <item> Servant </item>
+      <item> ServantActivator </item>
+      <item> ServantActivatorHelper </item>
+      <item> ServantActivatorOperations </item>
+      <item> ServantActivatorPOA </item>
+      <item> ServantAlreadyActive </item>
+      <item> ServantAlreadyActiveHelper </item>
+      <item> ServantLocator </item>
+      <item> ServantLocatorHelper </item>
+      <item> ServantLocatorOperations </item>
+      <item> ServantLocatorPOA </item>
+      <item> ServantManager </item>
+      <item> ServantManagerOperations </item>
+      <item> ServantNotActive </item>
+      <item> ServantNotActiveHelper </item>
+      <item> ServantObject </item>
+      <item> ServantRetentionPolicy </item>
+      <item> ServantRetentionPolicyOperations </item>
+      <item> ServantRetentionPolicyValue </item>
+      <item> ServerCloneException </item>
+      <item> ServerError </item>
+      <item> ServerException </item>
+      <item> ServerIdHelper </item>
+      <item> ServerNotActiveException </item>
+      <item> ServerRef </item>
+      <item> ServerRequest </item>
+      <item> ServerRequestInfo </item>
+      <item> ServerRequestInfoOperations </item>
+      <item> ServerRequestInterceptor </item>
+      <item> ServerRequestInterceptorOperations </item>
+      <item> ServerRuntimeException </item>
+      <item> ServerSocket </item>
+      <item> ServerSocketChannel </item>
+      <item> ServerSocketFactory </item>
+      <item> ServiceContext </item>
+      <item> ServiceContextHelper </item>
+      <item> ServiceContextHolder </item>
+      <item> ServiceContextListHelper </item>
+      <item> ServiceContextListHolder </item>
+      <item> ServiceDetail </item>
+      <item> ServiceDetailHelper </item>
+      <item> ServiceIdHelper </item>
+      <item> ServiceInformation </item>
+      <item> ServiceInformationHelper </item>
+      <item> ServiceInformationHolder </item>
+      <item> ServiceNotFoundException </item>
+      <item> ServicePermission </item>
+      <item> ServiceRegistry </item>
+      <item> ServiceRegistry.Filter </item>
+      <item> ServiceUI </item>
+      <item> ServiceUIFactory </item>
+      <item> ServiceUnavailableException </item>
+      <item> Set </item>
+      <item> SetOfIntegerSyntax </item>
+      <item> SetOverrideType </item>
+      <item> SetOverrideTypeHelper </item>
+      <item> Severity </item>
+      <item> Shape </item>
+      <item> ShapeGraphicAttribute </item>
+      <item> SheetCollate </item>
+      <item> Short </item>
+      <item> ShortBuffer </item>
+      <item> ShortBufferException </item>
+      <item> ShortHolder </item>
+      <item> ShortLookupTable </item>
+      <item> ShortMessage </item>
+      <item> ShortSeqHelper </item>
+      <item> ShortSeqHolder </item>
+      <item> Sides </item>
+      <item> Signature </item>
+      <item> SignatureException </item>
+      <item> SignatureSpi </item>
+      <item> SignedObject </item>
+      <item> Signer </item>
+      <item> SimpleAttributeSet </item>
+      <item> SimpleBeanInfo </item>
+      <item> SimpleDateFormat </item>
+      <item> SimpleDoc </item>
+      <item> SimpleFormatter </item>
+      <item> SimpleTimeZone </item>
+      <item> SimpleType </item>
+      <item> SinglePixelPackedSampleModel </item>
+      <item> SingleSelectionModel </item>
+      <item> Size2DSyntax </item>
+      <item> SizeLimitExceededException </item>
+      <item> SizeRequirements </item>
+      <item> SizeSequence </item>
+      <item> Skeleton </item>
+      <item> SkeletonMismatchException </item>
+      <item> SkeletonNotFoundException </item>
+      <item> SliderUI </item>
+      <item> Socket </item>
+      <item> SocketAddress </item>
+      <item> SocketChannel </item>
+      <item> SocketException </item>
+      <item> SocketFactory </item>
+      <item> SocketHandler </item>
+      <item> SocketImpl </item>
+      <item> SocketImplFactory </item>
+      <item> SocketOptions </item>
+      <item> SocketPermission </item>
+      <item> SocketSecurityException </item>
+      <item> SocketTimeoutException </item>
+      <item> SoftBevelBorder </item>
+      <item> SoftReference </item>
+      <item> SortControl </item>
+      <item> SortKey </item>
+      <item> SortResponseControl </item>
+      <item> SortedMap </item>
+      <item> SortedSet </item>
+      <item> SortingFocusTraversalPolicy </item>
+      <item> Soundbank </item>
+      <item> SoundbankReader </item>
+      <item> SoundbankResource </item>
+      <item> Source </item>
+      <item> SourceDataLine </item>
+      <item> SourceLocator </item>
+      <item> SpinnerDateModel </item>
+      <item> SpinnerListModel </item>
+      <item> SpinnerModel </item>
+      <item> SpinnerNumberModel </item>
+      <item> SpinnerUI </item>
+      <item> SplitPaneUI </item>
+      <item> Spring </item>
+      <item> SpringLayout </item>
+      <item> SpringLayout.Constraints </item>
+      <item> SslRMIClientSocketFactory </item>
+      <item> SslRMIServerSocketFactory </item>
+      <item> Stack </item>
+      <item> StackOverflowError </item>
+      <item> StackTraceElement </item>
+      <item> StandardMBean </item>
+      <item> StartTlsRequest </item>
+      <item> StartTlsResponse </item>
+      <item> State </item>
+      <item> StateEdit </item>
+      <item> StateEditable </item>
+      <item> StateFactory </item>
+      <item> Statement </item>
+      <item> Statement </item>
+      <item> StreamCorruptedException </item>
+      <item> StreamHandler </item>
+      <item> StreamPrintService </item>
+      <item> StreamPrintServiceFactory </item>
+      <item> StreamResult </item>
+      <item> StreamSource </item>
+      <item> StreamTokenizer </item>
+      <item> Streamable </item>
+      <item> StreamableValue </item>
+      <item> StrictMath </item>
+      <item> String </item>
+      <item> StringBuffer </item>
+      <item> StringBufferInputStream </item>
+      <item> StringBuilder </item>
+      <item> StringCharacterIterator </item>
+      <item> StringContent </item>
+      <item> StringHolder </item>
+      <item> StringIndexOutOfBoundsException </item>
+      <item> StringMonitor </item>
+      <item> StringMonitorMBean </item>
+      <item> StringNameHelper </item>
+      <item> StringReader </item>
+      <item> StringRefAddr </item>
+      <item> StringSelection </item>
+      <item> StringSeqHelper </item>
+      <item> StringSeqHolder </item>
+      <item> StringTokenizer </item>
+      <item> StringValueExp </item>
+      <item> StringValueHelper </item>
+      <item> StringWriter </item>
+      <item> Stroke </item>
+      <item> Struct </item>
+      <item> StructMember </item>
+      <item> StructMemberHelper </item>
+      <item> Stub </item>
+      <item> StubDelegate </item>
+      <item> StubNotFoundException </item>
+      <item> Style </item>
+      <item> StyleConstants </item>
+      <item> StyleConstants.CharacterConstants </item>
+      <item> StyleConstants.ColorConstants </item>
+      <item> StyleConstants.FontConstants </item>
+      <item> StyleConstants.ParagraphConstants </item>
+      <item> StyleContext </item>
+      <item> StyleSheet </item>
+      <item> StyleSheet.BoxPainter </item>
+      <item> StyleSheet.ListPainter </item>
+      <item> StyledDocument </item>
+      <item> StyledEditorKit </item>
+      <item> StyledEditorKit.AlignmentAction </item>
+      <item> StyledEditorKit.BoldAction </item>
+      <item> StyledEditorKit.FontFamilyAction </item>
+      <item> StyledEditorKit.FontSizeAction </item>
+      <item> StyledEditorKit.ForegroundAction </item>
+      <item> StyledEditorKit.ItalicAction </item>
+      <item> StyledEditorKit.StyledTextAction </item>
+      <item> StyledEditorKit.UnderlineAction </item>
+      <item> Subject </item>
+      <item> SubjectDelegationPermission </item>
+      <item> SubjectDomainCombiner </item>
+      <item> SupportedValuesAttribute </item>
+      <item> SuppressWarnings </item>
+      <item> SwingConstants </item>
+      <item> SwingPropertyChangeSupport </item>
+      <item> SwingUtilities </item>
+      <item> SyncFactory </item>
+      <item> SyncFactoryException </item>
+      <item> SyncFailedException </item>
+      <item> SyncProvider </item>
+      <item> SyncProviderException </item>
+      <item> SyncResolver </item>
+      <item> SyncScopeHelper </item>
+      <item> SynchronousQueue </item>
+      <item> SynthConstants </item>
+      <item> SynthContext </item>
+      <item> SynthGraphicsUtils </item>
+      <item> SynthLookAndFeel </item>
+      <item> SynthPainter </item>
+      <item> SynthStyle </item>
+      <item> SynthStyleFactory </item>
+      <item> Synthesizer </item>
+      <item> SysexMessage </item>
+      <item> System </item>
+      <item> SystemColor </item>
+      <item> SystemException </item>
+      <item> SystemFlavorMap </item>
+      <item> TAG_ALTERNATE_IIOP_ADDRESS </item>
+      <item> TAG_CODE_SETS </item>
+      <item> TAG_INTERNET_IOP </item>
+      <item> TAG_JAVA_CODEBASE </item>
+      <item> TAG_MULTIPLE_COMPONENTS </item>
+      <item> TAG_ORB_TYPE </item>
+      <item> TAG_POLICIES </item>
+      <item> TAG_RMI_CUSTOM_MAX_STREAM_FORMAT </item>
+      <item> TCKind </item>
+      <item> THREAD_POLICY_ID </item>
+      <item> TIMEOUT </item>
+      <item> TRANSACTION_MODE </item>
+      <item> TRANSACTION_REQUIRED </item>
+      <item> TRANSACTION_ROLLEDBACK </item>
+      <item> TRANSACTION_UNAVAILABLE </item>
+      <item> TRANSIENT </item>
+      <item> TRANSPORT_RETRY </item>
+      <item> TabExpander </item>
+      <item> TabSet </item>
+      <item> TabStop </item>
+      <item> TabableView </item>
+      <item> TabbedPaneUI </item>
+      <item> TableCellEditor </item>
+      <item> TableCellRenderer </item>
+      <item> TableColumn </item>
+      <item> TableColumnModel </item>
+      <item> TableColumnModelEvent </item>
+      <item> TableColumnModelListener </item>
+      <item> TableHeaderUI </item>
+      <item> TableModel </item>
+      <item> TableModelEvent </item>
+      <item> TableModelListener </item>
+      <item> TableUI </item>
+      <item> TableView </item>
+      <item> TabularData </item>
+      <item> TabularDataSupport </item>
+      <item> TabularType </item>
+      <item> TagElement </item>
+      <item> TaggedComponent </item>
+      <item> TaggedComponentHelper </item>
+      <item> TaggedComponentHolder </item>
+      <item> TaggedProfile </item>
+      <item> TaggedProfileHelper </item>
+      <item> TaggedProfileHolder </item>
+      <item> Target </item>
+      <item> TargetDataLine </item>
+      <item> TargetedNotification </item>
+      <item> Templates </item>
+      <item> TemplatesHandler </item>
+      <item> Text </item>
+      <item> TextAction </item>
+      <item> TextArea </item>
+      <item> TextAttribute </item>
+      <item> TextComponent </item>
+      <item> TextEvent </item>
+      <item> TextField </item>
+      <item> TextHitInfo </item>
+      <item> TextInputCallback </item>
+      <item> TextLayout </item>
+      <item> TextLayout.CaretPolicy </item>
+      <item> TextListener </item>
+      <item> TextMeasurer </item>
+      <item> TextOutputCallback </item>
+      <item> TextSyntax </item>
+      <item> TextUI </item>
+      <item> TexturePaint </item>
+      <item> Thread </item>
+      <item> Thread.State </item>
+      <item> Thread.UncaughtExceptionHandler </item>
+      <item> ThreadDeath </item>
+      <item> ThreadFactory </item>
+      <item> ThreadGroup </item>
+      <item> ThreadInfo </item>
+      <item> ThreadLocal </item>
+      <item> ThreadMXBean </item>
+      <item> ThreadPolicy </item>
+      <item> ThreadPolicyOperations </item>
+      <item> ThreadPolicyValue </item>
+      <item> ThreadPoolExecutor </item>
+      <item> ThreadPoolExecutor.AbortPolicy </item>
+      <item> ThreadPoolExecutor.CallerRunsPolicy </item>
+      <item> ThreadPoolExecutor.DiscardOldestPolicy </item>
+      <item> ThreadPoolExecutor.DiscardPolicy </item>
+      <item> Throwable </item>
+      <item> Tie </item>
+      <item> TileObserver </item>
+      <item> Time </item>
+      <item> TimeLimitExceededException </item>
+      <item> TimeUnit </item>
+      <item> TimeZone </item>
+      <item> TimeoutException </item>
+      <item> Timer </item>
+      <item> Timer </item>
+      <item> Timer </item>
+      <item> TimerAlarmClockNotification </item>
+      <item> TimerMBean </item>
+      <item> TimerNotification </item>
+      <item> TimerTask </item>
+      <item> Timestamp </item>
+      <item> Timestamp </item>
+      <item> TitledBorder </item>
+      <item> TooManyListenersException </item>
+      <item> ToolBarUI </item>
+      <item> ToolTipManager </item>
+      <item> ToolTipUI </item>
+      <item> Toolkit </item>
+      <item> Track </item>
+      <item> TransactionRequiredException </item>
+      <item> TransactionRolledbackException </item>
+      <item> TransactionService </item>
+      <item> TransactionalWriter </item>
+      <item> TransferHandler </item>
+      <item> Transferable </item>
+      <item> TransformAttribute </item>
+      <item> Transformer </item>
+      <item> TransformerConfigurationException </item>
+      <item> TransformerException </item>
+      <item> TransformerFactory </item>
+      <item> TransformerFactoryConfigurationError </item>
+      <item> TransformerHandler </item>
+      <item> Transmitter </item>
+      <item> Transparency </item>
+      <item> TreeCellEditor </item>
+      <item> TreeCellRenderer </item>
+      <item> TreeExpansionEvent </item>
+      <item> TreeExpansionListener </item>
+      <item> TreeMap </item>
+      <item> TreeModel </item>
+      <item> TreeModelEvent </item>
+      <item> TreeModelListener </item>
+      <item> TreeNode </item>
+      <item> TreePath </item>
+      <item> TreeSelectionEvent </item>
+      <item> TreeSelectionListener </item>
+      <item> TreeSelectionModel </item>
+      <item> TreeSet </item>
+      <item> TreeUI </item>
+      <item> TreeWillExpandListener </item>
+      <item> TrustAnchor </item>
+      <item> TrustManager </item>
+      <item> TrustManagerFactory </item>
+      <item> TrustManagerFactorySpi </item>
+      <item> Type </item>
+      <item> TypeCode </item>
+      <item> TypeCodeHolder </item>
+      <item> TypeInfo </item>
+      <item> TypeInfoProvider </item>
+      <item> TypeMismatch </item>
+      <item> TypeMismatch </item>
+      <item> TypeMismatch </item>
+      <item> TypeMismatchHelper </item>
+      <item> TypeMismatchHelper </item>
+      <item> TypeNotPresentException </item>
+      <item> TypeVariable </item>
+      <item> Types </item>
+      <item> UID </item>
+      <item> UIDefaults </item>
+      <item> UIDefaults.ActiveValue </item>
+      <item> UIDefaults.LazyInputMap </item>
+      <item> UIDefaults.LazyValue </item>
+      <item> UIDefaults.ProxyLazyValue </item>
+      <item> UIManager </item>
+      <item> UIManager.LookAndFeelInfo </item>
+      <item> UIResource </item>
+      <item> ULongLongSeqHelper </item>
+      <item> ULongLongSeqHolder </item>
+      <item> ULongSeqHelper </item>
+      <item> ULongSeqHolder </item>
+      <item> UNKNOWN </item>
+      <item> UNKNOWN </item>
+      <item> UNSUPPORTED_POLICY </item>
+      <item> UNSUPPORTED_POLICY_VALUE </item>
+      <item> URI </item>
+      <item> URIException </item>
+      <item> URIResolver </item>
+      <item> URISyntax </item>
+      <item> URISyntaxException </item>
+      <item> URL </item>
+      <item> URLClassLoader </item>
+      <item> URLConnection </item>
+      <item> URLDecoder </item>
+      <item> URLEncoder </item>
+      <item> URLStreamHandler </item>
+      <item> URLStreamHandlerFactory </item>
+      <item> URLStringHelper </item>
+      <item> USER_EXCEPTION </item>
+      <item> UShortSeqHelper </item>
+      <item> UShortSeqHolder </item>
+      <item> UTFDataFormatException </item>
+      <item> UUID </item>
+      <item> UndeclaredThrowableException </item>
+      <item> UndoManager </item>
+      <item> UndoableEdit </item>
+      <item> UndoableEditEvent </item>
+      <item> UndoableEditListener </item>
+      <item> UndoableEditSupport </item>
+      <item> UnexpectedException </item>
+      <item> UnicastRemoteObject </item>
+      <item> UnionMember </item>
+      <item> UnionMemberHelper </item>
+      <item> UnknownEncoding </item>
+      <item> UnknownEncodingHelper </item>
+      <item> UnknownError </item>
+      <item> UnknownException </item>
+      <item> UnknownFormatConversionException </item>
+      <item> UnknownFormatFlagsException </item>
+      <item> UnknownGroupException </item>
+      <item> UnknownHostException </item>
+      <item> UnknownHostException </item>
+      <item> UnknownObjectException </item>
+      <item> UnknownServiceException </item>
+      <item> UnknownUserException </item>
+      <item> UnknownUserExceptionHelper </item>
+      <item> UnknownUserExceptionHolder </item>
+      <item> UnmappableCharacterException </item>
+      <item> UnmarshalException </item>
+      <item> UnmodifiableClassException </item>
+      <item> UnmodifiableSetException </item>
+      <item> UnrecoverableEntryException </item>
+      <item> UnrecoverableKeyException </item>
+      <item> Unreferenced </item>
+      <item> UnresolvedAddressException </item>
+      <item> UnresolvedPermission </item>
+      <item> UnsatisfiedLinkError </item>
+      <item> UnsolicitedNotification </item>
+      <item> UnsolicitedNotificationEvent </item>
+      <item> UnsolicitedNotificationListener </item>
+      <item> UnsupportedAddressTypeException </item>
+      <item> UnsupportedAudioFileException </item>
+      <item> UnsupportedCallbackException </item>
+      <item> UnsupportedCharsetException </item>
+      <item> UnsupportedClassVersionError </item>
+      <item> UnsupportedEncodingException </item>
+      <item> UnsupportedFlavorException </item>
+      <item> UnsupportedLookAndFeelException </item>
+      <item> UnsupportedOperationException </item>
+      <item> UserDataHandler </item>
+      <item> UserException </item>
+      <item> Util </item>
+      <item> UtilDelegate </item>
+      <item> Utilities </item>
+      <item> VMID </item>
+      <item> VM_ABSTRACT </item>
+      <item> VM_CUSTOM </item>
+      <item> VM_NONE </item>
+      <item> VM_TRUNCATABLE </item>
+      <item> Validator </item>
+      <item> ValidatorHandler </item>
+      <item> ValueBase </item>
+      <item> ValueBaseHelper </item>
+      <item> ValueBaseHolder </item>
+      <item> ValueExp </item>
+      <item> ValueFactory </item>
+      <item> ValueHandler </item>
+      <item> ValueHandlerMultiFormat </item>
+      <item> ValueInputStream </item>
+      <item> ValueMember </item>
+      <item> ValueMemberHelper </item>
+      <item> ValueOutputStream </item>
+      <item> VariableHeightLayoutCache </item>
+      <item> Vector </item>
+      <item> VerifyError </item>
+      <item> VersionSpecHelper </item>
+      <item> VetoableChangeListener </item>
+      <item> VetoableChangeListenerProxy </item>
+      <item> VetoableChangeSupport </item>
+      <item> View </item>
+      <item> ViewFactory </item>
+      <item> ViewportLayout </item>
+      <item> ViewportUI </item>
+      <item> VirtualMachineError </item>
+      <item> Visibility </item>
+      <item> VisibilityHelper </item>
+      <item> VoiceStatus </item>
+      <item> Void </item>
+      <item> VolatileImage </item>
+      <item> WCharSeqHelper </item>
+      <item> WCharSeqHolder </item>
+      <item> WStringSeqHelper </item>
+      <item> WStringSeqHolder </item>
+      <item> WStringValueHelper </item>
+      <item> WeakHashMap </item>
+      <item> WeakReference </item>
+      <item> WebRowSet </item>
+      <item> WildcardType </item>
+      <item> Window </item>
+      <item> WindowAdapter </item>
+      <item> WindowConstants </item>
+      <item> WindowEvent </item>
+      <item> WindowFocusListener </item>
+      <item> WindowListener </item>
+      <item> WindowStateListener </item>
+      <item> WrappedPlainView </item>
+      <item> WritableByteChannel </item>
+      <item> WritableRaster </item>
+      <item> WritableRenderedImage </item>
+      <item> WriteAbortedException </item>
+      <item> Writer </item>
+      <item> WrongAdapter </item>
+      <item> WrongAdapterHelper </item>
+      <item> WrongPolicy </item>
+      <item> WrongPolicyHelper </item>
+      <item> WrongTransaction </item>
+      <item> WrongTransactionHelper </item>
+      <item> WrongTransactionHolder </item>
+      <item> X500Principal </item>
+      <item> X500PrivateCredential </item>
+      <item> X509CRL </item>
+      <item> X509CRLEntry </item>
+      <item> X509CRLSelector </item>
+      <item> X509CertSelector </item>
+      <item> X509Certificate </item>
+      <item> X509Certificate </item>
+      <item> X509EncodedKeySpec </item>
+      <item> X509ExtendedKeyManager </item>
+      <item> X509Extension </item>
+      <item> X509KeyManager </item>
+      <item> X509TrustManager </item>
+      <item> XAConnection </item>
+      <item> XADataSource </item>
+      <item> XAException </item>
+      <item> XAResource </item>
+      <item> XMLConstants </item>
+      <item> XMLDecoder </item>
+      <item> XMLEncoder </item>
+      <item> XMLFilter </item>
+      <item> XMLFilterImpl </item>
+      <item> XMLFormatter </item>
+      <item> XMLGregorianCalendar </item>
+      <item> XMLParseException </item>
+      <item> XMLReader </item>
+      <item> XMLReaderAdapter </item>
+      <item> XMLReaderFactory </item>
+      <item> XPath </item>
+      <item> XPathConstants </item>
+      <item> XPathException </item>
+      <item> XPathExpression </item>
+      <item> XPathExpressionException </item>
+      <item> XPathFactory </item>
+      <item> XPathFactoryConfigurationException </item>
+      <item> XPathFunction </item>
+      <item> XPathFunctionException </item>
+      <item> XPathFunctionResolver </item>
+      <item> XPathVariableResolver </item>
+      <item> Xid </item>
+      <item> XmlReader </item>
+      <item> XmlWriter </item>
+      <item> ZipEntry </item>
+      <item> ZipException </item>
+      <item> ZipFile </item>
+      <item> ZipInputStream </item>
+      <item> ZipOutputStream </item>
+      <item> ZoneView </item>
+      <item> _BindingIteratorImplBase </item>
+      <item> _BindingIteratorStub </item>
+      <item> _DynAnyFactoryStub </item>
+      <item> _DynAnyStub </item>
+      <item> _DynArrayStub </item>
+      <item> _DynEnumStub </item>
+      <item> _DynFixedStub </item>
+      <item> _DynSequenceStub </item>
+      <item> _DynStructStub </item>
+      <item> _DynUnionStub </item>
+      <item> _DynValueStub </item>
+      <item> _IDLTypeStub </item>
+      <item> _NamingContextExtStub </item>
+      <item> _NamingContextImplBase </item>
+      <item> _NamingContextStub </item>
+      <item> _PolicyStub </item>
+      <item> _Remote_Stub </item>
+      <item> _ServantActivatorStub </item>
+      <item> _ServantLocatorStub </item>
+    </list>
+    <list name="keywords">
+      <item> abstract </item>
+      <item> case </item>
+      <item> catch </item>
+      <item> class </item>
+      <item> def </item>
+      <item> do </item>
+      <item> else </item>
+      <item> extends </item>
+      <item> false </item>
+      <item> final </item>
+      <item> finally </item>
+      <item> for </item>
+      <item> forSome </item>
+      <item> if </item>
+      <item> implicit </item>
+      <item> import </item>
+      <item> lazy </item>
+      <item> match </item>
+      <item> new </item>
+      <item> null </item>
+      <item> object </item>
+      <item> override </item>
+      <item> package </item>
+      <item> private </item>
+      <item> protected </item>
+      <item> requires </item>
+      <item> return </item>
+      <item> sealed </item>
+      <item> super </item>
+      <item> this </item>
+      <item> throw </item>
+      <item> trait </item>
+      <item> true </item>
+      <item> try </item>
+      <item> type </item>
+      <item> val </item>
+      <item> var </item>
+      <item> while </item>
+      <item> with </item>
+      <item> yield </item>
+    </list>
+    <list name="types">
+      <item> boolean </item>
+      <item> byte </item>
+      <item> char </item>
+      <item> double </item>
+      <item> float </item>
+      <item> int </item>
+      <item> long </item>
+      <item> short </item>
+      <item> unit </item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+        <!-- Comment next line if you don't use Javadoc tool -->
+        <IncludeRules context="##Javadoc"/>
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+        <keyword attribute="Data Type" context="#stay" String="types"/>
+        <keyword attribute="Java15" context="#stay" String="java15"/>
+        <keyword attribute="Scala2" context="#stay" String="scala2"/>
+        <Float attribute="Float" context="#stay">
+          <AnyChar String="fF" attribute="Float" context="#stay"/>
+        </Float>
+        <HlCOct attribute="Octal" context="#stay"/>
+        <HlCHex attribute="Hex" context="#stay"/>
+        <Int attribute="Decimal" context="#stay">
+          <StringDetect attribute="Decimal" context="#stay" String="ULL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LUL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LLU" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="UL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LU" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="LL" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="U" insensitive="TRUE"/>
+          <StringDetect attribute="Decimal" context="#stay" String="L" insensitive="TRUE"/>
+        </Int>
+        <HlCChar attribute="Char" context="#stay"/>
+        <RegExpr attribute="Decimal" context="#stay" String="//\s*BEGIN.*$" beginRegion="Region1"/>
+        <RegExpr attribute="Decimal" context="#stay" String="//\s*END.*$" endRegion="Region1"/>
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <RegExpr attribute="Function" context="Printf" String="\.(format|printf)\b" />
+        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+        <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1"/>
+        <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1"/>
+<!--
+        <RegExpr attribute="Keyword" context="#stay" String="\.{3,3}\s+" />
+        <RegExpr attribute="Keyword" context="StaticImports" String="\b(import\s+static)\b" />
+        <RegExpr attribute="Keyword" context="Imports" String="\b(package|import)\b" />
+-->
+        <RegExpr attribute="Function" context="#stay" String="\b[_\w][_\w\d]*(?=[\s]*(/\*\s*\d+\s*\*/\s*)?[(])" />
+        <RegExpr attribute="Symbol" context="Member" String="[.]{1,1}" />
+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>
+      </context>
+      <context attribute="String" lineEndContext="#pop" name="String">
+        <LineContinue attribute="String" context="#stay"/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+      <context attribute="Printf" lineEndContext="#pop" name="Printf">
+        <DetectChar attribute="Normal Text" context="#pop" char="&#059;" />
+        <DetectChar attribute="String" context="PrintfString" char="&quot;"/>
+      </context>
+      <context attribute="PrintfString" lineEndContext="#pop" name="PrintfString">
+        <LineContinue attribute="String" context="#stay"/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+        <RegExpr attribute="String Char" context="#stay" String="%(\d+\$)?(-|#|\+|\ |0|,|\()*\d*(\.\d+)?[a-hosxA-CEGHSX]" />
+        <RegExpr attribute="String Char" context="#stay" String="%(\d+\$)?(-|#|\+|\ |0|,|\()*\d*(t|T)(a|A|b|B|c|C|d|D|e|F|h|H|I|j|k|l|L|m|M|N|p|P|Q|r|R|s|S|T|y|Y|z|Z)" />
+        <RegExpr attribute="String Char" context="#stay" String="%(%|n)" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Member" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="Function" context="#pop" String="\b[_a-zA-Z]\w*(?=[\s]*)" />
+      </context>
+<!--
+      <context attribute="Normal Text" lineEndContext="#pop" name="StaticImports">
+        <RegExpr attribute="StaticImports" context="#pop" String="\s*.*$" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Imports">
+        <RegExpr attribute="Imports" context="#pop" String="\s*.*$" />
+      </context>
+-->
+      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1"/>
+      <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text"  defStyleNum="dsNormal"/>
+      <itemData name="Keyword"      defStyleNum="dsKeyword"/>
+      <itemData name="Function"     defStyleNum="dsFunction"/>
+      <itemData name="StaticImports"      defStyleNum="dsKeyword" color="#800080" selColor="#FFFFFF" bold="0" italic="0"/>
+      <itemData name="Imports"      defStyleNum="dsKeyword" color="#808000" selColor="#FFFFFF" bold="0" italic="0"/>
+      <itemData name="Data Type"    defStyleNum="dsDataType"/>
+      <itemData name="Decimal"      defStyleNum="dsDecVal"/>
+      <itemData name="Octal"        defStyleNum="dsBaseN"/>
+      <itemData name="Hex"          defStyleNum="dsBaseN"/>
+      <itemData name="Float"        defStyleNum="dsFloat"/>
+      <itemData name="Char"         defStyleNum="dsChar"/>
+      <itemData name="String"       defStyleNum="dsString"/>
+      <itemData name="String Char"  defStyleNum="dsChar"/>
+      <itemData name="PrintfString" defStyleNum="dsString"/>
+      <itemData name="Comment"      defStyleNum="dsComment"/>
+      <itemData name="Symbol"       defStyleNum="dsNormal"/>
+      <itemData name="Scala2"       defStyleNum="dsNormal" color="#0095FF" selColor="#FFFFFF" bold="1" italic="0"/>
+      <itemData name="Java15"       defStyleNum="dsNormal" color="#0095FF" selColor="#FFFFFF" bold="1" italic="0"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="//"/>
+      <comment name="multiLine" start="/*" end="*/"/>
+    </comments>
+    <keywords casesensitive="1"/>
+  </general>
+</language>
diff --git a/xml/scheme.xml b/xml/scheme.xml
new file mode 100644
--- /dev/null
+++ b/xml/scheme.xml
@@ -0,0 +1,436 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!--
+  This file is part of KDE's kate project.
+
+  copyright   : (C) 2004-2005 by Dominik Haumann
+  email       : dhdev at gmx dot de
+
+
+  copyright   : (C) 2004 by Goffart Olivier
+  email       : ogoffart @ kde.org
+      (brackets coloration)
+
+
+ **********************************************************************
+ * This library is free software; you can redistribute it and/or      *
+ * modify it under the terms of the GNU Library General Public        *
+ * License as published by the Free Software Foundation; either       *
+ * version 2 of the License, or (at your option) any later version.   *
+ *                                                                    *
+ * This library is distributed in the hope that it will be useful,    *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of     *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  *
+ * Library General Public License for more details.                   *
+ *                                                                    *
+ * You should have received a copy of the GNU Library General Public  *
+ * License along with this library; if not, write to the              *
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,       *
+ * Boston, MA  02110-1301, USA.                                       *
+ **********************************************************************
+ NOTE:
+   This file defines highlighting rules for both Scheme AND Guile.
+   Scheme usually has no block comments. Guile has block comments: #! !#
+   I support these block comments: "Good design means good compromises" :)
+   Singleline comments are introduced through ';'. In reality EVERY
+   scheme/guile developer use ';;'. It is indented in emacs in a special way.
+   That's why I set <comment singleLine=";;">.
+
+   As a guile guru tole me it would not make sense to highlight all scheme and
+   guile procedures (cause then almost everything would be highlighted) I
+   removed some to have a rather small but "senseful" list of highlighted words.
+-->
+<language version="1.12" kateversion="2.4" name="Scheme" section="Scripts" extensions="*.scm;*.ss;*.scheme;*.guile" mimetype="text/x-scheme" author="Dominik Haumann (dhdev@gmx.de)" license="LGPL">
+  <highlighting>
+    <list name="operators">
+      <item> &lt;= </item>
+      <item> &lt; </item>
+      <item> = </item>
+      <item> =&gt; </item>
+      <item> &gt;= </item>
+      <item> &gt; </item>
+      <item> - </item>
+      <item> / </item>
+      <item> *,* </item>
+      <item> *) </item>
+      <item> + </item>
+    </list>
+    <list name="characters">
+      <item> #\nul </item>
+      <item> #\soh </item>
+      <item> #\stx </item>
+      <item> #\etx </item>
+      <item> #\eot </item>
+      <item> #\enq </item>
+      <item> #\ack </item>
+      <item> #\bel </item>
+      <item> #\bs </item>
+      <item> #\ht </item>
+      <item> #\nl </item>
+      <item> #\vt </item>
+      <item> #\np </item>
+      <item> #\cr </item>
+      <item> #\so </item>
+      <item> #\si </item>
+      <item> #\dle </item>
+      <item> #\dc1 </item>
+      <item> #\dc2 </item>
+      <item> #\dc3 </item>
+      <item> #\dc4 </item>
+      <item> #\nak </item>
+      <item> #\syn </item>
+      <item> #\etb </item>
+      <item> #\can </item>
+      <item> #\em </item>
+      <item> #\sub </item>
+      <item> #\esc </item>
+      <item> #\fs </item>
+      <item> #\gs </item>
+      <item> #\rs </item>
+      <item> #\us </item>
+      <item> #\space </item>
+      <item> #\sp </item>
+      <item> #\newline </item>
+      <item> #\nl </item>
+      <item> #\tab </item>
+      <item> #\ht </item>
+      <item> #\backspace </item>
+      <item> #\bs </item>
+      <item> #\return </item>
+      <item> #\cr </item>
+      <item> #\page </item>
+      <item> #\np </item>
+      <item> #\null </item>
+      <item> #\nul </item>
+    </list>
+    <list name="defines">
+      <item> define </item>
+      <item> define* </item>
+      <item> define-accessor </item>
+      <item> define-class </item>
+      <item> defined? </item>
+      <item> define-generic </item>
+      <item> define-macro </item>
+      <item> define-method </item>
+      <item> define-module </item>
+      <item> define-private </item>
+      <item> define-public </item>
+      <item> define*-public </item>
+      <item> define-reader-ctor </item>
+      <item> define-syntax </item>
+      <item> define-syntax-macro </item>
+      <item> defmacro </item>
+      <item> defmacro* </item>
+      <item> defmacro*-public </item>
+    </list>
+    <list name="keywords">
+      <item> abs </item>
+      <item> acos </item>
+      <item> and </item>
+      <item> angle </item>
+      <item> append </item>
+      <item> applymap </item>
+      <item> asin </item>
+      <item> assoc </item>
+      <item> assq </item>
+      <item> assv </item>
+      <item> atan </item>
+      <item> begin </item>
+      <item> boolean? </item>
+      <item> break </item>
+      <item> caaaar </item>
+      <item> caaadr </item>
+      <item> caaar </item>
+      <item> caadar </item>
+      <item> caaddr </item>
+      <item> caadr </item>
+      <item> caar </item>
+      <item> cadaar </item>
+      <item> cadadr </item>
+      <item> cadar </item>
+      <item> caddar </item>
+      <item> cadddr </item>
+      <item> caddr </item>
+      <item> cadr </item>
+      <item> call/cc </item>
+      <item> call-with-current-continuation </item>
+      <item> call-with-input-file </item>
+      <item> call-with-output-file </item>
+      <item> call-with-values </item>
+      <item> car </item>
+      <item> case </item>
+      <item> catch </item>
+      <item> cdaaar </item>
+      <item> cdaadr </item>
+      <item> cdaar </item>
+      <item> cdadar </item>
+      <item> cdaddr </item>
+      <item> cdadr </item>
+      <item> cdar </item>
+      <item> cddaar </item>
+      <item> cddadr </item>
+      <item> cddar </item>
+      <item> cdddar </item>
+      <item> cddddr </item>
+      <item> cdddr </item>
+      <item> cddr </item>
+      <item> cdr </item>
+      <item> ceiling </item>
+      <item> char-alphabetic? </item>
+      <item> char-ci&gt;=? </item>
+      <item> char-ci&gt;? </item>
+      <item> char-ci=? </item>
+      <item> char-ci&lt;=? </item>
+      <item> char-downcase </item>
+      <item> char-&gt;integer </item>
+      <item> char&gt;=? </item>
+      <item> char&gt;? </item>
+      <item> char=? </item>
+      <item> char? </item>
+      <item> char-lower-case? </item>
+      <item> char&lt;?c </item>
+      <item> char&lt;=? </item>
+      <item> char-numeric? </item>
+      <item> char-ready? </item>
+      <item> char-upcase </item>
+      <item> char-upper-case? </item>
+      <item> char-whitespace? </item>
+      <item> close-input-port </item>
+      <item> close-output-port </item>
+      <item> complex? </item>
+      <item> cond </item>
+      <item> cons </item>
+      <item> continue </item>
+      <item> cos </item>
+      <item> current-input-port </item>
+      <item> current-output-port </item>
+      <item> denominator </item>
+      <item> display </item>
+      <item> do </item>
+      <item> dynamic-wind </item>
+      <item> else </item>
+      <item> eof-object? </item>
+      <item> eq? </item>
+      <item> equal? </item>
+      <item> eqv? </item>
+      <item> eval </item>
+      <item> even? </item>
+      <item> exact->inexact </item>
+      <item> exact? </item>
+      <item> exp </item>
+      <item> expt </item>
+      <item> floor </item>
+      <item> force </item>
+      <item> for-each </item>
+      <item> gcd </item>
+      <item> har-ci&lt;? </item>
+      <item> if </item>
+      <item> imag-part </item>
+      <item> inexact-&gt;exact </item>
+      <item> inexact? </item>
+      <item> input-port? </item>
+      <item> integer-&gt;char </item>
+      <item> integer? </item>
+      <item> interaction-environment </item>
+      <item> lambda </item>
+      <item> lcm </item>
+      <item> length </item>
+      <item> let </item>
+      <item> let* </item>
+      <item> letrec </item>
+      <item> letrec-syntax </item>
+      <item> let-syntax </item>
+      <item> list-&gt;string </item>
+      <item> list </item>
+      <item> list? </item>
+      <item> list-ref </item>
+      <item> list-tail </item>
+      <item> load </item>
+      <item> log </item>
+      <item> magnitude </item>
+      <item> make-polar </item>
+      <item> make-rectangular </item>
+      <item> make-string </item>
+      <item> make-vector </item>
+      <item> max </item>
+      <item> member </item>
+      <item> memq </item>
+      <item> memv </item>
+      <item> min </item>
+      <item> modulo </item>
+      <item> negative? </item>
+      <item> newline </item>
+      <item> not </item>
+      <item> null-environment </item>
+      <item> null? </item>
+      <item> number? </item>
+      <item> number->string </item>
+      <item> numerator </item>
+      <item> odd? </item>
+      <item> open-input-file </item>
+      <item> open-output-file </item>
+      <item> or </item>
+      <item> output-port? </item>
+      <item> pair? </item>
+      <item> peek-char </item>
+      <item> port? </item>
+      <item> positive? </item>
+      <item> procedure? </item>
+      <item> quotient </item>
+      <item> rational? </item>
+      <item> rationalize </item>
+      <item> read-char </item>
+      <item> read </item>
+      <item> real? </item>
+      <item> real-part </item>
+      <item> remainder </item>
+      <item> reverse </item>
+      <item> round </item>
+      <item> scheme-report-environment </item>
+      <item> set-car! </item>
+      <item> set-cdr! </item>
+      <item> sin </item>
+      <item> sqrt </item>
+      <item> string-append </item>
+      <item> string-ci&gt;=? </item>
+      <item> string-ci&gt;? </item>
+      <item> string-ci=? </item>
+      <item> string-ci&lt;=? </item>
+      <item> string-ci&lt;? </item>
+      <item> string-copy </item>
+      <item> string-fill! </item>
+      <item> string&gt;=? </item>
+      <item> string&gt;? </item>
+      <item> string-&gt;list </item>
+      <item> string-&gt;number </item>
+      <item> string-&gt;symbol </item>
+      <item> string=? </item>
+      <item> string </item>
+      <item> string? </item>
+      <item> string-length </item>
+      <item> string&lt;=? </item>
+      <item> string&lt;? </item>
+      <item> string-ref </item>
+      <item> string-set! </item>
+      <item> substring </item>
+      <item> symbol-&gt;string </item>
+      <item> symbol? </item>
+      <item> syntax-rules </item>
+      <item> tan </item>
+      <item> transcript-off </item>
+      <item> transcript-on </item>
+      <item> truncate </item>
+      <item> values </item>
+      <item> vector-fill! </item>
+      <item> vector-&gt;listlist->vector </item>
+      <item> vector </item>
+      <item> vector? </item>
+      <item> vector-length </item>
+      <item> vector-ref </item>
+      <item> vector-set! </item>
+      <item> while </item>
+      <item> with-input-from-file </item>
+      <item> with-output-to-file </item>
+      <item> write-char </item>
+      <item> write </item>
+      <item> zero? </item>
+    </list>
+    <contexts>
+      <context name="Level0" attribute="Normal" lineEndContext="#stay">
+            <DetectChar attribute="Brackets1" context="Level1" char="("/>
+            <IncludeRules context="Default" />
+      </context>
+      <context name="Default" attribute="Normal" lineEndContext="#stay">
+        <RegExpr attribute="Region Marker" context="#stay" String=";+\s*BEGIN.*$" beginRegion="region"/>
+        <RegExpr attribute="Region Marker" context="#stay" String=";+\s*END.*$" endRegion="region"/>
+        <RegExpr attribute="Comment" context="#stay" String=";.*$"/>
+        <Detect2Chars attribute="Comment" context="MultiLineComment" char="#" char1="!" beginRegion="region"/>
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+        <keyword attribute="Operator" context="#stay" String="operators"/>
+        <keyword attribute="Definition" context="function_decl" String="defines"/>
+        <keyword attribute="Char" context="#stay" String="characters"/>
+        <RegExpr attribute="Char" context="#stay" String="#\\."/>
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <RegExpr attribute="Char" context="SpecialNumber" String="#[bodxei]"/>
+        <RegExpr attribute="Decimal" context="#stay" String="#[tf]"/>
+        <Float attribute="Float" context="#stay"/>
+        <Int attribute="Decimal" context="#stay"/>
+        <DetectChar attribute="Brackets1" context="Level1" char="("/>
+      </context>
+      <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="#pop" String="!#\s*$" endRegion="region" column="0"/>
+      </context>
+      <context name="SpecialNumber" attribute="Normal" fallthrough="true" lineEndContext="#pop">
+        <RegExpr attribute="Decimal" context="#pop" String="\d*(\.\d+)?"/>
+      </context>
+      <context name="String" attribute="String" lineEndContext="#stay">
+        <keyword attribute="Char" context="#stay" String="characters"/>
+        <RegExpr attribute="Char" context="#stay" String="#\\."/>
+        <Detect2Chars attribute="Char" context="#stay" char="\" char1="&quot;"/>
+        <Detect2Chars attribute="Char" context="#stay" char="\" char1="\"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+      <context name="function_decl" attribute="Function" lineEndContext="#stay">
+        <RegExpr attribute="Function" context="#pop" String="\s*[A-Za-z0-9-+\&lt;\&gt;//\*]*\s*" />
+      </context>
+      <context name="Level1" attribute="Normal" lineEndContext="#stay">
+           <DetectChar attribute="Brackets2" context="Level2" char="("/>
+           <DetectChar attribute="Brackets1" context="#pop" char=")" />
+           <IncludeRules context="Default" />
+      </context>
+      <context name="Level2" attribute="Normal" lineEndContext="#stay">
+           <DetectChar attribute="Brackets3" context="Level3" char="("/>
+           <DetectChar attribute="Brackets2" context="#pop" char=")" />
+           <IncludeRules context="Default" />
+      </context>
+      <context name="Level3" attribute="Normal" lineEndContext="#stay">
+           <DetectChar attribute="Brackets4" context="Level4" char="("/>
+           <DetectChar attribute="Brackets3" context="#pop" char=")" />
+           <IncludeRules context="Default" />
+      </context>
+      <context name="Level4" attribute="Normal" lineEndContext="#stay">
+           <DetectChar attribute="Brackets5" context="Level5" char="("/>
+           <DetectChar attribute="Brackets4" context="#pop" char=")" />
+           <IncludeRules context="Default" />
+      </context>
+      <context name="Level5" attribute="Normal" lineEndContext="#stay">
+           <DetectChar attribute="Brackets6" context="Level6" char="("/>
+           <DetectChar attribute="Brackets5" context="#pop" char=")" />
+           <IncludeRules context="Default" />
+      </context>
+      <context name="Level6" attribute="Normal" lineEndContext="#stay">
+           <DetectChar attribute="Brackets1" context="Level1" char="("/>
+           <DetectChar attribute="Brackets6" context="#pop" char=")" />
+           <IncludeRules context="Default" />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal"      defStyleNum="dsNormal"/>
+      <itemData name="Keyword"     defStyleNum="dsKeyword"/>
+      <itemData name="Definition"  defStyleNum="dsKeyword" color="#d22811"/>
+      <itemData name="Operator"    defStyleNum="dsKeyword" color="#d22811"/>
+      <itemData name="Function"    defStyleNum="dsFunction"/>
+      <itemData name="Data"        defStyleNum="dsDataType"/>
+      <itemData name="Decimal"     defStyleNum="dsDecVal"/>
+      <itemData name="BaseN"       defStyleNum="dsBaseN"/>
+      <itemData name="Float"       defStyleNum="dsFloat"/>
+      <itemData name="Char"        defStyleNum="dsChar"/>
+      <itemData name="String"      defStyleNum="dsString"/>
+      <itemData name="Comment"     defStyleNum="dsComment"/>
+      <itemData name="Region Marker" defStyleNum="dsRegionMarker"/>
+      <itemData name="Brackets1"    defStyleNum="dsNormal" color="#ff0000" selColor="#000000" bold="1" italic="0"/>
+      <itemData name="Brackets2"    defStyleNum="dsNormal" color="#ff8800" selColor="#000000" bold="1" italic="0"/>
+      <itemData name="Brackets3"    defStyleNum="dsNormal" color="#888800" selColor="#000000" bold="1" italic="0"/>
+      <itemData name="Brackets4"    defStyleNum="dsNormal" color="#008800" selColor="#000000" bold="1" italic="0"/>
+      <itemData name="Brackets5"    defStyleNum="dsNormal" color="#000088" selColor="#000000" bold="1" italic="0"/>
+      <itemData name="Brackets6"    defStyleNum="dsNormal" color="#880088" selColor="#000000" bold="1" italic="0"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <keywords casesensitive="1" weakDeliminator="-+*?!&lt;&gt;=/:#\"/>
+    <comments>
+      <comment name="singleLine" start=";;" />
+      <comment name="multiLine" start="#!" end="!#" />
+    </comments>
+  </general>
+</language>
diff --git a/xml/sgml.xml b/xml/sgml.xml
new file mode 100644
--- /dev/null
+++ b/xml/sgml.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="SGML" version="1.02" kateversion="2.1" section="Markup" extensions="*.sgml" mimetype="text/sgml">
+  <highlighting>
+    <contexts>
+       <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text" >
+         <StringDetect attribute="Comment" context="Comment" String="&lt;!--"/>
+         <RegExpr attribute="Tag" context="Attribute" String="&lt;\s*\/?\s*[a-zA-Z_:][a-zA-Z0-9._:-]*" />
+       </context>
+
+       <context attribute="Attribute Name" lineEndContext="#stay" name="Attribute" >
+          <Detect2Chars attribute="Tag" context="#pop" char="/" char1="&gt;" />
+          <DetectChar attribute="Tag" context="#pop" char="&gt;" />
+          <RegExpr attribute="Normal Text" context="Value" String="\s*=\s*" />
+       </context>
+
+       <context attribute="Attribute Value" lineEndContext="#stay" name="Value" >
+         <Detect2Chars attribute="Tag" context="#pop#pop" char="/" char1="&gt;" />
+          <DetectChar attribute="Tag" context="#pop#pop" char="&gt;" />
+         <DetectChar attribute="Attribute Value" context="Value 2" char="&quot;" />
+       </context>
+
+       <context attribute="Attribute Value" lineEndContext="#stay" name="Value 2" >
+         <DetectChar attribute="Attribute Value" context="#pop#pop" char="&quot;" />
+       </context>
+
+       <context attribute="Comment" lineEndContext="#stay" name="Comment" >
+         <StringDetect attribute="Comment" context="#pop" String="--&gt;"/>
+       </context>
+
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Tag" defStyleNum="dsKeyword"/>
+      <itemData name="Attribute Name" defStyleNum="dsOthers"/>
+      <itemData name="Attribute Value" defStyleNum="dsDataType"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="multiLine" start="&lt;!--" end="//--&gt;" />
+    </comments>
+    <keywords casesensitive="0" />
+  </general>
+</language>
diff --git a/xml/sql-mysql.xml b/xml/sql-mysql.xml
new file mode 100644
--- /dev/null
+++ b/xml/sql-mysql.xml
@@ -0,0 +1,476 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!--
+  MySQL syntax definition based on sql.xml by Yury Lebedev
+  original by Shane Wright (me@shanewright.co.uk)
+  modifications by Milian Wolff (mail@milianw.de)
+-->
+<language name="SQL (MySQL)" version="1.09" kateversion="2.5" section="Database" extensions="*.sql;*.SQL" mimetype="text/x-sql" casesensitive="0" author="Shane Wright (me@shanewright.co.uk)" license="">
+  <highlighting>
+    <list name="keywords">
+      <item> ACCESS </item>
+      <item> ADD </item>
+      <item> ALL </item>
+      <item> ALTER </item>
+      <item> ANALYZE </item>
+      <item> AND </item>
+      <item> AS </item>
+      <item> ASC </item>
+      <item> AUTO_INCREMENT </item>
+      <item> BDB </item>
+      <item> BERKELEYDB </item>
+      <item> BETWEEN </item>
+      <item> BOTH </item>
+      <item> BY </item>
+      <item> CASCADE </item>
+      <item> CASE </item>
+      <item> CHANGE </item>
+      <!-- <item> CHARACTER SET </item>
+        needs special regexp (see below) -->
+      <item> CHARSET </item>
+      <item> COLUMN </item>
+      <item> COLUMNS </item>
+      <item> CONSTRAINT </item>
+      <item> CREATE </item>
+      <item> CROSS </item>
+      <item> CURRENT_DATE </item>
+      <item> CURRENT_TIME </item>
+      <item> CURRENT_TIMESTAMP </item>
+      <item> DATABASE </item>
+      <item> DATABASES </item>
+      <item> DAY_HOUR </item>
+      <item> DAY_MINUTE </item>
+      <item> DAY_SECOND </item>
+      <item> DEC </item>
+      <item> DEFAULT </item>
+      <item> DELAYED </item>
+      <item> DELETE </item>
+      <item> DESC </item>
+      <item> DESCRIBE </item>
+      <item> DISTINCT </item>
+      <item> DISTINCTROW </item>
+      <item> DROP </item>
+      <item> ELSE </item>
+      <item> ENCLOSED </item>
+      <item> ESCAPED </item>
+      <item> EXISTS </item>
+      <item> EXPLAIN </item>
+      <item> FIELDS </item>
+      <item> FOR </item>
+      <item> FOREIGN </item>
+      <item> FROM </item>
+      <item> FULLTEXT </item>
+      <item> FUNCTION </item>
+      <item> GRANT </item>
+      <item> GROUP </item>
+      <item> HAVING </item>
+      <item> HIGH_PRIORITY </item>
+      <item> IF </item>
+      <item> IGNORE </item>
+      <item> IN </item>
+      <item> INDEX </item>
+      <item> INFILE </item>
+      <item> INNER </item>
+      <item> INNODB </item>
+      <item> INSERT </item>
+      <item> INTERVAL </item>
+      <item> INTO </item>
+      <item> IS </item>
+      <item> JOIN </item>
+      <item> KEY </item>
+      <item> KEYS </item>
+      <item> KILL </item>
+      <item> LEADING </item>
+      <item> LEFT </item>
+      <item> LIKE </item>
+      <item> LIMIT </item>
+      <item> LINES </item>
+      <item> LOAD </item>
+      <item> LOCK </item>
+      <item> LOW_PRIORITY </item>
+      <item> MASTER_SERVER_ID </item>
+      <item> MATCH </item>
+      <item> MRG_MYISAM </item>
+      <item> NATURAL </item>
+      <item> NATIONAL </item>
+      <item> NOT </item>
+      <item> NULL </item>
+      <item> NUMERIC </item>
+      <item> ON </item>
+      <item> OPTIMIZE </item>
+      <item> OPTION </item>
+      <item> OPTIONALLY </item>
+      <item> OR </item>
+      <item> ORDER </item>
+      <item> OUTER </item>
+      <item> OUTFILE </item>
+      <item> PARTIAL </item>
+      <item> PRECISION </item>
+      <item> PRIMARY </item>
+      <item> PRIVILEGES </item>
+      <item> PROCEDURE </item>
+      <item> PURGE </item>
+      <item> READ </item>
+      <item> REFERENCES </item>
+      <item> REGEXP </item>
+      <item> RENAME </item>
+      <item> REPLACE </item>
+      <item> REQUIRE </item>
+      <item> RESTRICT </item>
+      <item> RETURNS </item>
+      <item> REVOKE </item>
+      <item> RIGHT </item>
+      <item> RLIKE </item>
+      <item> SELECT </item>
+      <item> SET </item>
+      <item> SHOW </item>
+      <item> SONAME </item>
+      <item> SQL_BIG_RESULT </item>
+      <item> SQL_CALC_FOUND_ROWS </item>
+      <item> SQL_SMALL_RESULT </item>
+      <item> SSL </item>
+      <item> STARTING </item>
+      <item> STRAIGHT_JOIN </item>
+      <item> STRIPED </item>
+      <item> TABLE </item>
+      <item> TABLES </item>
+      <item> TERMINATED </item>
+      <item> THEN </item>
+      <item> TO </item>
+      <item> TRAILING </item>
+      <item> TRUNCATE </item>
+      <item> TYPE </item>
+      <item> UNION </item>
+      <item> UNIQUE </item>
+      <item> UNLOCK </item>
+      <item> UNSIGNED </item>
+      <item> UPDATE </item>
+      <item> USAGE </item>
+      <item> USE </item>
+      <item> USER_RESOURCES </item>
+      <item> USING </item>
+      <item> VALUES </item>
+      <item> VARYING </item>
+      <item> WHEN </item>
+      <item> WHERE </item>
+      <item> WITH </item>
+      <item> WRITE </item>
+      <item> XOR </item>
+      <item> YEAR_MONTH </item>
+      <item> ZEROFILL </item>
+    </list>
+    <list name="operators">
+      <item> + </item>
+      <item> - </item>
+      <item> * </item>
+      <item> / </item>
+      <item> || </item>
+      <item> = </item>
+      <item> != </item>
+      <item> &lt;&gt; </item>
+      <item> &lt; </item>
+      <item> &lt;= </item>
+      <item> &gt; </item>
+      <item> &gt;= </item>
+      <item> ~= </item>
+      <item> ^= </item>
+      <item> := </item>
+      <item> =&gt; </item>
+      <item> ** </item>
+      <item> .. </item>
+    </list>
+    <list name="functions">
+      <!-- string functions -->
+      <item> ASCII </item>
+      <item> ORD </item>
+      <item> CONV </item>
+      <item> BIN </item>
+      <item> OCT </item>
+      <item> HEX </item>
+      <item> CHAR </item>
+      <item> CONCAT </item>
+      <item> CONCAT_WS </item>
+      <item> LENGTH </item>
+      <item> OCTET_LENGTH </item>
+      <item> CHAR_LENGTH </item>
+      <item> CHARACTER_LENGTH </item>
+      <item> BIT_LENGTH </item>
+      <item> LOCATE </item>
+      <item> POSITION </item>
+      <item> INSTR </item>
+      <item> LPAD </item>
+      <item> RPAD </item>
+      <item> LEFT </item>
+      <item> RIGHT </item>
+      <item> SUBSTRING </item>
+      <item> SUBSTRING_INDEX </item>
+      <item> MID </item>
+      <item> LTRIM </item>
+      <item> RTRIM </item>
+      <item> TRIM </item>
+      <item> SOUNDEX </item>
+      <item> SPACE </item>
+      <item> REPLACE </item>
+      <item> REPEAT </item>
+      <item> REVERSE </item>
+      <item> INSERT </item>
+      <item> ELT </item>
+      <item> FIELD </item>
+      <item> FIND_IN_SET </item>
+      <item> MAKE_SET </item>
+      <item> EXPORT_SET </item>
+      <item> LCASE </item>
+      <item> LOWER </item>
+      <item> UCASE </item>
+      <item> UPPER </item>
+      <item> LOAD_FILE </item>
+      <item> QUOTE </item>
+      <!-- math functions -->
+      <item> ABS </item>
+      <item> SIGN </item>
+      <item> MOD </item>
+      <item> FLOOR </item>
+      <item> CEILING </item>
+      <item> ROUND </item>
+      <item> EXP </item>
+      <item> LN </item>
+      <item> LOG </item>
+      <item> LOG2 </item>
+      <item> LOG10 </item>
+      <item> POW </item>
+      <item> POWER </item>
+      <item> SQRT </item>
+      <item> PI </item>
+      <item> COS </item>
+      <item> SIN </item>
+      <item> TAN </item>
+      <item> ACOS </item>
+      <item> ASIN </item>
+      <item> ATAN </item>
+      <item> ATAN2 </item>
+      <item> COT </item>
+      <item> RAND </item>
+      <item> LEAST </item>
+      <item> GREATEST </item>
+      <item> DEGREES </item>
+      <item> RADIANS </item>
+      <!-- date/time functions -->
+      <item> DAYOFWEEK </item>
+      <item> WEEKDAY </item>
+      <item> DAYOFMONTH </item>
+      <item> DAYOFYEAR </item>
+      <item> MONTH </item>
+      <item> DAYNAME </item>
+      <item> MONTHNAME </item>
+      <item> QUARTER </item>
+      <item> WEEK </item>
+      <item> YEAR </item>
+      <item> YEARWEEK </item>
+      <item> HOUR </item>
+      <item> MINUTE </item>
+      <item> SECOND </item>
+      <item> PERIOD_ADD </item>
+      <item> PERIOD_DIFF </item>
+      <item> DATE_ADD </item>
+      <item> DATE_SUB </item>
+      <item> ADDDATE </item>
+      <item> SUBDATE </item>
+      <item> EXTRACT </item>
+      <item> TO_DAYS </item>
+      <item> FROM_DAYS </item>
+      <item> DATE_FORMAT </item>
+      <item> TIME_FORMAT </item>
+      <item> CURDATE </item>
+      <item> CURRENT_DATE </item>
+      <item> CURTIME </item>
+      <item> CURRENT_TIME </item>
+      <item> NOW </item>
+      <item> SYSDATE </item>
+      <item> CURRENT_TIMESTAMP </item>
+      <item> UNIX_TIMESTAMP </item>
+      <item> FROM_UNIXTIME </item>
+      <item> SEC_TO_TIME </item>
+      <item> TIME_TO_SEC </item>
+      <!-- cast functions -->
+      <item> CAST </item>
+      <item> CONVERT </item>
+      <!-- misc -->
+      <item> BIT_COUNT </item>
+      <item> DATABASE </item>
+      <item> USER </item>
+      <item> SYSTEM_USER </item>
+      <item> SESSION_USER </item>
+      <item> PASSWORD </item>
+      <item> ENCRYPT </item>
+      <item> ENCODE </item>
+      <item> DECODE </item>
+      <item> MD5 </item>
+      <item> SHA1 </item>
+      <item> SHA </item>
+      <item> AES_ENCRYPT </item>
+      <item> AES_DECRYPT </item>
+      <item> DES_ENCRYPT </item>
+      <item> DES_DECRYPT </item>
+      <item> LAST_INSERT_ID </item>
+      <item> FORMAT </item>
+      <item> VERSION </item>
+      <item> CONNECTION_ID </item>
+      <item> GET_LOCK </item>
+      <item> RELEASE_LOCK </item>
+      <item> IS_FREE_LOCK </item>
+      <item> BENCHMARK </item>
+      <item> INET_NTOA </item>
+      <item> INET_ATON </item>
+      <item> MASTER_POS_WAIT </item>
+      <item> FOUND_ROWS </item>
+      <!-- GROUP BY -->
+      <item> COUNT </item>
+      <item> AVG </item>
+      <item> MIN </item>
+      <item> MAX </item>
+      <item> SUM </item>
+      <item> STD </item>
+      <item> STDDEV </item>
+      <item> BIT_OR </item>
+      <item> BIT_AND </item>
+    </list>
+    <list name="types">
+      <!-- strings -->
+      <item> CHAR </item>
+      <item> CHARACTER </item>
+      <item> VARCHAR </item>
+      <item> BINARY </item>
+      <item> VARBINARY </item>
+      <item> TINYBLOB </item>
+      <item> MEDIUMBLOB </item>
+      <item> BLOB </item>
+      <item> LONGBLOB </item>
+      <item> TINYTEXT </item>
+      <item> MEDIUMTEXT </item>
+      <item> TEXT </item>
+      <item> LONGTEXT </item>
+      <item> ENUM </item>
+      <!-- <item> SET </item>
+        needs special regexp (see below) -->
+      <!-- numeric -->
+      <item> BIT </item>
+      <item> BOOL </item>
+      <item> BOOLEAN </item>
+      <item> TINYINT </item>
+      <item> SMALLINT </item>
+      <item> MEDIUMINT </item>
+      <item> MIDDLEINT </item>
+      <item> INT </item>
+      <item> INTEGER </item>
+      <item> BIGINT </item>
+      <item> FLOAT </item>
+      <item> DOUBLE </item>
+      <item> REAL </item>
+      <item> DECIMAL </item>
+      <item> DEC </item>
+      <item> FIXED </item>
+      <item> NUMERIC </item>
+      <item> LONG </item>
+      <item> SERIAL </item>
+      <!-- date and time -->
+      <item> DATE </item>
+      <item> DATETIME </item>
+      <item> TIME </item>
+      <item> TIMESTAMP </item>
+      <item> YEAR </item>
+    </list>
+    <contexts>
+      <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+        <!-- problematic special cases -->
+        <!-- SET type -->
+        <RegExpr attribute="Data Type" context="#stay" insensitive="true" String="SET(?=\s*\()"/>
+        <!-- keyword character set -->
+        <RegExpr attribute="Keyword" context="#stay" insensitive="true" String="\bCHARACTER SET\b"/>
+        <!-- using the lists -->
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+        <keyword attribute="Operator" context="#stay" String="operators"/>
+        <keyword attribute="Function" context="#stay" String="functions"/>
+        <keyword attribute="Data Type" context="#stay" String="types"/>
+        <!-- extra data types -->
+        <RegExpr attribute="Data Type" context="#stay" String="%bulk_exceptions\b" insensitive="true"/>
+        <RegExpr attribute="Data Type" context="#stay" String="%bulk_rowcount\b" insensitive="true"/>
+        <RegExpr attribute="Data Type" context="#stay" String="%found\b" insensitive="true"/>
+        <RegExpr attribute="Data Type" context="#stay" String="%isopen\b" insensitive="true"/>
+        <RegExpr attribute="Data Type" context="#stay" String="%notfound\b" insensitive="true"/>
+        <RegExpr attribute="Data Type" context="#stay" String="%rowcount\b" insensitive="true"/>
+        <RegExpr attribute="Data Type" context="#stay" String="%rowtype\b" insensitive="true"/>
+        <RegExpr attribute="Data Type" context="#stay" String="%type\b" insensitive="true"/>
+        <!-- numbers -->
+        <Float attribute="Float" context="#stay"/>
+        <Int attribute="Decimal" context="#stay"/>
+        <!-- strings -->
+        <DetectChar attribute="String" context="String" char="'"/>
+        <DetectChar attribute="String" context="String2" char="&quot;"/>
+        <DetectChar attribute="Name" context="Name" char="`"/>
+        <!-- comments -->
+        <DetectChar attribute="Comment" context="SingleLineComment" char="#"/>
+        <Detect2Chars attribute="Comment" context="SingleLineComment" char="-" char1="-"/>
+        <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*" beginRegion="Comment"/>
+        <RegExpr attribute="Comment" context="SingleLineComment" String="rem\b" insensitive="true" column="0"/>
+      
+        <AnyChar attribute="Symbol" context="#stay" String=":&#38;"/>
+        <RegExpr attribute="Symbol" context="#stay" String="/$" column="0"/>
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="@@?[^@ \t\r\n]" column="0"/>
+        <!-- for something like : SELECT DB.TABLE.ROW ... -->
+        <DetectChar attribute="String Char" context="#stay" char="."/>
+      </context>
+      <!-- 'string' -->
+      <context name="String" attribute="String" lineEndContext="#stay">
+        <LineContinue attribute="String" context="#pop"/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="Symbol" context="#stay" char="&#38;"/>
+        <DetectChar attribute="String" context="#pop" char="'"/>
+      </context>
+      <!-- "string", extra context needed to enable "str'ing" and 'str"ing' -->
+      <context name="String2" attribute="String" lineEndContext="#stay">
+        <LineContinue attribute="String" context="#pop"/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="Symbol" context="#stay" char="&#38;"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+      <!-- `names` -->
+      <context name="Name" attribute="Name" lineEndContext="#stay">
+        <LineContinue attribute="Name" context="#pop"/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="Name" context="#pop" char="`"/>
+      </context>
+      <!-- comments -->
+      <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop"/>
+      <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">
+        <LineContinue attribute="Comment" context="#pop"/>
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+      </context>
+      <!-- preprocessor -->
+      <context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop"/>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Operator" defStyleNum="dsNormal"/>
+      <itemData name="Function" defStyleNum="dsFunction"/>
+      <itemData name="Data Type" defStyleNum="dsDataType"/>
+      <itemData name="Decimal"  defStyleNum="dsDecVal"/>
+      <itemData name="Float"  defStyleNum="dsFloat"/>
+      <itemData name="String" defStyleNum="dsString"/>
+      <itemData name="Name" color="#080" defStyleNum="dsString"/>
+      <itemData name="String Char" defStyleNum="dsChar"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="Symbol"  defStyleNum="dsChar"/>
+      <itemData name="Preprocessor" defStyleNum="dsOthers"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="--"/>
+      <comment name="multiLine" start="/*" end="*/"/>
+    </comments>
+    <keywords casesensitive="0" weakDeliminator="+-*/|=!&lt;&gt;~^:."/>
+    <folding indentationsensitive="true"/>
+  </general>
+</language>
+ 
diff --git a/xml/sql-postgresql.xml b/xml/sql-postgresql.xml
new file mode 100644
--- /dev/null
+++ b/xml/sql-postgresql.xml
@@ -0,0 +1,797 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!-- PostgreSQL SQL, syntax definition based on sql.xml by Yury Lebedev -->
+<language name="SQL (PostgreSQL)" version="1.08" kateversion="2.4" section="Database" extensions="*.sql;*.SQL" mimetype="text/x-sql" casesensitive="0" author="Shane Wright (me@shanewright.co.uk)" license="">
+  <highlighting>
+    <list name="keywords">
+      <item> ABORT </item>
+      <item> ACCESS </item>
+      <item> ACTION </item>
+      <item> ADD </item>
+      <item> ADMIN </item>
+      <item> AFTER </item>
+      <item> AGGREGATE </item>
+      <item> ALIAS </item>
+      <item> ALL </item>
+      <item> ALLOCATE </item>
+      <item> ALTER </item>
+      <item> ANALYSE </item>
+      <item> ANALYZE </item>
+      <item> ANY </item>
+      <item> ARE </item>
+      <item> AS </item>
+      <item> ASC </item>
+      <item> ASENSITIVE </item>
+      <item> ASSERTION </item>
+      <item> ASSIGNMENT </item>
+      <item> ASYMMETRIC </item>
+      <item> AT </item>
+      <item> ATOMIC </item>
+      <item> AUTHORIZATION </item>
+      <item> BACKWARD </item>
+      <item> BEFORE </item>
+      <item> BEGIN </item>
+      <item> BETWEEN </item>
+      <item> BINARY </item>
+      <item> BOTH </item>
+      <item> BREADTH </item>
+      <item> BY </item>
+      <item> C </item>
+      <item> CACHE </item>
+      <item> CALL </item>
+      <item> CALLED </item>
+      <item> CARDINALITY </item>
+      <item> CASCADE </item>
+      <item> CASCADED </item>
+      <item> CASE </item>
+      <item> CAST </item>
+      <item> CATALOG </item>
+      <item> CATALOG_NAME </item>
+      <item> CHAIN </item>
+      <item> CHAR_LENGTH </item>
+      <item> CHARACTER_LENGTH </item>
+      <item> CHARACTER_SET_CATALOG </item>
+      <item> CHARACTER_SET_NAME </item>
+      <item> CHARACTER_SET_SCHEMA </item>
+      <item> CHARACTERISTICS </item>
+      <item> CHECK </item>
+      <item> CHECKED </item>
+      <item> CHECKPOINT </item>
+      <item> CLASS </item>
+      <item> CLASS_ORIGIN </item>
+      <item> CLOB </item>
+      <item> CLOSE </item>
+      <item> CLUSTER </item>
+      <item> COALESCE </item>
+      <item> COBOL </item>
+      <item> COLLATE </item>
+      <item> COLLATION </item>
+      <item> COLLATION_CATALOG </item>
+      <item> COLLATION_NAME </item>
+      <item> COLLATION_SCHEMA </item>
+      <item> COLUMN </item>
+      <item> COLUMN_NAME </item>
+      <item> COMMAND_FUNCTION </item>
+      <item> COMMAND_FUNCTION_CODE </item>
+      <item> COMMENT </item>
+      <item> COMMIT </item>
+      <item> COMMITTED </item>
+      <item> COMPLETION </item>
+      <item> CONDITION_NUMBER </item>
+      <item> CONNECT </item>
+      <item> CONNECTION </item>
+      <item> CONNECTION_NAME </item>
+      <item> CONSTRAINT </item>
+      <item> CONSTRAINT_CATALOG </item>
+      <item> CONSTRAINT_NAME </item>
+      <item> CONSTRAINT_SCHEMA </item>
+      <item> CONSTRAINTS </item>
+      <item> CONSTRUCTOR </item>
+      <item> CONTAINS </item>
+      <item> CONTINUE </item>
+      <item> CONVERT </item>
+      <item> COPY </item>
+      <item> CORRESPONDING </item>
+      <item> COUNT </item>
+      <item> CREATE </item>
+      <item> CREATEDB </item>
+      <item> CREATEUSER </item>
+      <item> CROSS </item>
+      <item> CUBE </item>
+      <item> CURRENT </item>
+      <item> CURRENT_DATE </item>
+      <item> CURRENT_PATH </item>
+      <item> CURRENT_ROLE </item>
+      <item> CURRENT_TIME </item>
+      <item> CURRENT_TIMESTAMP </item>
+      <item> CURRENT_USER </item>
+      <item> CURSOR </item>
+      <item> CURSOR_NAME </item>
+      <item> CYCLE </item>
+      <item> DATA </item>
+      <item> DATABASE </item>
+      <item> DATE </item>
+      <item> DATETIME_INTERVAL_CODE </item>
+      <item> DATETIME_INTERVAL_PRECISION </item>
+      <item> DAY </item>
+      <item> DEALLOCATE </item>
+      <item> DEC </item>
+      <item> DECIMAL </item>
+      <item> DECLARE </item>
+      <item> DEFAULT </item>
+      <item> DEFERRABLE </item>
+      <item> DEFERRED </item>
+      <item> DEFINED </item>
+      <item> DEFINER </item>
+      <item> DELETE </item>
+      <item> DELIMITERS </item>
+      <item> DEPTH </item>
+      <item> DEREF </item>
+      <item> DESC </item>
+      <item> DESCRIBE </item>
+      <item> DESCRIPTOR </item>
+      <item> DESTROY </item>
+      <item> DESTRUCTOR </item>
+      <item> DETERMINISTIC </item>
+      <item> DIAGNOSTICS </item>
+      <item> DICTIONARY </item>
+      <item> DISCONNECT </item>
+      <item> DISPATCH </item>
+      <item> DISTINCT </item>
+      <item> DO </item>
+      <item> DOMAIN </item>
+      <item> DOUBLE </item>
+      <item> DROP </item>
+      <item> DYNAMIC </item>
+      <item> DYNAMIC_FUNCTION </item>
+      <item> DYNAMIC_FUNCTION_CODE </item>
+      <item> EACH </item>
+      <item> ELSE </item>
+      <item> ENCODING </item>
+      <item> ENCRYPTED </item>
+      <item> END </item>
+      <item> END-EXEC </item>
+      <item> EQUALS </item>
+      <item> ESCAPE </item>
+      <item> EVERY </item>
+      <item> EXCEPT </item>
+      <item> EXCEPTION </item>
+      <item> EXCLUSIVE </item>
+      <item> EXEC </item>
+      <item> EXECUTE </item>
+      <item> EXISTING </item>
+      <item> EXISTS </item>
+      <item> EXPLAIN </item>
+      <item> EXTERNAL </item>
+      <item> FETCH </item>
+      <item> FINAL </item>
+      <item> FIRST </item>
+      <item> FOR </item>
+      <item> FORCE </item>
+      <item> FOREIGN </item>
+      <item> FORTRAN </item>
+      <item> FORWARD </item>
+      <item> FOUND </item>
+      <item> FREE </item>
+      <item> FREEZE </item>
+      <item> FROM </item>
+      <item> FULL </item>
+      <item> FUNCTION </item>
+      <item> G </item>
+      <item> GENERAL </item>
+      <item> GENERATED </item>
+      <item> GET </item>
+      <item> GLOBAL </item>
+      <item> GO </item>
+      <item> GOTO </item>
+      <item> GRANT </item>
+      <item> GRANTED </item>
+      <item> GROUP </item>
+      <item> GROUPING </item>
+      <item> HANDLER </item>
+      <item> HAVING </item>
+      <item> HIERARCHY </item>
+      <item> HOLD </item>
+      <item> HOST </item>
+      <item> HOUR </item>
+      <item> IDENTITY </item>
+      <item> IGNORE </item>
+      <item> ILIKE </item>
+      <item> IMMEDIATE </item>
+      <item> IMMUTABLE </item>
+      <item> IMPLEMENTATION </item>
+      <item> IN </item>
+      <item> INCREMENT </item>
+      <item> INDEX </item>
+      <item> INDICATOR </item>
+      <item> INFIX </item>
+      <item> INHERITS </item>
+      <item> INITIALIZE </item>
+      <item> INITIALLY </item>
+      <item> INNER </item>
+      <item> INOUT </item>
+      <item> INPUT </item>
+      <item> INSENSITIVE </item>
+      <item> INSERT </item>
+      <item> INSTANCE </item>
+      <item> INSTANTIABLE </item>
+      <item> INSTEAD </item>
+      <item> INTERSECT </item>
+      <item> INTERVAL </item>
+      <item> INTO </item>
+      <item> INVOKER </item>
+      <item> IS </item>
+      <item> ISNULL </item>
+      <item> ISOLATION </item>
+      <item> ITERATE </item>
+      <item> JOIN </item>
+      <item> K </item>
+      <item> KEY </item>
+      <item> KEY_MEMBER </item>
+      <item> KEY_TYPE </item>
+      <item> LANCOMPILER </item>
+      <item> LANGUAGE </item>
+      <item> LARGE </item>
+      <item> LAST </item>
+      <item> LATERAL </item>
+      <item> LEADING </item>
+      <item> LEFT </item>
+      <item> LENGTH </item>
+      <item> LESS </item>
+      <item> LEVEL </item>
+      <item> LIKE </item>
+      <item> LIMIT </item>
+      <item> LISTEN </item>
+      <item> LOAD </item>
+      <item> LOCAL </item>
+      <item> LOCALTIME </item>
+      <item> LOCALTIMESTAMP </item>
+      <item> LOCATION </item>
+      <item> LOCATOR </item>
+      <item> LOCK </item>
+      <item> LOWER </item>
+      <item> M </item>
+      <item> MAP </item>
+      <item> MATCH </item>
+      <item> MAX </item>
+      <item> MAXVALUE </item>
+      <item> MESSAGE_LENGTH </item>
+      <item> MESSAGE_OCTET_LENGTH </item>
+      <item> MESSAGE_TEXT </item>
+      <item> METHOD </item>
+      <item> MIN </item>
+      <item> MINUTE </item>
+      <item> MINVALUE </item>
+      <item> MOD </item>
+      <item> MODE </item>
+      <item> MODIFIES </item>
+      <item> MODIFY </item>
+      <item> MODULE </item>
+      <item> MONTH </item>
+      <item> MORE </item>
+      <item> MOVE </item>
+      <item> MUMPS </item>
+      <item> NAME </item>
+      <item> NAMES </item>
+      <item> NATIONAL </item>
+      <item> NATURAL </item>
+      <item> NEW </item>
+      <item> NEXT </item>
+      <item> NO </item>
+      <item> NOCREATEDB </item>
+      <item> NOCREATEUSER </item>
+      <item> NONE </item>
+      <item> NOT </item>
+      <item> NOTHING </item>
+      <item> NOTIFY </item>
+      <item> NOTNULL </item>
+      <item> NULL </item>
+      <item> NULLABLE </item>
+      <item> NULLIF </item>
+      <item> NUMBER </item>
+      <item> NUMERIC </item>
+      <item> OBJECT </item>
+      <item> OCTET_LENGTH </item>
+      <item> OF </item>
+      <item> OFF </item>
+      <item> OFFSET </item>
+      <item> OIDS </item>
+      <item> OLD </item>
+      <item> ON </item>
+      <item> ONLY </item>
+      <item> OPEN </item>
+      <item> OPERATION </item>
+      <item> OPERATOR </item>
+      <item> OPTION </item>
+      <item> OPTIONS </item>
+      <item> ORDER </item>
+      <item> ORDINALITY </item>
+      <item> OUT </item>
+      <item> OUTER </item>
+      <item> OUTPUT </item>
+      <item> OVERLAPS </item>
+      <item> OVERLAY </item>
+      <item> OVERRIDING </item>
+      <item> OWNER </item>
+      <item> PAD </item>
+      <item> PARAMETER </item>
+      <item> PARAMETER_MODE </item>
+      <item> PARAMETER_NAME </item>
+      <item> PARAMETER_ORDINAL_POSITION </item>
+      <item> PARAMETER_SPECIFIC_CATALOG </item>
+      <item> PARAMETER_SPECIFIC_NAME </item>
+      <item> PARAMETER_SPECIFIC_SCHEMA </item>
+      <item> PARAMETERS </item>
+      <item> PARTIAL </item>
+      <item> PASCAL </item>
+      <item> PASSWORD </item>
+      <item> PATH </item>
+      <item> PENDANT </item>
+      <item> PLI </item>
+      <item> POSITION </item>
+      <item> POSTFIX </item>
+      <item> PRECISION </item>
+      <item> PREFIX </item>
+      <item> PREORDER </item>
+      <item> PREPARE </item>
+      <item> PRESERVE </item>
+      <item> PRIMARY </item>
+      <item> PRIOR </item>
+      <item> PRIVILEGES </item>
+      <item> PROCEDURAL </item>
+      <item> PROCEDURE </item>
+      <item> PUBLIC </item>
+      <item> READ </item>
+      <item> READS </item>
+      <item> REAL </item>
+      <item> RECURSIVE </item>
+      <item> REF </item>
+      <item> REFERENCES </item>
+      <item> REFERENCING </item>
+      <item> REINDEX </item>
+      <item> RELATIVE </item>
+      <item> RENAME </item>
+      <item> REPEATABLE </item>
+      <item> REPLACE </item>
+      <item> RESET </item>
+      <item> RESTRICT </item>
+      <item> RESULT </item>
+      <item> RETURN </item>
+      <item> RETURNED_LENGTH </item>
+      <item> RETURNED_OCTET_LENGTH </item>
+      <item> RETURNED_SQLSTATE </item>
+      <item> RETURNS </item>
+      <item> REVOKE </item>
+      <item> RIGHT </item>
+      <item> ROLE </item>
+      <item> ROLLBACK </item>
+      <item> ROLLUP </item>
+      <item> ROUTINE </item>
+      <item> ROUTINE_CATALOG </item>
+      <item> ROUTINE_NAME </item>
+      <item> ROUTINE_SCHEMA </item>
+      <item> ROW </item>
+      <item> ROW_COUNT </item>
+      <item> ROWS </item>
+      <item> RULE </item>
+      <item> SAVEPOINT </item>
+      <item> SCALE </item>
+      <item> SCHEMA </item>
+      <item> SCHEMA_NAME </item>
+      <item> SCOPE </item>
+      <item> SCROLL </item>
+      <item> SEARCH </item>
+      <item> SECOND </item>
+      <item> SECTION </item>
+      <item> SECURITY </item>
+      <item> SELECT </item>
+      <item> SELF </item>
+      <item> SENSITIVE </item>
+      <item> SEQUENCE </item>
+      <item> SERIALIZABLE </item>
+      <item> SERVER_NAME </item>
+      <item> SESSION </item>
+      <item> SESSION_USER </item>
+      <item> SET </item>
+      <item> SETOF </item>
+      <item> SETS </item>
+      <item> SHARE </item>
+      <item> SHOW </item>
+      <item> SIMILAR </item>
+      <item> SIMPLE </item>
+      <item> SIZE </item>
+      <item> SOME </item>
+      <item> SOURCE </item>
+      <item> SPACE </item>
+      <item> SPECIFIC </item>
+      <item> SPECIFIC_NAME </item>
+      <item> SPECIFICTYPE </item>
+      <item> SQL </item>
+      <item> SQLCODE </item>
+      <item> SQLERROR </item>
+      <item> SQLEXCEPTION </item>
+      <item> SQLSTATE </item>
+      <item> SQLWARNING </item>
+      <item> STABLE </item>
+      <item> START </item>
+      <item> STATE </item>
+      <item> STATEMENT </item>
+      <item> STATIC </item>
+      <item> STATISTICS </item>
+      <item> STDIN </item>
+      <item> STDOUT </item>
+      <item> STRUCTURE </item>
+      <item> STYLE </item>
+      <item> SUBCLASS_ORIGIN </item>
+      <item> SUBLIST </item>
+      <item> SUBSTRING </item>
+      <item> SUM </item>
+      <item> SYMMETRIC </item>
+      <item> SYSID </item>
+      <item> SYSTEM </item>
+      <item> SYSTEM_USER </item>
+      <item> TABLE </item>
+      <item> TABLE_NAME </item>
+      <item> TEMP </item>
+      <item> TEMPLATE </item>
+      <item> TEMPORARY </item>
+      <item> TERMINATE </item>
+      <item> THAN </item>
+      <item> THEN </item>
+      <item> TIMEZONE_HOUR </item>
+      <item> TIMEZONE_MINUTE </item>
+      <item> TO </item>
+      <item> TOAST </item>
+      <item> TRAILING </item>
+      <item> TRANSACTION </item>
+      <item> TRANSACTION_ACTIVE </item>
+      <item> TRANSACTIONS_COMMITTED </item>
+      <item> TRANSACTIONS_ROLLED_BACK </item>
+      <item> TRANSFORM </item>
+      <item> TRANSFORMS </item>
+      <item> TRANSLATE </item>
+      <item> TRANSLATION </item>
+      <item> TREAT </item>
+      <item> TRIGGER </item>
+      <item> TRIGGER_CATALOG </item>
+      <item> TRIGGER_NAME </item>
+      <item> TRIGGER_SCHEMA </item>
+      <item> TRIM </item>
+      <item> TRUNCATE </item>
+      <item> TRUSTED </item>
+      <item> TYPE </item>
+      <item> UNCOMMITTED </item>
+      <item> UNDER </item>
+      <item> UNENCRYPTED </item>
+      <item> UNION </item>
+      <item> UNIQUE </item>
+      <item> UNKNOWN </item>
+      <item> UNLISTEN </item>
+      <item> UNNAMED </item>
+      <item> UNNEST </item>
+      <item> UNTIL </item>
+      <item> UPDATE </item>
+      <item> UPPER </item>
+      <item> USAGE </item>
+      <item> USER </item>
+      <item> USER_DEFINED_TYPE_CATALOG </item>
+      <item> USER_DEFINED_TYPE_NAME </item>
+      <item> USER_DEFINED_TYPE_SCHEMA </item>
+      <item> USING </item>
+      <item> VACUUM </item>
+      <item> VALID </item>
+      <item> VALUE </item>
+      <item> VALUES </item>
+      <item> VARIABLE </item>
+      <item> VARYING </item>
+      <item> VERBOSE </item>
+      <item> VERSION </item>
+      <item> VIEW </item>
+      <item> VOLATILE </item>
+      <item> WHEN </item>
+      <item> WHENEVER </item>
+      <item> WHERE </item>
+      <item> WITH </item>
+      <item> WITHOUT </item>
+      <item> WORK </item>
+      <item> WRITE </item>
+      <item> YEAR </item>
+      <item> ZONE </item>
+      <item> FALSE </item>
+      <item> TRUE </item>
+    </list>
+  <list name="operators">
+      <item> + </item>
+      <item> - </item>
+      <item> * </item>
+      <item> / </item>
+      <item> || </item>
+      <item> |/ </item>
+      <item> ||/ </item>
+      <item> ! </item>
+      <item> !! </item>
+      <item> @ </item>
+      <item> &amp; </item>
+      <item> | </item>
+      <item> # </item>
+      <item> &lt;&lt; </item>
+      <item> &gt;&gt; </item>
+      <item> % </item>
+      <item> ^ </item>
+      <item> = </item>
+      <item> != </item>
+      <item> &lt;&gt; </item>
+      <item> &lt; </item>
+      <item> &lt;= </item>
+      <item> &gt; </item>
+      <item> &gt;= </item>
+      <item> ~ </item>
+      <item> ~* </item>
+      <item> !~ </item>
+      <item> !~* </item>
+      <item> ^= </item>
+      <item> := </item>
+      <item> =&gt; </item>
+      <item> ** </item>
+      <item> .. </item>
+      <item> AND </item>
+      <item> OR </item>
+      <item> NOT </item>
+      <!-- geometric -->
+      <item> ## </item>
+      <item> &amp;&amp; </item>
+      <item> &amp;&lt; </item>
+      <item> &amp;&gt; </item>
+      <item> &lt;-&gt; </item>
+      <item> &lt;^ </item>
+      <item> &gt;^ </item>
+      <item> ?# </item>
+      <item> ?- </item>
+      <item> ?-| </item>
+      <item> @-@ </item>
+      <item> ?| </item>
+      <item> ?|| </item>
+      <item> @@ </item>
+      <item> ~= </item>
+      <!-- network address type -->
+      <item> &lt;&lt;= </item>
+      <item> &gt;&gt;= </item>
+   </list>
+     <list name="functions">
+      <!-- math -->
+      <item> ABS </item>
+      <item> CBRT </item>
+      <item> CEIL </item>
+      <item> DEGREES </item>
+      <item> EXP </item>
+      <item> FLOOR </item>
+      <item> LN </item>
+      <item> LOG </item>
+      <item> MOD </item>
+      <item> PI </item>
+      <item> POW </item>
+      <item> RADIANS </item>
+      <item> RANDOM </item>
+      <item> ROUND </item>
+      <item> SIGN </item>
+      <item> SQRT </item>
+      <item> TRUNC </item>
+      <!-- trig -->
+      <item> ACOS </item>
+      <item> ASIN </item>
+      <item> ATAN </item>
+      <item> ATAN2 </item>
+      <item> COS </item>
+      <item> COT </item>
+      <item> SIN </item>
+      <item> TAN </item>
+      <!-- string -->
+      <item> BIT_LENGTH </item>
+      <item> CHAR_LENGTH </item>
+      <item> CHARACTER_LENGTH </item>
+      <item> LOWER </item>
+      <item> OCTET_LENGTH </item>
+      <item> POSITION </item>
+      <item> SUBSTRING </item>
+      <item> TRIM </item>
+      <item> UPPER </item>
+      <!-- other string -->
+      <item> ASCII </item>
+      <item> BTRIM </item>
+      <item> CHR </item>
+      <item> CONVERT </item>
+      <item> INITCAP </item>
+      <item> LENGTH </item>
+      <item> LPAD </item>
+      <item> LTRIM </item>
+      <item> PG_CLIENT_ENCODING </item>
+      <item> REPEAT </item>
+      <item> RPAD </item>
+      <item> RTRIM </item>
+      <item> STRPOS </item>
+      <item> SUBSTR </item>
+      <item> TO_ASCII </item>
+      <item> TRANSLATE </item>
+      <item> ENCODE </item>
+      <item> DECODE </item>
+      <!-- data type formatting -->
+      <item> TO_CHAR </item>
+      <item> TO_DATE </item>
+      <item> TO_TIMESTAMP </item>
+      <item> TO_NUMBER </item>
+      <!-- date/time -->
+      <item> AGE </item>
+      <item> DATE_PART </item>
+      <item> DATE_TRUNC </item>
+      <item> EXTRACT </item>
+      <item> ISFINITE </item>
+      <item> NOW </item>
+      <item> TIMEOFDAY </item>
+      <item> TIMESTAMP </item>
+      <item> EXTRACT </item>
+      <!-- geometric -->
+      <item> AREA </item>
+      <item> BOX </item>
+      <item> CENTER </item>
+      <item> DIAMETER </item>
+      <item> HEIGHT </item>
+      <item> ISCLOSED </item>
+      <item> ISOPEN </item>
+      <item> PCLOSE </item>
+      <item> NPOINT </item>
+      <item> POPEN </item>
+      <item> RADIUS </item>
+      <item> WIDTH </item>
+      <!-- geometric type conversion -->
+      <item> BOX </item>
+      <item> CIRCLE </item>
+      <item> LSEG </item>
+      <item> PATH </item>
+      <item> POINT </item>
+      <item> POLYGON </item>
+      <!-- network address type, TEXT is omitted as its more commonly a data type -->
+      <item> BROADCAST </item>
+      <item> HOST </item>
+      <item> MASKLEN </item>
+      <item> SET_MASKLEN </item>
+      <item> NETMASK </item>
+      <item> NETWORK </item>
+      <item> ABBREV </item>
+      <!-- sequence manipulation -->
+      <item> NEXTVAL </item>
+      <item> CURRVAL </item>
+      <item> SETVAL </item>
+      <!-- conditional expressions -->
+      <item> COALESCE </item>
+      <item> NULLIF </item>
+      <!-- misc -->
+      <item> HAS_TABLE_PRIVILEGE </item>
+      <item> PG_GET_VIEWDEF </item>
+      <item> PG_GET_RULEDEF </item>
+      <item> PG_GET_INDEXDEF </item>
+      <item> PG_GET_USERBYID </item>
+      <item> OBJ_DESCRIPTION </item>
+      <item> COL_DESCRIPTION </item>
+      <!-- aggregate -->
+      <item> AVG </item>
+      <item> COUNT </item>
+      <item> MAX </item>
+      <item> MIN </item>
+      <item> STDDEV </item>
+      <item> SUM </item>
+      <item> VARIANCE </item>
+    </list>
+    <list name="types">
+      <item> LZTEXT </item>
+      <item> BIGINT </item>
+      <item> INT2 </item>
+      <item> INT8 </item>
+      <item> BIGSERIAL </item>
+      <item> SERIAL8 </item>
+      <item> BIT </item>
+      <item> BIT VARYING </item>
+      <item> VARBIT </item>
+      <item> BOOLEAN </item>
+      <item> BOOL </item>
+      <item> BOX </item>
+      <item> BYTEA </item>
+      <item> CHARACTER </item>
+      <item> CHAR </item>
+      <item> CHARACTER VARYING </item>
+      <item> VARCHAR </item>
+      <item> CIDR </item>
+      <item> CIRCLE </item>
+      <item> DATE </item>
+      <item> DOUBLE PRECISION </item>
+      <item> FLOAT8 </item>
+      <item> INET </item>
+      <item> INTEGER </item>
+      <item> INT </item>
+      <item> INT4 </item>
+      <item> INTERVAL </item>
+      <item> LINE </item>
+      <item> LSEG </item>
+      <item> MACADDR </item>
+      <item> MONEY </item>
+      <item> NUMERIC </item>
+      <item> DECIMAL </item>
+      <item> OID </item>
+      <item> PATH </item>
+      <item> POINT </item>
+      <item> POLYGON </item>
+      <item> REAL </item>
+      <item> SMALLINT </item>
+      <item> SERIAL </item>
+      <item> TEXT </item>
+      <item> TIME </item>
+      <item> TIMETZ </item>
+      <item> TIMESTAMP </item>
+      <item> TIMESTAMPTZ </item>
+      <item> TIMESTAMP WITH TIMEZONE </item>
+    </list>
+    <contexts>
+      <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+        <keyword attribute="Operator" context="#stay" String="operators"/>
+        <keyword attribute="Function" context="#stay" String="functions"/>
+        <keyword attribute="Data Type" context="#stay" String="types"/>
+        <RegExpr attribute="Data Type" context="#stay" String="%bulk_exceptions\b" insensitive="true"/>
+        <RegExpr attribute="Data Type" context="#stay" String="%bulk_rowcount\b" insensitive="true"/>
+        <RegExpr attribute="Data Type" context="#stay" String="%found\b" insensitive="true"/>
+        <RegExpr attribute="Data Type" context="#stay" String="%isopen\b" insensitive="true"/>
+        <RegExpr attribute="Data Type" context="#stay" String="%notfound\b" insensitive="true"/>
+        <RegExpr attribute="Data Type" context="#stay" String="%rowcount\b" insensitive="true"/>
+        <RegExpr attribute="Data Type" context="#stay" String="%rowtype\b" insensitive="true"/>
+        <RegExpr attribute="Data Type" context="#stay" String="%type\b" insensitive="true"/>
+        <Float attribute="Float" context="#stay"/>
+        <Int attribute="Decimal" context="#stay"/>
+        <DetectChar attribute="String" context="String" char="'"/>
+        <DetectChar attribute="Comment" context="SingleLineComment" char="#"/>
+        <Detect2Chars attribute="Comment" context="SingleLineComment" char="-" char1="-"/>
+        <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*" beginRegion="Comment"/>
+        <RegExpr attribute="Comment" context="SingleLineComment" String="rem\b" insensitive="true" column="0"/>
+        <DetectChar attribute="Comment" context="Identifier" char="&quot;"/>
+        <AnyChar attribute="Symbol" context="#stay" String=":&#38;"/>
+        <RegExpr attribute="Symbol" context="#stay" String="/$" column="0"/>
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="@@?[^@ \t\r\n]" column="0"/>
+      </context>
+      <context name="String" attribute="String" lineEndContext="#stay">
+        <LineContinue attribute="String" context="#pop"/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="Symbol" context="#stay" char="&#38;"/>
+        <DetectChar attribute="String" context="#pop" char="'"/>
+      </context>
+      <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop"/>
+      <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">
+        <LineContinue attribute="Comment" context="#pop"/>
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+      </context>
+      <context name="Identifier" attribute="Identifier" lineEndContext="#pop">
+        <DetectChar attribute="Identifier" context="#pop" char="&quot;"/>
+      </context>
+      <context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop"/>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Operator" defStyleNum="dsNormal"/>
+      <itemData name="Function" defStyleNum="dsFunction"/>
+      <itemData name="Data Type" defStyleNum="dsDataType"/>
+      <itemData name="Decimal"  defStyleNum="dsDecVal"/>
+      <itemData name="Float"  defStyleNum="dsFloat"/>
+      <itemData name="String" defStyleNum="dsString"/>
+      <itemData name="String Char" defStyleNum="dsChar"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="Identifier" defStyleNum="dsOthers"/>
+      <itemData name="Symbol"  defStyleNum="dsChar"/>
+      <itemData name="Preprocessor" defStyleNum="dsOthers"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="--"/>
+      <comment name="multiLine" start="/*" end="*/"/>
+    </comments>
+    <keywords casesensitive="0" weakDeliminator="+-*/|!@&amp;#&lt;&gt;%^=~:.?"/>
+  </general>
+</language>
diff --git a/xml/sql.xml b/xml/sql.xml
new file mode 100644
--- /dev/null
+++ b/xml/sql.xml
@@ -0,0 +1,951 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!-- Oracle10g SQL and PL/SQL syntax - ANSI SQL 2003 superset -->
+<!-- This file is maintained by Anders Lund <anders@alweb.dk> since 2005-11-06 -->
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
+<language name="SQL" version="1.13" kateversion="2.4" section="Database" extensions="*.sql;*.SQL" mimetype="text/x-sql" casesensitive="0" author="Yury Lebedev (yurylebedev@mail.ru)" license="LGPL">
+  <highlighting>
+    <list name="keywords">
+      <item> ACCESS </item>
+      <item> ACCOUNT </item>
+      <item> ADD </item>
+      <item> ADMIN </item>
+      <item> ADMINISTER </item>
+      <item> ADVISE </item>
+      <item> AFTER </item>
+      <item> AGENT </item>
+      <item> ALL </item>
+      <item> ALL_ROWS </item>
+      <item> ALLOCATE </item>
+      <item> ALTER </item>
+      <item> ANALYZE </item>
+      <item> ANCILLARY </item>
+      <item> AND </item>
+      <item> ANY </item>
+      <item> ARCHIVE </item>
+      <item> ARCHIVELOG </item>
+      <item> AS </item>
+      <item> ASC </item>
+      <item> ASSERTION </item>
+      <item> ASSOCIATE </item>
+      <item> AT </item>
+      <item> ATTRIBUTE </item>
+      <item> ATTRIBUTES </item>
+      <item> AUDIT </item>
+      <item> AUTHENTICATED </item>
+      <item> AUTHID </item>
+      <item> AUTHORIZATION </item>
+      <item> AUTOALLOCATE </item>
+      <item> AUTOEXTEND </item>
+      <item> AUTOMATIC </item>
+      <item> BACKUP </item>
+      <item> BECOME </item>
+      <item> BEFORE </item>
+      <item> BEGIN </item>
+      <item> BEHALF </item>
+      <item> BETWEEN </item>
+      <item> BINDING </item>
+      <item> BITMAP </item>
+      <item> BLOCK </item>
+      <item> BLOCK_RANGE </item>
+      <item> BODY </item>
+      <item> BOUND </item>
+      <item> BOTH </item>
+      <item> BREAK </item>
+      <item> BROADCAST </item>
+      <item> BTITLE </item>
+      <item> BUFFER_POOL </item>
+      <item> BUILD </item>
+      <item> BULK </item>
+      <item> BY </item>
+      <item> CACHE </item>
+      <item> CACHE_INSTANCES </item>
+      <item> CALL </item>
+      <item> CANCEL </item>
+      <item> CASCADE </item>
+      <item> CASE </item>
+      <item> CATEGORY </item>
+      <item> CHAINED </item>
+      <item> CHANGE </item>
+      <item> CHECK </item>
+      <item> CHECKPOINT </item>
+      <item> CHILD </item>
+      <item> CHOOSE </item>
+      <item> CHUNK </item>
+      <item> CLASS </item>
+      <item> CLEAR </item>
+      <item> CLONE </item>
+      <item> CLOSE </item>
+      <item> CLOSE_CACHED_OPEN_CURSORS </item>
+      <item> CLUSTER </item>
+      <item> COALESCE </item>
+      <item> COLUMN </item>
+      <item> COLUMNS </item>
+      <item> COLUMN_VALUE </item>
+      <item> COMMENT </item>
+      <item> COMMIT </item>
+      <item> COMMITTED </item>
+      <item> COMPATIBILITY </item>
+      <item> COMPILE </item>
+      <item> COMPLETE </item>
+      <item> COMPOSITE_LIMIT </item>
+      <item> COMPRESS </item>
+      <item> COMPUTE </item>
+      <item> CONNECT </item>
+      <item> CONNECT_TIME </item>
+      <item> CONSIDER </item>
+      <item> CONSISTENT </item>
+      <item> CONSTANT </item>
+      <item> CONSTRAINT </item>
+      <item> CONSTRAINTS </item>
+      <item> CONTAINER </item>
+      <item> CONTENTS </item>
+      <item> CONTEXT </item>
+      <item> CONTINUE </item>
+      <item> CONTROLFILE </item>
+      <item> COPY </item>
+      <item> COST </item>
+      <item> CPU_PER_CALL </item>
+      <item> CPU_PER_SESSION </item>
+      <item> CREATE </item>
+      <item> CREATE_STORED_OUTLINES </item>
+      <item> CROSS </item>
+      <item> CUBE </item>
+      <item> CURRENT </item>
+      <item> CURSOR </item>
+      <item> CYCLE </item>
+      <item> DANGLING </item>
+      <item> DATA </item>
+      <item> DATABASE </item>
+      <item> DATAFILE </item>
+      <item> DATAFILES </item>
+      <item> DBA </item>
+      <item> DDL </item>
+      <item> DEALLOCATE </item>
+      <item> DEBUG </item>
+      <item> DECLARE </item>
+      <item> DEFAULT </item>
+      <item> DEFERRABLE </item>
+      <item> DEFERRED </item>
+      <item> DEFINER </item>
+      <item> DEGREE </item>
+      <item> DELETE </item>
+      <item> DEMAND </item>
+      <item> DESC </item>
+      <item> DETERMINES </item>
+      <item> DICTIONARY </item>
+      <item> DIMENSION </item>
+      <item> DIRECTORY </item>
+      <item> DISABLE </item>
+      <item> DISASSOCIATE </item>
+      <item> DISCONNECT </item>
+      <item> DISKGROUP </item>
+      <item> DISMOUNT </item>
+      <item> DISTINCT </item>
+      <item> DISTRIBUTED </item>
+      <item> DOMAIN </item>
+      <item> DROP </item>
+      <item> DYNAMIC </item>
+      <item> EACH </item>
+      <item> ELSE </item>
+      <item> ELSIF </item>
+      <item> EMPTY </item>
+      <item> ENABLE </item>
+      <item> END </item>
+      <item> ENFORCE </item>
+      <item> ENTRY </item>
+      <item> ESCAPE </item>
+      <item> ESTIMATE </item>
+      <item> EVENTS </item>
+      <item> EXCEPT </item>
+      <item> EXCEPTION </item>
+      <item> EXCEPTIONS </item>
+      <item> EXCHANGE </item>
+      <item> EXCLUDING </item>
+      <item> EXCLUSIVE </item>
+      <item> EXEC </item>
+      <item> EXECUTE </item>
+      <item> EXISTS </item>
+      <item> EXPIRE </item>
+      <item> EXPLAIN </item>
+      <item> EXPLOSION </item>
+      <item> EXTENDS </item>
+      <item> EXTENT </item>
+      <item> EXTENTS </item>
+      <item> EXTERNALLY </item>
+      <item> FAILED_LOGIN_ATTEMPTS </item>
+      <item> FALSE </item>
+      <item> FAST </item>
+      <item> FILE </item>
+      <item> FILTER </item>
+      <item> FIRST_ROWS </item>
+      <item> FLAGGER </item>
+      <item> FLASHBACK </item>
+      <item> FLUSH </item>
+      <item> FOLLOWING </item>
+      <item> FOR </item>
+      <item> FORCE </item>
+      <item> FOREIGN </item>
+      <item> FREELIST </item>
+      <item> FREELISTS </item>
+      <item> FRESH </item>
+      <item> FROM </item>
+      <item> FULL </item>
+      <item> FUNCTION </item>
+      <item> FUNCTIONS </item>
+      <item> GENERATED </item>
+      <item> GLOBAL </item>
+      <item> GLOBALLY </item>
+      <item> GLOBAL_NAME </item>
+      <item> GRANT </item>
+      <item> GROUP </item>
+      <item> GROUPS </item>
+      <item> HASH </item>
+      <item> HASHKEYS </item>
+      <item> HAVING </item>
+      <item> HEADER </item>
+      <item> HEAP </item>
+      <item> HIERARCHY </item>
+      <item> HOUR </item>
+      <item> ID </item>
+      <item> IDENTIFIED </item>
+      <item> IDENTIFIER </item>
+      <item> IDGENERATORS </item>
+      <item> IDLE_TIME </item>
+      <item> IF </item>
+      <item> IMMEDIATE </item>
+      <item> IN </item>
+      <item> INCLUDING </item>
+      <item> INCREMENT </item>
+      <item> INCREMENTAL </item>
+      <item> INDEX </item>
+      <item> INDEXED </item>
+      <item> INDEXES </item>
+      <item> INDEXTYPE </item>
+      <item> INDEXTYPES </item>
+      <item> INDICATOR </item>
+      <item> INITIAL </item>
+      <item> INITIALIZED </item>
+      <item> INITIALLY </item>
+      <item> INITRANS </item>
+      <item> INNER </item>
+      <item> INSERT </item>
+      <item> INSTANCE </item>
+      <item> INSTANCES </item>
+      <item> INSTEAD </item>
+      <item> INTERMEDIATE </item>
+      <item> INTERSECT </item>
+      <item> INTO </item>
+      <item> INVALIDATE </item>
+      <item> IS </item>
+      <item> ISOLATION </item>
+      <item> ISOLATION_LEVEL </item>
+      <item> JAVA </item>
+      <item> JOIN </item>
+      <item> KEEP </item>
+      <item> KEY </item>
+      <item> KILL </item>
+      <item> LABEL </item>
+      <item> LAYER </item>
+      <item> LEADING </item>
+      <item> LEFT </item>
+      <item> LESS </item>
+      <item> LEVEL </item>
+      <item> LIBRARY </item>
+      <item> LIKE </item>
+      <item> LIMIT </item>
+      <item> LINK </item>
+      <item> LIST </item>
+      <item> LOCAL </item>
+      <item> LOCATOR </item>
+      <item> LOCK </item>
+      <item> LOCKED </item>
+      <item> LOGFILE </item>
+      <item> LOGGING </item>
+      <item> LOGICAL_READS_PER_CALL </item>
+      <item> LOGICAL_READS_PER_SESSION </item>
+      <item> LOGOFF </item>
+      <item> LOGON </item>
+      <item> LOOP </item>
+      <item> MANAGE </item>
+      <item> MANAGED </item>
+      <item> MANAGEMENT </item>
+      <item> MASTER </item>
+      <item> MATERIALIZED </item>
+      <item> MAXARCHLOGS </item>
+      <item> MAXDATAFILES </item>
+      <item> MAXEXTENTS </item>
+      <item> MAXINSTANCES </item>
+      <item> MAXLOGFILES </item>
+      <item> MAXLOGHISTORY </item>
+      <item> MAXLOGMEMBERS </item>
+      <item> MAXSIZE </item>
+      <item> MAXTRANS </item>
+      <item> MAXVALUE </item>
+      <item> METHOD </item>
+      <item> MEMBER </item>
+      <item> MERGE </item>
+      <item> MINIMIZE </item>
+      <item> MINIMUM </item>
+      <item> MINEXTENTS </item>
+      <item> MINUS </item>
+      <item> MINUTE </item>
+      <item> MINVALUE </item>
+      <item> MODE </item>
+      <item> MODIFY </item>
+      <item> MONITORING </item>
+      <item> MOUNT </item>
+      <item> MOVE </item>
+      <item> MOVEMENT </item>
+      <item> MTS_DISPATCHERS </item>
+      <item> MULTISET </item>
+      <item> NAMED </item>
+      <item> NATURAL </item>
+      <item> NEEDED </item>
+      <item> NESTED </item>
+      <item> NESTED_TABLE_ID </item>
+      <item> NETWORK </item>
+      <item> NEVER </item>
+      <item> NEW </item>
+      <item> NEXT </item>
+      <item> NLS_CALENDAR </item>
+      <item> NLS_CHARACTERSET </item>
+      <item> NLS_COMP </item>
+      <item> NLS_CURRENCY </item>
+      <item> NLS_DATE_FORMAT </item>
+      <item> NLS_DATE_LANGUAGE </item>
+      <item> NLS_ISO_CURRENCY </item>
+      <item> NLS_LANG </item>
+      <item> NLS_LANGUAGE </item>
+      <item> NLS_NUMERIC_CHARACTERS </item>
+      <item> NLS_SORT </item>
+      <item> NLS_SPECIAL_CHARS </item>
+      <item> NLS_TERRITORY </item>
+      <item> NO </item>
+      <item> NOARCHIVELOG </item>
+      <item> NOAUDIT </item>
+      <item> NOCACHE </item>
+      <item> NOCOMPRESS </item>
+      <item> NOCYCLE </item>
+      <item> NOFORCE </item>
+      <item> NOLOGGING </item>
+      <item> NOMAXVALUE </item>
+      <item> NOMINIMIZE </item>
+      <item> NOMINVALUE </item>
+      <item> NOMONITORING </item>
+      <item> NONE </item>
+      <item> NOORDER </item>
+      <item> NOOVERRIDE </item>
+      <item> NOPARALLEL </item>
+      <item> NORELY </item>
+      <item> NORESETLOGS </item>
+      <item> NOREVERSE </item>
+      <item> NORMAL </item>
+      <item> NOSEGMENT </item>
+      <item> NOSORT </item>
+      <item> NOT </item>
+      <item> NOTHING </item>
+      <item> NOVALIDATE </item>
+      <item> NOWAIT </item>
+      <item> NULL </item>
+      <item> NULLS </item>
+      <item> OBJNO </item>
+      <item> OBJNO_REUSE </item>
+      <item> OF </item>
+      <item> OFF </item>
+      <item> OFFLINE </item>
+      <item> OID </item>
+      <item> OIDINDEX </item>
+      <item> OLD </item>
+      <item> ON </item>
+      <item> ONLINE </item>
+      <item> ONLY </item>
+      <item> OPCODE </item>
+      <item> OPEN </item>
+      <item> OPERATOR </item>
+      <item> OPTIMAL </item>
+      <item> OPTIMIZER_GOAL </item>
+      <item> OPTION </item>
+      <item> OR </item>
+      <item> ORDER </item>
+      <item> ORGANIZATION </item>
+      <item> OUT </item>
+      <item> OUTER </item>
+      <item> OUTLINE </item>
+      <item> OVER </item>
+      <item> OVERFLOW </item>
+      <item> OVERLAPS </item>
+      <item> OWN </item>
+      <item> PACKAGE </item>
+      <item> PACKAGES </item>
+      <item> PARALLEL </item>
+      <item> PARAMETERS </item>
+      <item> PARENT </item>
+      <item> PARTITION </item>
+      <item> PARTITIONS </item>
+      <item> PARTITION_HASH </item>
+      <item> PARTITION_RANGE </item>
+      <item> PASSWORD </item>
+      <item> PASSWORD_GRACE_TIME </item>
+      <item> PASSWORD_LIFE_TIME </item>
+      <item> PASSWORD_LOCK_TIME </item>
+      <item> PASSWORD_REUSE_MAX </item>
+      <item> PASSWORD_REUSE_TIME </item>
+      <item> PASSWORD_VERIFY_FUNCTION </item>
+      <item> PCTFREE </item>
+      <item> PCTINCREASE </item>
+      <item> PCTTHRESHOLD </item>
+      <item> PCTUSED </item>
+      <item> PCTVERSION </item>
+      <item> PERCENT </item>
+      <item> PERMANENT </item>
+      <item> PLAN </item>
+      <item> PLSQL_DEBUG </item>
+      <item> POST_TRANSACTION </item>
+      <item> PREBUILT </item>
+      <item> PRECEDING </item>
+      <item> PREPARE </item>
+      <item> PRESENT </item>
+      <item> PRESERVE </item>
+      <item> PREVIOUS </item>
+      <item> PRIMARY </item>
+      <item> PRIOR </item>
+      <item> PRIVATE </item>
+      <item> PRIVATE_SGA </item>
+      <item> PRIVILEGE </item>
+      <item> PRIVILEGES </item>
+      <item> PROCEDURE </item>
+      <item> PROFILE </item>
+      <item> PUBLIC </item>
+      <item> PURGE </item>
+      <item> QUERY </item>
+      <item> QUEUE </item>
+      <item> QUOTA </item>
+      <item> RANDOM </item>
+      <item> RANGE </item>
+      <item> RBA </item>
+      <item> READ </item>
+      <item> READS </item>
+      <item> REBUILD </item>
+      <item> RECORDS_PER_BLOCK </item>
+      <item> RECOVER </item>
+      <item> RECOVERABLE </item>
+      <item> RECOVERY </item>
+      <item> RECYCLE </item>
+      <item> REDUCED </item>
+      <item> REFERENCES </item>
+      <item> REFERENCING </item>
+      <item> REFRESH </item>
+      <item> RELY </item>
+      <item> RENAME </item>
+      <item> REPLACE </item>
+      <item> RESET </item>
+      <item> RESETLOGS </item>
+      <item> RESIZE </item>
+      <item> RESOLVE </item>
+      <item> RESOLVER </item>
+      <item> RESOURCE </item>
+      <item> RESTRICT </item>
+      <item> RESTRICTED </item>
+      <item> RESUME </item>
+      <item> RETURN </item>
+      <item> RETURNING </item>
+      <item> REUSE </item>
+      <item> REVERSE </item>
+      <item> REVOKE </item>
+      <item> REWRITE </item>
+      <item> RIGHT </item>
+      <item> ROLE </item>
+      <item> ROLES </item>
+      <item> ROLLBACK </item>
+      <item> ROLLUP </item>
+      <item> ROW </item>
+      <item> ROWNUM </item>
+      <item> ROWS </item>
+      <item> RULE </item>
+      <item> SAMPLE </item>
+      <item> SAVEPOINT </item>
+      <item> SCAN </item>
+      <item> SCAN_INSTANCES </item>
+      <item> SCHEMA </item>
+      <item> SCN </item>
+      <item> SCOPE </item>
+      <item> SD_ALL </item>
+      <item> SD_INHIBIT </item>
+      <item> SD_SHOW </item>
+      <item> SEGMENT </item>
+      <item> SEG_BLOCK </item>
+      <item> SEG_FILE </item>
+      <item> SELECT </item>
+      <item> SELECTIVITY </item>
+      <item> SEQUENCE </item>
+      <item> SERIALIZABLE </item>
+      <item> SERVERERROR </item>
+      <item> SESSION </item>
+      <item> SESSION_CACHED_CURSORS </item>
+      <item> SESSIONS_PER_USER </item>
+      <item> SET </item>
+      <item> SHARE </item>
+      <item> SHARED </item>
+      <item> SHARED_POOL </item>
+      <item> SHRINK </item>
+      <item> SHUTDOWN </item>
+      <item> SINGLETASK </item>
+      <item> SIZE </item>
+      <item> SKIP </item>
+      <item> SKIP_UNUSABLE_INDEXES </item>
+      <item> SNAPSHOT </item>
+      <item> SOME </item>
+      <item> SORT </item>
+      <item> SOURCE </item>
+      <item> SPECIFICATION </item>
+      <item> SPLIT </item>
+      <item> SQL_TRACE </item>
+      <item> STANDBY </item>
+      <item> START </item>
+      <item> STARTUP </item>
+      <item> STATEMENT_ID </item>
+      <item> STATISTICS </item>
+      <item> STATIC </item>
+      <item> STOP </item>
+      <item> STORAGE </item>
+      <item> STORE </item>
+      <item> STRUCTURE </item>
+      <item> SUBMULTISET </item>
+      <item> SUBPARTITION </item>
+      <item> SUBPARTITIONS </item>
+      <item> SUCCESSFUL </item>
+      <item> SUMMARY </item>
+      <item> SUPPLEMENTAL </item>
+      <item> SUSPEND </item>
+      <item> SWITCH </item>
+      <item> SYS_OP_BITVEC </item>
+      <item> SYS_OP_ENFORCE_NOT_NULL$ </item>
+      <item> SYS_OP_NOEXPAND </item>
+      <item> SYS_OP_NTCIMG$ </item>
+      <item> SYNONYM </item>
+      <item> SYSDBA </item>
+      <item> SYSOPER </item>
+      <item> SYSTEM </item>
+      <item> TABLE </item>
+      <item> TABLES </item>
+      <item> TABLESPACE </item>
+      <item> TABLESPACE_NO </item>
+      <item> TABNO </item>
+      <item> TEMPFILE </item>
+      <item> TEMPORARY </item>
+      <item> THAN </item>
+      <item> THE </item>
+      <item> THEN </item>
+      <item> THREAD </item>
+      <item> THROUGH </item>
+      <item> TIMEOUT </item>
+      <item> TIMEZONE_HOUR </item>
+      <item> TIMEZONE_MINUTE </item>
+      <item> TIME_ZONE </item>
+      <item> TO </item>
+      <item> TOPLEVEL </item>
+      <item> TRACE </item>
+      <item> TRACING </item>
+      <item> TRAILING </item>
+      <item> TRANSACTION </item>
+      <item> TRANSITIONAL </item>
+      <item> TRIGGER </item>
+      <item> TRIGGERS </item>
+      <item> TRUE </item>
+      <item> TRUNCATE </item>
+      <item> TYPE </item>
+      <item> TYPES </item>
+      <item> UNARCHIVED </item>
+      <item> UNBOUND </item>
+      <item> UNBOUNDED </item>
+      <item> UNDO </item>
+      <item> UNIFORM </item>
+      <item> UNION </item>
+      <item> UNIQUE </item>
+      <item> UNLIMITED </item>
+      <item> UNLOCK </item>
+      <item> UNRECOVERABLE </item>
+      <item> UNTIL </item>
+      <item> UNUSABLE </item>
+      <item> UNUSED </item>
+      <item> UPD_INDEXES </item>
+      <item> UPDATABLE </item>
+      <item> UPDATE </item>
+      <item> UPPPER </item>
+      <item> USAGE </item>
+      <item> USE </item>
+      <item> USE_STORED_OUTLINES </item>
+      <item> USER_DEFINED </item>
+      <item> USING </item>
+      <item> VALIDATE </item>
+      <item> VALIDATION </item>
+      <item> VALUES </item>
+      <item> VIEW </item>
+      <item> WHEN </item>
+      <item> WHENEVER </item>
+      <item> WHERE </item>
+      <item> WITH </item>
+      <item> WITHOUT </item>
+      <item> WORK </item>
+      <item> WRITE </item>
+    </list>
+    <list name="operators">
+      <item> + </item>
+      <item> - </item>
+      <item> * </item>
+      <item> / </item>
+      <item> || </item>
+      <item> = </item>
+      <item> != </item>
+      <item> &lt;&gt; </item>
+      <item> &lt; </item>
+      <item> &lt;= </item>
+      <item> &gt; </item>
+      <item> &gt;= </item>
+      <item> ~= </item>
+      <item> ^= </item>
+      <item> := </item>
+      <item> =&gt; </item>
+      <item> ** </item>
+      <item> .. </item>
+    </list>
+    <list name="functions">
+      <item> ABS </item>
+      <item> ACOS </item>
+      <item> ADD_MONTHS </item>
+      <item> ASCII </item>
+      <item> ASCIISTR </item>
+      <item> ASIN </item>
+      <item> ATAN </item>
+      <item> ATAN2 </item>
+      <item> AVG </item>
+      <item> BFILENAME </item>
+      <item> BIN_TO_NUM </item>
+      <item> BITAND </item>
+      <item> CARDINALITY </item>
+      <item> CAST </item>
+      <item> CEIL </item>
+      <item> CHARTOROWID </item>
+      <item> CHR </item>
+      <item> COALESCE </item>
+      <item> COLLECT </item>
+      <item> COMPOSE </item>
+      <item> CONCAT </item>
+      <item> CONVERT </item>
+      <item> CORR </item>
+      <item> CORR_K </item>
+      <item> CORR_S </item>
+      <item> COS </item>
+      <item> COSH </item>
+      <item> COUNT </item>
+      <item> COVAR_POP </item>
+      <item> COVAR_SAMP </item>
+      <item> CUME_DIST </item>
+      <item> CURRENT_DATE </item>
+      <item> CURRENT_TIMESTAMP </item>
+      <item> CV </item>
+      <item> DBTIMEZONE </item>
+      <item> DECODE </item>
+      <item> DECOMPOSE </item>
+      <item> DENSE_RANK </item>
+      <item> DEPTH </item>
+      <item> DEREF </item>
+      <item> DUMP </item>
+      <item> EMPTY_BLOB </item>
+      <item> EMPTY_CLOB </item>
+      <item> EXISTSNODE </item>
+      <item> EXP </item>
+      <item> EXTRACT </item>
+      <item> EXTRACTVALUE </item>
+      <item> FIRST </item>
+      <item> FIRST_VALUE </item>
+      <item> FLOOR </item>
+      <item> FROM_TZ </item>
+      <item> GREATEST </item>
+      <item> GROUP_ID </item>
+      <item> GROUPING </item>
+      <item> GROUPING_ID </item>
+      <item> HEXTORAW </item>
+      <item> INITCAP </item>
+      <item> INSTR </item>
+      <item> INSTRB </item>
+      <item> LAG </item>
+      <item> LAST </item>
+      <item> LAST_DAY </item>
+      <item> LAST_VALUE </item>
+      <item> LEAD </item>
+      <item> LEAST </item>
+      <item> LENGTH </item>
+      <item> LENGTHB </item>
+      <item> LN </item>
+      <item> LNNVL </item>
+      <item> LOCALTIMESTAMP </item>
+      <item> LOG </item>
+      <item> LOWER </item>
+      <item> LPAD </item>
+      <item> LTRIM </item>
+      <item> MAKE_REF </item>
+      <item> MAX </item>
+      <item> MEDIAN </item>
+      <item> MIN </item>
+      <item> MOD </item>
+      <item> MONTHS_BETWEEN </item>
+      <item> NANVL </item>
+      <item> NCHR </item>
+      <item> NEW_TIME </item>
+      <item> NEXT_DAY </item>
+      <item> NLS_CHARSET_DECL_LEN </item>
+      <item> NLS_CHARSET_ID </item>
+      <item> NLS_CHARSET_NAME </item>
+      <item> NLS_INITCAP </item>
+      <item> NLS_LOWER </item>
+      <item> NLS_UPPER </item>
+      <item> NLSSORT </item>
+      <item> NTILE </item>
+      <item> NULLIF </item>
+      <item> NUMTODSINTERVAL </item>
+      <item> NUMTOYMINTERVAL </item>
+      <item> NVL </item>
+      <item> NVL2 </item>
+      <item> ORA_HASH </item>
+      <item> ORA_ROWSCN </item>
+      <item> PERCENT_RANK </item>
+      <item> PERCENTILE_CONT </item>
+      <item> PERCENTILE_DISC </item>
+      <item> POWER </item>
+      <item> POWERMULTISET </item>
+      <item> POWERMULTISET_BY_CARDINALITY </item>
+      <item> PRESENTNNV </item>
+      <item> PRESENTV </item>
+      <item> RANK </item>
+      <item> RATIO_TO_REPORT </item>
+      <item> RAWTOHEX </item>
+      <item> RAWTONHEX </item>
+      <item> REF </item>
+      <item> REFTOHEX </item>
+      <item> REGEXP_INSTR </item>
+      <item> REGEXP_LIKE </item>
+      <item> REGEXP_REPLACE </item>
+      <item> REGEXP_SUBSTR </item>
+      <item> REGR_SLOPE </item>
+      <item> REGR_INTERCEPT </item>
+      <item> REGR_COUNT </item>
+      <item> REGR_R2 </item>
+      <item> REGR_AVGX </item>
+      <item> REGR_AVGY </item>
+      <item> REGR_SXX </item>
+      <item> REGR_SYY </item>
+      <item> REGR_SXY </item>
+      <item> REMAINDER </item>
+      <item> ROUND </item>
+      <item> ROW_NUMBER </item>
+      <item> ROWIDTOCHAR </item>
+      <item> ROWIDTONCHAR </item>
+      <item> RPAD </item>
+      <item> RTRIM </item>
+      <item> SCN_TO_TIMESTAMP </item>
+      <item> SESSIONTIMEZONE </item>
+      <item> SIGN </item>
+      <item> SIN </item>
+      <item> SINH </item>
+      <item> SOUNDEX </item>
+      <item> SQRT </item>
+      <item> STATS_BINOMIAL_TEST </item>
+      <item> STATS_CROSSTAB </item>
+      <item> STATS_F_TEST </item>
+      <item> STATS_KS_TEST </item>
+      <item> STATS_MODE </item>
+      <item> STATS_MW_TEST </item>
+      <item> STATS_ONE_WAY_ANOVA </item>
+      <item> STATS_T_TEST_ONE </item>
+      <item> STATS_T_TEST_PAIRED </item>
+      <item> STATS_T_TEST_INDEP </item>
+      <item> STATS_T_TEST_INDEPU </item>
+      <item> STATS_WSR_TEST </item>
+      <item> STDDEV </item>
+      <item> STDDEV_POP </item>
+      <item> STDDEV_SAMP </item>
+      <item> SUBSTR </item>
+      <item> SUBSTRB </item>
+      <item> SUM </item>
+      <item> SYS_CONNECT_BY_PATH </item>
+      <item> SYS_CONTEXT </item>
+      <item> SYS_DBURIGEN </item>
+      <item> SYS_EXTRACT_UTC </item>
+      <item> SYS_GUID </item>
+      <item> SYS_TYPEID </item>
+      <item> SYS_XMLAGG </item>
+      <item> SYS_XMLGEN </item>
+      <item> SYSDATE </item>
+      <item> SYSTIMESTAMP </item>
+      <item> TAN </item>
+      <item> TANH </item>
+      <item> TIMESTAMP_TO_SCN </item>
+      <item> TO_BINARY_DOUBLE </item>
+      <item> TO_BINARY_FLOAT </item>
+      <item> TO_CHAR </item>
+      <item> TO_CLOB </item>
+      <item> TO_DATE </item>
+      <item> TO_DSINTERVAL </item>
+      <item> TO_LOB </item>
+      <item> TO_MULTI_BYTE </item>
+      <item> TO_NCHAR </item>
+      <item> TO_NCLOB </item>
+      <item> TO_NUMBER </item>
+      <item> TO_SINGLE_BYTE </item>
+      <item> TO_TIMESTAMP </item>
+      <item> TO_TIMESTAMP_TZ </item>
+      <item> TO_YMINTERVAL </item>
+      <item> TRANSLATE </item>
+      <item> TREAT </item>
+      <item> TRIM </item>
+      <item> TRUNC </item>
+      <item> TZ_OFFSET </item>
+      <item> UID </item>
+      <item> UNISTR </item>
+      <item> UPDATEXML </item>
+      <item> UPPER </item>
+      <item> USER </item>
+      <item> USERENV </item>
+      <item> VALUE </item>
+      <item> VAR_POP </item>
+      <item> VAR_SAMP </item>
+      <item> VARIANCE </item>
+      <item> VSIZE </item>
+      <item> WIDTH_BUCKET </item>
+      <item> XMLAGG </item>
+      <item> XMLCOLATTVAL </item>
+      <item> XMLCONCAT </item>
+      <item> XMLELEMENT </item>
+      <item> XMLFOREST </item>
+      <item> XMLSEQUENCE </item>
+      <item> XMLTRANSFORM </item>
+    </list>
+    <list name="types">
+      <item> ANYDATA </item>
+      <item> ANYDATASET </item>
+      <item> ANYTYPE </item>
+      <item> ARRAY </item>
+      <item> BFILE </item>
+      <item> BINARY_DOUBLE </item>
+      <item> BINARY_FLOAT </item>
+      <item> BINARY_INTEGER </item>
+      <item> BLOB </item>
+      <item> BOOLEAN </item>
+      <item> CFILE </item>
+      <item> CHAR </item>
+      <item> CHARACTER </item>
+      <item> CLOB </item>
+      <item> DATE </item>
+      <item> DAY </item>
+      <item> DBURITYPE </item>
+      <item> DEC </item>
+      <item> DECIMAL </item>
+      <item> DOUBLE </item>
+      <item> FLOAT </item>
+      <item> FLOB </item>
+      <item> HTTPURITYPE </item>
+      <item> INT </item>
+      <item> INTEGER </item>
+      <item> INTERVAL </item>
+      <item> LOB </item>
+      <item> LONG </item>
+      <item> MLSLABEL </item>
+      <item> MONTH </item>
+      <item> NATIONAL </item>
+      <item> NCHAR </item>
+      <item> NCLOB </item>
+      <item> NUMBER </item>
+      <item> NUMERIC </item>
+      <item> NVARCHAR </item>
+      <item> OBJECT </item>
+      <item> PLS_INTEGER </item>
+      <item> PRECISION </item>
+      <item> RAW </item>
+      <item> RECORD </item>
+      <item> REAL </item>
+      <item> ROWID </item>
+      <item> SECOND </item>
+      <item> SINGLE </item>
+      <item> SMALLINT </item>
+      <item> TIME </item>
+      <item> TIMESTAMP </item>
+      <item> URIFACTORYTYPE </item>
+      <item> URITYPE </item>
+      <item> UROWID </item>
+      <item> VARCHAR </item>
+      <item> VARCHAR2 </item>
+      <item> VARYING </item>
+      <item> VARRAY </item>
+      <item> XMLTYPE </item>
+      <item> YEAR </item>
+      <item> ZONE </item>
+    </list>
+    <contexts>
+      <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+        <keyword attribute="Keyword" String="keywords" context="#stay"/>
+        <keyword attribute="Operator" String="operators" context="#stay"/>
+        <keyword attribute="Function" String="functions" context="#stay"/>
+        <keyword attribute="Data Type" String="types" context="#stay"/>
+        <RegExpr attribute="Data Type" String="%bulk_exceptions\b" insensitive="true" context="#stay"/>
+        <RegExpr attribute="Data Type" String="%bulk_rowcount\b" insensitive="true" context="#stay"/>
+        <RegExpr attribute="Data Type" String="%found\b" insensitive="true" context="#stay"/>
+        <RegExpr attribute="Data Type" String="%isopen\b" insensitive="true" context="#stay"/>
+        <RegExpr attribute="Data Type" String="%notfound\b" insensitive="true" context="#stay"/>
+        <RegExpr attribute="Data Type" String="%rowcount\b" insensitive="true" context="#stay"/>
+        <RegExpr attribute="Data Type" String="%rowtype\b" insensitive="true" context="#stay"/>
+        <RegExpr attribute="Data Type" String="%type\b" insensitive="true" context="#stay"/>
+        <Float attribute="Float" context="#stay"/>
+        <Int attribute="Decimal" context="#stay"/>
+        <DetectChar attribute="String" context="String literal" char="'"/>
+        <Detect2Chars attribute="Comment" context="Singleline PL/SQL-style comment" char="-" char1="-"/>
+        <Detect2Chars attribute="Comment" context="Multiline C-style comment" char="/" char1="*"/>
+        <RegExpr attribute="Comment" context="SQL*Plus remark directive" String="^rem\b" insensitive="true" column="0"/>
+        <DetectChar attribute="Identifier" context="User-defined identifier" char="&quot;"/>
+        <RegExpr attribute="External Variable" context="#stay" String="(:|&amp;&amp;?)\w+"/>
+        <RegExpr attribute="Symbol" context="#stay" String="^/$" column="0"/>
+        <RegExpr attribute="Preprocessor" context="SQL*Plus directive to include file" String="^@@?[^@ \t\r\n]" column="0"/>
+      </context>
+      <context name="String literal" attribute="String" lineEndContext="#stay">
+        <Detect2Chars attribute="String" context="#pop" char="\" char1="'" />
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <RegExpr attribute="External Variable" context="#stay" String="&amp;&amp;?\w+"/>
+        <Detect2Chars attribute="String Char" context="#stay" char="'" char1="'" />
+        <DetectChar attribute="String" context="#pop" char="'"/>
+      </context>
+      <context name="Singleline PL/SQL-style comment" attribute="Comment" lineEndContext="#pop"/>
+      <context name="Multiline C-style comment" attribute="Comment" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/"/>
+      </context>
+      <context name="SQL*Plus remark directive" attribute="Comment" lineEndContext="#pop"/>
+      <context name="User-defined identifier" attribute="Identifier" lineEndContext="#pop">
+        <DetectChar attribute="Identifier" context="#pop" char="&quot;"/>
+      </context>
+      <context name="SQL*Plus directive to include file" attribute="Preprocessor" lineEndContext="#pop"/>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text"       defStyleNum="dsNormal"/>
+      <itemData name="Keyword"           defStyleNum="dsKeyword"/>
+      <itemData name="Operator"          defStyleNum="dsNormal"/>
+      <itemData name="Function"          defStyleNum="dsFunction"/>
+      <itemData name="Data Type"         defStyleNum="dsDataType"/>
+      <itemData name="Decimal"           defStyleNum="dsDecVal"/>
+      <itemData name="Float"             defStyleNum="dsFloat"/>
+      <itemData name="String"            defStyleNum="dsString"/>
+      <itemData name="String Char"       defStyleNum="dsChar"/>
+      <itemData name="Comment"           defStyleNum="dsComment"/>
+      <itemData name="Identifier"        defStyleNum="dsOthers"/>
+      <itemData name="External Variable" defStyleNum="dsChar"/>
+      <itemData name="Symbol"            defStyleNum="dsChar"/>
+      <itemData name="Preprocessor"      defStyleNum="dsOthers"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="--"/>
+      <comment name="multiLine" start="/*" end="*/"/>
+    </comments>
+    <keywords casesensitive="0" weakDeliminator="+-*/|=!&lt;&gt;~^:."/>
+  </general>
+</language>
diff --git a/xml/tcl.xml b/xml/tcl.xml
new file mode 100644
--- /dev/null
+++ b/xml/tcl.xml
@@ -0,0 +1,536 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+
+<!-- Authors: Alexander Dederer & JM. Philippe -->
+<!-- Copyright: BSD copyright & Irsid - Arcelor Innovation R&D -->
+<!-- Ported to Kate 2.0/ KWrite 4.0 by Joseph Wenninger (Updated by Simon Robins)-->
+<!--
+    Updated by Pawel Salawa (boogie at scripts dot one dot pl)
+
+    Revision history:
+        1.10:
+            - Fixed problem with single ':' character after variable name (it's no longer variable,
+              because only double-colon is namespace delimiter and can be part of variable name).
+            - Fixed problem with matching quote character next to regular character, for example:
+              puts {"string"}
+              In that case left bracked was marked as string, but it's no longer like that.
+            - Fixed problem with variable names like: ${text\}test}
+              It whole is valid variable name, because of escape character.
+            - Fixed problem with marking ';' character as a comment when '#' character was after the ';'.
+            - Fixed problem with marking options. '-' character after word-delimiter character caused
+              marking that word-delimiter character as option too, even it wasn't white-space.
+            - Few other minor optimalizations.
+	1.09:
+	    - Added fast comments support (Ctrl+d or whatever your shortcut is)
+	    - Fixed single-character variables detection
+	    - Fixed detection of varaibles with names containing serval namespace delimiters (::)
+-->
+
+<language name="Tcl/Tk" version="1.10" kateversion="2.4" section="Scripts" extensions="*.tcl;*.tk" mimetype="text/x-tcl">
+  <highlighting>
+    <list name="keywords">
+      <item> after </item>
+      <item> append  </item>
+      <item> AppleScript  </item>
+      <item> argv  </item>
+      <item> argc  </item>
+      <item> array  </item>
+      <item> auto_execk  </item>
+      <item> auto_load  </item>
+      <item> auto_mkindex  </item>
+      <item> auto_path  </item>
+      <item> auto_reset  </item>
+      <item> beep  </item>
+      <item> bell  </item>
+      <item> binary  </item>
+      <item> bind  </item>
+      <item> bindtags  </item>
+      <item> bgerror  </item>
+      <item> break  </item>
+      <item> button  </item>
+      <item> canvas  </item>
+      <item> case  </item>
+      <item> catch  </item>
+      <item> cd  </item>
+      <item> checkbutton  </item>
+      <item> clipboard  </item>
+      <item> clock  </item>
+      <item> close  </item>
+      <item> concat  </item>
+      <item> console  </item>
+      <item> continue  </item>
+      <item> dde  </item>
+      <item> destroy  </item>
+      <item> else  </item>
+      <item> elseif  </item>
+      <item> encoding  </item>
+      <item> entry  </item>
+      <item> env  </item>
+      <item> eof  </item>
+      <item> error  </item>
+      <item> errorCode  </item>
+      <item> errorInfo  </item>
+      <item> eval  </item>
+      <item> event  </item>
+      <item> exec  </item>
+      <item> exit  </item>
+      <item> expr  </item>
+      <item> fblocked  </item>
+      <item> fconfigure  </item>
+      <item> fcopy  </item>
+      <item> file  </item>
+      <item> fileevent  </item>
+      <item> flush  </item>
+      <item> focus  </item>
+      <item> font  </item>
+      <item> for  </item>
+      <item> foreach  </item>
+      <item> format  </item>
+      <item> frame  </item>
+      <item> gets  </item>
+      <item> glob  </item>
+      <item> global  </item>
+      <item> grab  </item>
+      <item> grid  </item>
+      <item> history  </item>
+      <item> if  </item>
+      <item> image  </item>
+      <item> incr  </item>
+      <item> info  </item>
+      <item> interp  </item>
+      <item> join  </item>
+      <item> label  </item>
+      <item> lappend  </item>
+      <item> lindex  </item>
+      <item> linsert  </item>
+      <item> list  </item>
+      <item> listbox  </item>
+      <item> llength  </item>
+      <item> load  </item>
+      <item> lower  </item>
+      <item> lrange  </item>
+      <item> lreplace  </item>
+      <item> lsearch  </item>
+      <item> lsort  </item>
+      <item> menu  </item>
+      <item> menubutton  </item>
+      <item> message  </item>
+      <item> namespace  </item>
+      <item> open  </item>
+      <item> option  </item>
+      <item> OptProc  </item>
+      <item> pack  </item>
+      <item> package  </item>
+      <item> parray  </item>
+      <item> pid  </item>
+      <item> place  </item>
+      <item> pkg_mkindex  </item>
+      <item> proc  </item>
+      <item> puts  </item>
+      <item> pwd  </item>
+      <item> radiobutton  </item>
+      <item> raise  </item>
+      <item> read  </item>
+      <item> regexp  </item>
+      <item> registry  </item>
+      <item> regsub  </item>
+      <item> rename  </item>
+      <item> resource  </item>
+      <item> return  </item>
+      <item> scale  </item>
+      <item> scan  </item>
+      <item> scrollbar  </item>
+      <item> seek  </item>
+      <item> selection  </item>
+      <item> send  </item>
+      <item> set  </item>
+      <item> socket  </item>
+      <item> source  </item>
+      <item> split  </item>
+      <item> string  </item>
+      <item> subst  </item>
+      <item> switch  </item>
+      <item> tclLog  </item>
+      <item> tcl_endOfWord  </item>
+      <item> tcl_findLibrary  </item>
+      <item> tcl_library  </item>
+      <item> tcl_patchLevel  </item>
+      <item> tcl_platform  </item>
+      <item> tcl_precision  </item>
+      <item> tcl_rcFileName  </item>
+      <item> tcl_rcRsrcName  </item>
+      <item> tcl_startOfNextWord  </item>
+      <item> tcl_startOfPreviousWord  </item>
+      <item> tcl_traceCompile  </item>
+      <item> tcl_traceExec  </item>
+      <item> tcl_version  </item>
+      <item> tcl_wordBreakAfter  </item>
+      <item> tcl_wordBreakBefore  </item>
+      <item> tell  </item>
+      <item> text  </item>
+      <item> time  </item>
+      <item> tk  </item>
+      <item> tkTabToWindow  </item>
+      <item> tkwait  </item>
+      <item> tk_chooseColor  </item>
+      <item> tk_chooseDirectory  </item>
+      <item> tk_focusFollowMouse  </item>
+      <item> tk_focusNext  </item>
+      <item> tk_focusPrev  </item>
+      <item> tk_getOpenFile  </item>
+      <item> tk_getSaveFile  </item>
+      <item> tk_library  </item>
+      <item> tk_messageBox  </item>
+      <item> tk_optionMenu  </item>
+      <item> tk_patchLevel  </item>
+      <item> tk_popup  </item>
+      <item> tk_strictMotif  </item>
+      <item> tk_version  </item>
+      <item> toplevel  </item>
+      <item> trace  </item>
+      <item> unknown  </item>
+      <item> unset  </item>
+      <item> update  </item>
+      <item> uplevel  </item>
+      <item> upvar  </item>
+      <item> variable  </item>
+      <item> vwait  </item>
+      <item> while  </item>
+      <item> winfo  </item>
+      <item> wm  </item>
+    </list>
+
+    <list name="keywords-opt">
+      <item> add </item>
+      <item> args </item>
+      <item> atime </item>
+      <item> attributes </item>
+      <item> body </item>
+      <item> bytelength </item>
+      <item> cancel </item>
+      <item> channels </item>
+      <item> clicks </item>
+      <item> cmdcount </item>
+      <item> commands </item>
+      <item> compare </item>
+      <item> complete </item>
+      <item> convertfrom </item>
+      <item> convertto </item>
+      <item> copy </item>
+      <item> default </item>
+      <item> delete </item>
+      <item> dirname </item>
+      <item> equal </item>
+      <item> executable </item>
+      <item> exists </item>
+      <item> extension </item>
+      <item> first </item>
+      <item> forget </item>
+      <item> format </item>
+      <item> functions </item>
+      <item> globals </item>
+      <item> hostname </item>
+      <item> idle </item>
+      <item> ifneeded </item>
+      <item> index </item>
+      <item> info </item>
+      <item> is </item>
+      <item> isdirectory </item>
+      <item> isfile </item>
+      <item> join </item>
+      <item> last </item>
+      <item> length </item>
+      <item> level </item>
+      <item> library </item>
+      <item> link </item>
+      <item> loaded </item>
+      <item> locals </item>
+      <item> lstat </item>
+      <item> map </item>
+      <item> match </item>
+      <item> mkdir </item>
+      <item> mtime </item>
+      <item> nameofexecutable </item>
+      <item> names </item>
+      <item> nativename </item>
+      <item> normalize </item>
+      <item> number </item>
+      <item> owned </item>
+      <item> patchlevel </item>
+      <item> pathtype </item>
+      <item> present </item>
+      <item> procs </item>
+      <item> provide </item>
+      <item> range </item>
+      <item> readable </item>
+      <item> readlink </item>
+      <item> remove </item>
+      <item> rename </item>
+      <item> repeat </item>
+      <item> replace </item>
+      <item> require </item>
+      <item> rootname </item>
+      <item> scan </item>
+      <item> script </item>
+      <item> seconds </item>
+      <item> separator </item>
+      <item> sharedlibextension </item>
+      <item> size </item>
+      <item> split </item>
+      <item> stat </item>
+      <item> system </item>
+      <item> tail </item>
+      <item> tclversion </item>
+      <item> tolower </item>
+      <item> totitle </item>
+      <item> toupper </item>
+      <item> trim </item>
+      <item> trimleft </item>
+      <item> trimright </item>
+      <item> type </item>
+      <item> unknown </item>
+      <item> variable </item>
+      <item> vars </item>
+      <item> vcompare </item>
+      <item> vdelete </item>
+      <item> versions </item>
+      <item> vinfo </item>
+      <item> volumes </item>
+      <item> vsatisfies </item>
+      <item> wordend </item>
+      <item> wordstart </item>
+      <item> writable </item>
+
+      <item> activate </item>
+      <item> actual </item>
+      <item> addtag </item>
+      <item> append </item>
+      <item> appname </item>
+      <item> aspect </item>
+      <item> atom </item>
+      <item> atomname </item>
+      <item> bbox </item>
+      <item> bind </item>
+      <item> broadcast </item>
+      <item> canvasx </item>
+      <item> canvasy </item>
+      <item> caret </item>
+      <item> cells </item>
+      <item> cget </item>
+      <item> children </item>
+      <item> class </item>
+      <item> clear </item>
+      <item> client </item>
+      <item> clone </item>
+      <item> colormapfull </item>
+      <item> colormapwindows </item>
+      <item> command </item>
+      <item> configure </item>
+      <item> containing </item>
+      <item> coords </item>
+      <item> create </item>
+      <item> current </item>
+      <item> curselection </item>
+      <item> dchars </item>
+      <item> debug </item>
+      <item> deiconify </item>
+      <item> delta </item>
+      <item> depth </item>
+      <item> deselect </item>
+      <item> dlineinfo </item>
+      <item> dtag </item>
+      <item> dump </item>
+      <item> edit </item>
+      <item> entrycget </item>
+      <item> entryconfigure </item>
+      <item> families </item>
+      <item> find </item>
+      <item> flash </item>
+      <item> focus </item>
+      <item> focusmodel </item>
+      <item> fpixels </item>
+      <item> fraction </item>
+      <item> frame </item>
+      <item> generate </item>
+      <item> geometry </item>
+      <item> get </item>
+      <item> gettags </item>
+      <item> grid </item>
+      <item> group </item>
+      <item> handle </item>
+      <item> height </item>
+      <item> hide </item>
+      <item> iconbitmap </item>
+      <item> iconify </item>
+      <item> iconmask </item>
+      <item> iconname </item>
+      <item> iconposition </item>
+      <item> iconwindow </item>
+      <item> icursor </item>
+      <item> id </item>
+      <item> identify </item>
+      <item> image </item>
+      <item> insert </item>
+      <item> interps </item>
+      <item> inuse </item>
+      <item> invoke </item>
+      <item> ismapped </item>
+      <item> itemcget </item>
+      <item> itemconfigure </item>
+      <item> keys </item>
+      <item> lower </item>
+      <item> manager </item>
+      <item> mark </item>
+      <item> maxsize </item>
+      <item> measure </item>
+      <item> metrics </item>
+      <item> minsize </item>
+      <item> move </item>
+      <item> name </item>
+      <item> nearest </item>
+      <item> overrideredirect </item>
+      <item> own </item>
+      <item> panecget </item>
+      <item> paneconfigure </item>
+      <item> panes </item>
+      <item> parent </item>
+      <item> pathname </item>
+      <item> pixels </item>
+      <item> pointerx </item>
+      <item> pointerxy </item>
+      <item> pointery </item>
+      <item> positionfrom </item>
+      <item> post </item>
+      <item> postcascade </item>
+      <item> postscript </item>
+      <item> protocol </item>
+      <item> proxy </item>
+      <item> raise </item>
+      <item> release </item>
+      <item> reqheight </item>
+      <item> reqwidth </item>
+      <item> resizable </item>
+      <item> rgb </item>
+      <item> rootx </item>
+      <item> rooty </item>
+      <item> scale </item>
+      <item> scaling </item>
+      <item> screen </item>
+      <item> screencells </item>
+      <item> screendepth </item>
+      <item> screenheight </item>
+      <item> screenmmheight </item>
+      <item> screenmmwidth </item>
+      <item> screenvisual </item>
+      <item> screenwidth </item>
+      <item> search </item>
+      <item> see </item>
+      <item> select </item>
+      <item> selection </item>
+      <item> server </item>
+      <item> set </item>
+      <item> show </item>
+      <item> sizefrom </item>
+      <item> stackorder </item>
+      <item> state </item>
+      <item> status </item>
+      <item> tag </item>
+      <item> title </item>
+      <item> toplevel </item>
+      <item> transient </item>
+      <item> types </item>
+      <item> unpost </item>
+      <item> useinputmethods </item>
+      <item> validate </item>
+      <item> values </item>
+      <item> viewable </item>
+      <item> visual </item>
+      <item> visualid </item>
+      <item> visualsavailable </item>
+      <item> vrootheight </item>
+      <item> vrootwidth </item>
+      <item> vrootx </item>
+      <item> vrooty </item>
+      <item> width </item>
+      <item> window </item>
+      <item> windowingsystem </item>
+      <item> withdraw </item>
+      <item> x </item>
+      <item> xview </item>
+      <item> y </item>
+    </list>
+
+    <contexts>
+      <context name = "Base" attribute = "Normal Text" lineEndContext="#stay">
+      
+        <!-- Virtual blocks -->
+        <RegExpr attribute="Region Marker" context="#stay" String="#\s*BEGIN.*$" beginRegion="region" firstNonSpace="true"/>
+        <RegExpr attribute="Region Marker" context="#stay" String="#\s*END.*$" endRegion="region" firstNonSpace="true"/>
+        
+        <!-- Standard -->
+        <keyword String = "keywords" attribute = "Keyword" context="#stay"/>
+        <keyword String = "keywords-opt" attribute = "Parameter" context="#stay"/>
+        <Float attribute = "Float" context="#stay"/>
+        <Int attribute ="Decimal" context="#stay"/>
+        <RegExpr String="\\." attribute = "Char" context = "#stay"/>
+        
+        <!-- Options -->
+        <RegExpr String = "\s-\w+" attribute = "Parameter" context="#stay"/>
+        
+        <!-- Variables -->
+        <RegExpr String = "\$\{([^\}]|\\\})+\}" attribute = "Variable" context="#stay"/>
+        <RegExpr String = "\$(::|\w)+" attribute = "Variable" context="#stay"/>
+        
+        <!-- Strings -->
+        <RegExpr String = "&quot;{2}" attribute = "String" context="#stay"/>
+        <RegExpr String = "&quot;" attribute = "String" context="String"/>
+        
+        <!-- Comments -->
+        <DetectChar char = ";" attribute = "Normal Text" context="New command line" />
+        <DetectChar char = "#" attribute = "Comment" context="Comment" firstNonSpace="true"/>
+        
+        <!-- Braces, brackets, etc -->
+        <DetectChar char = "{" attribute = "Keyword" context="#stay" beginRegion="block"/>
+        <DetectChar char = "}" attribute = "Keyword" context="#stay" endRegion="block"/>
+        <DetectChar char = "[" attribute = "Keyword" context="#stay"/>
+        <DetectChar char = "]" attribute = "Keyword" context="#stay"/>
+        
+      </context>
+
+      <context name = "String" attribute = "String" lineEndContext="#stay">
+        <RegExpr String="\\." attribute = "Char" context = "#stay"/>
+        <DetectChar char="&quot;" attribute = "String" context = "#pop"/>
+        <DetectChar char  = "$" attribute = "Variable" context="#stay"/>
+      </context>
+
+      <context name = "Comment" attribute = "Comment" lineEndContext="#pop"/>
+
+      <context name = "New command line" attribute = "Normal Text" lineEndContext="#stay">
+        <RegExpr String = "\s*#" attribute="Comment" context="Comment" />
+        <RegExpr String = "." attribute="Normal Text" context="#pop" lookAhead="true" />
+      </context>
+    </contexts>
+
+    <itemDatas>
+      <itemData name = "Normal Text" defStyleNum = "dsNormal"/>
+      <itemData name = "Keyword" defStyleNum = "dsKeyword"/>
+      <itemData name = "Decimal" defStyleNum = "dsDecVal"/>
+      <itemData name = "Float" defStyleNum = "dsFloat"/>
+      <itemData name = "String" defStyleNum = "dsString"/>
+      <itemData name = "Comment" defStyleNum = "dsComment"/>
+      <itemData name = "Parameter" defStyleNum = "dsOthers"/>
+      <itemData name = "Variable" defStyleNum = "dsDataType"/>
+      <itemData name = "Char" defStyleNum="dsChar"/>
+      <itemData name = "Region Marker" defStyleNum="dsRegionMarker"/>
+    </itemDatas>
+
+  </highlighting>
+
+  <general>
+    <comments>
+	<comment name="singleLine" start="#" />
+    </comments>
+    <keywords casesensitive="1"/>
+  </general>
+
+</language>
diff --git a/xml/texinfo.xml b/xml/texinfo.xml
new file mode 100644
--- /dev/null
+++ b/xml/texinfo.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="Texinfo" extensions="*.texi" section="Markup" mimetype="application/x-texinfo" author="Daniel Franke (franke.daniel@gmail.com)" license="LGPL" version="0.2" kateversion="2.3">
+
+  <highlighting>
+    <!--
+      In TEXINFO, commands start with "@" optionally followed by a 
+      command argument embraced by "{}", as in "@item" or "@emph{foo bar}".
+
+      Some special commands embrace a region, e.g. "@menu" and "@end menu",
+      these regions may be fold (beginRegion="foldingRegion").
+
+      Nodes to NOT end with "@end node", but a "@node" ends at the beginning 
+      of the next "@node".
+      -->
+    <contexts>
+      <context name="Normal Text" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr attribute="Comment" context="singleLineComment" String="@c(omment)?\b" />
+        <RegExpr attribute="Comment" context="multiLineComment" String="@ignore\b" beginRegion="ignore" />
+        <RegExpr attribute="Command" context="nodeFolding" String="@node\b" beginRegion="node" />
+
+        <RegExpr attribute="Command" context="folding" beginRegion="foldingRegion"
+                 String="@(menu|smallexample|table|multitable)\b"/>
+
+        <RegExpr attribute="Command" context="#stay" String="@[\w]+(\{([\w]+[\s]*)+\})?" />
+      </context>
+
+      <context name="singleLineComment" attribute="Comment" lineEndContext="#pop">
+				<IncludeRules context="##Alerts" />
+			</context>
+
+      <context name="multiLineComment" attribute="Comment" lineEndContext="#stay">
+        <StringDetect attribute="Comment" context="#pop" String="@end ignore" endRegion="ignore" />
+				<IncludeRules context="##Alerts" />
+      </context>
+
+      <context name="nodeFolding" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr attribute="Command" context="#pop" String="@node\b" endRegion="node" lookAhead="true" />
+        <IncludeRules context="Normal Text" />
+      </context>
+
+      <context name="folding" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr attribute="Command" context="#pop" endRegion="foldingRegion"
+                 String="@end (menu|smallexample|table|multitable)\b" />
+        <IncludeRules context="Normal Text" />
+      </context>
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal" />
+      <itemData name="Comment" defStyleNum="dsComment" />
+      <itemData name="Command" defStyleNum="dsFunction" />
+    </itemDatas>
+  </highlighting>
+
+  <general>
+    <comments>
+      <comment name="singleLine" start="@comment " />
+      <comment name="multiLine" start="@ignore" end="@end ignore" region="ignore" />
+    </comments>
+  </general>
+
+</language>
diff --git a/xml/xml.xml b/xml/xml.xml
new file mode 100644
--- /dev/null
+++ b/xml/xml.xml
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+	<!ENTITY name    "[A-Za-z_:][\w.:_-]*">
+	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
+]>
+<language name="XML" version="1.97" kateversion="2.4" section="Markup" extensions="*.docbook;*.xml;*.rc;*.daml;*.rdf;*.rss;*.xspf" mimetype="text/xml;text/book;text/daml;text/rdf;application/rss+xml;application/xspf+xml" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
+
+<highlighting>
+<contexts>
+  <context name="Start" attribute="Normal Text" lineEndContext="#stay">
+    <IncludeRules context="FindXML" />
+  </context>
+
+  <context name="FindXML" attribute="Normal Text" lineEndContext="#stay">
+    <DetectSpaces />
+    <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
+    <StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
+    <RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" beginRegion="doctype" />
+    <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:_-]*" beginRegion="pi" />
+    <RegExpr attribute="Element" context="Element" String="&lt;&name;" beginRegion="element" />
+    <IncludeRules context="FindEntityRefs" />
+    <DetectIdentifier />
+  </context>
+
+  <context name="FindEntityRefs" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
+    <AnyChar attribute="Error" context="#stay" String="&amp;&lt;" />
+  </context>
+
+  <context name="FindPEntityRefs" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
+    <RegExpr attribute="PEntityRef" context="#stay" String="%&name;;" />
+    <AnyChar attribute="Error" context="#stay" String="&amp;%" />
+  </context>
+
+
+  <context name="Comment" attribute="Comment" lineEndContext="#stay">
+    <DetectSpaces />
+    <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
+    <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />
+    <IncludeRules context="##Alerts" />
+    <DetectIdentifier />
+  </context>
+
+  <context name="CDATA" attribute="Normal Text" lineEndContext="#stay">
+    <DetectSpaces />
+    <DetectIdentifier />
+    <StringDetect attribute="CDATA" context="#pop" String="]]&gt;" endRegion="cdata" />
+    <StringDetect attribute="EntityRef" context="#stay" String="]]&amp;gt;" />
+  </context>
+
+  <context name="PI" attribute="Normal Text" lineEndContext="#stay">
+    <Detect2Chars attribute="Processing Instruction" context="#pop" char="?" char1="&gt;" endRegion="pi" />
+  </context>
+
+  <context name="Doctype" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Doctype" context="#pop" char="&gt;" endRegion="doctype" />
+    <DetectChar attribute="Doctype" context="Doctype Internal Subset" char="[" beginRegion="int_subset" />
+  </context>
+
+  <context name="Doctype Internal Subset" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Doctype" context="#pop" char="]" endRegion="int_subset" />
+    <RegExpr attribute="Doctype" context="Doctype Markupdecl" String="&lt;!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />
+    <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
+    <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:_-]*" beginRegion="pi" />
+    <IncludeRules context="FindPEntityRefs" />
+  </context>
+
+  <context name="Doctype Markupdecl" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Doctype" context="#pop" char="&gt;" />
+    <DetectChar attribute="Value" context="Doctype Markupdecl DQ" char="&quot;" />
+    <DetectChar attribute="Value" context="Doctype Markupdecl SQ" char="&apos;" />
+  </context>
+
+  <context name="Doctype Markupdecl DQ" attribute="Value" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="#pop" char="&quot;" />
+    <IncludeRules context="FindPEntityRefs" />
+  </context>
+
+  <context name="Doctype Markupdecl SQ" attribute="Value" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="#pop" char="&apos;" />
+    <IncludeRules context="FindPEntityRefs" />
+  </context>
+
+  <context name="Element" attribute="Normal Text" lineEndContext="#stay">
+    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="element" />
+    <DetectChar attribute="Element" context="El Content" char="&gt;" />
+    <RegExpr attribute="Attribute" context="Attribute" String="^&name;" />
+    <RegExpr attribute="Attribute" context="Attribute" String="\s+&name;" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="El Content" attribute="Normal Text" lineEndContext="#stay">
+    <RegExpr attribute="Element" context="El End" String="&lt;/&name;" />
+    <IncludeRules context="FindXML" />
+  </context>
+
+  <context name="El End" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Element" context="#pop#pop#pop" char="&gt;" endRegion="element" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="Attribute" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Attribute" context="Value" char="=" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="Value" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="Value DQ" char="&quot;" />
+    <DetectChar attribute="Value" context="Value SQ" char="&apos;" />
+    <RegExpr attribute="Error" context="#stay" String="\S" />
+  </context>
+
+  <context name="Value DQ" attribute="Value" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="#pop#pop#pop" char="&quot;" />
+    <IncludeRules context="FindEntityRefs" />
+  </context>
+
+  <context name="Value SQ" attribute="Value" lineEndContext="#stay">
+    <DetectChar attribute="Value" context="#pop#pop#pop" char="&apos;" />
+    <IncludeRules context="FindEntityRefs" />
+  </context>
+
+</contexts>
+<itemDatas>
+  <itemData name="Normal Text" defStyleNum="dsNormal" />
+  <itemData name="Comment" defStyleNum="dsComment" />
+  <itemData name="CDATA" defStyleNum="dsBaseN" bold="1" />
+  <itemData name="Processing Instruction" defStyleNum="dsKeyword" />
+  <itemData name="Doctype" defStyleNum="dsDataType" bold="1" />
+  <itemData name="Element" defStyleNum="dsKeyword" />
+  <itemData name="Attribute" defStyleNum="dsOthers" />
+  <itemData name="Value" defStyleNum="dsString" color="#a00" />
+  <itemData name="EntityRef" defStyleNum="dsDecVal" />
+  <itemData name="PEntityRef" defStyleNum="dsDecVal" />
+  <itemData name="Error" defStyleNum="dsError" />
+</itemDatas>
+
+</highlighting>
+<general>
+  <comments>
+    <comment name="multiLine" start="&lt;!--" end="--&gt;" />
+  </comments>
+  <indentation mode="xml" />
+</general>
+</language>
diff --git a/xml/xslt.xml b/xml/xslt.xml
new file mode 100644
--- /dev/null
+++ b/xml/xslt.xml
@@ -0,0 +1,379 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+	<!ENTITY qname    "[A-Za-z_:][\w.:_-]*">
+	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&qname;);">
+	<!ENTITY axisname  "ancestor|ancestor-or-self|attribute|child|descendant|descendant-or-self|following|following-sibling|namespace|parent|preceding|preceding-sibling|self">
+]>
+
+<!--
+  Kate syntax highlighting for XSLT
+  2004 by Peter Lammich (views@gmx.de)
+  Published under the LGPL
+  
+  TODO/FIXME
+  
+    - Is qname - entity correct ??
+  
+    - Integrate latest XML highlighting, that supports !DOCTYPE, ![CDATA[, Processing Instructions, ...
+      This version is mainly based on kate 2.1 XML highlighting file
+    
+    - highlight functions only if they are followed by a '('. (How to do that ??)
+    - use <IncludeRules> to make things a bit more modular and cleaner 
+
+    - I'd like to properly comment this file, but kate 2.1 (I have to work with it) behaves strange whith comments.
+      It seems to immediately stop processing a tag's content when encountering a comment
+      
+    - Define own highlighting rules for patterns (Currently a pattern is highlighted as XPath)
+    
+    - Highlight also XPath keywords, such as 'cast as'
+      
+      
+    DONE: Added XSLT 2.0 tag- and XPath2.0 and XSLT2.0 function keywords
+    
+    FIXED: axis highlighting does not work, if identifier continues directly behind axis: (self::someWord)
+    
+    DONE: highlight entity references
+      Do not replace the <RegExpr> by <IncludeEntities>, this is a kate 2.1 workaround !
+
+    FIXED axis-names are even highlighted if there are characters in front of them, i.e. in "xxxself::", "self::" would 
+      be highlighted.
+        Now matching any qnames in XPath by own matcher
+
+    &varname; entity, what exactly is allowed by xslt ?
+      &varname; entity not used any more, variable names can be qnames.
+                      
+    CHANGED: Use the Alert style for the highlighting of todo and fixme, etc.
+         Comments are foldable, two dashes inside comment hl as error, 
+         use the dsError style for Invalid data (Wilbert Berendsen, wbsoft@xs4all.nl)
+       
+
+-->
+
+<language version="1.03" kateversion="2.1" name="xslt" section="Markup" extensions="*.xsl;*.xslt" license="LGPL" author="Peter Lammich (views@gmx.de)">
+  <highlighting>
+    <list name="keytags">
+      <item> xsl:value-of </item>
+      <item> xsl:output </item>
+      <item> xsl:decimal-format </item>
+      <item> xsl:apply-templates </item>
+      <item> xsl:param </item>
+      <item> xsl:transform </item>
+      <item> xsl:namespace-alias </item>
+      <item> xsl:comment </item>
+      <item> xsl:element </item>
+      <item> xsl:attribute </item>
+      <item> xsl:apply-imports </item>
+      <item> xsl:text </item>
+      <item> xsl:when </item>
+      <item> xsl:template </item>
+      <item> xsl:processing-instruction </item>
+      <item> xsl:include </item>
+      <item> xsl:copy-of </item>
+      <item> xsl:copy </item>
+      <item> xsl:with-param </item>
+      <item> xsl:stylesheet </item>
+      <item> xsl:for-each </item>
+      <item> xsl:choose </item>
+      <item> xsl:sort </item>
+      <item> xsl:otherwise </item>
+      <item> xsl:key </item>
+      <item> xsl:variable </item>
+      <item> xsl:number </item>
+      <item> xsl:message </item>
+      <item> xsl:fallback </item>
+      <item> xsl:strip-space </item>
+      <item> xsl:import </item>
+      <item> xsl:preserve-space </item>
+      <item> xsl:if </item>
+      <item> xsl:call-template </item>
+      <item> xsl:attribute-set </item>
+    </list>
+  
+    <list name="keytags_2.0">
+      <item> xsl:perform-sort </item>
+      <item> xsl:import-schema </item>
+      <item> xsl:for-each-group </item>
+      <item> xsl:sequence </item>
+      <item> xsl:non-matching-substring </item>
+      <item> xsl:namespace </item>
+      <item> xsl:next-match </item>
+      <item> xsl:function </item>
+      <item> xsl:analyze-string </item>
+      <item> xsl:output-character </item>
+      <item> xsl:matching-substring </item>
+      <item> xsl:result-document </item>
+      <item> xsl:character-map </item>
+      <item> xsl:document </item>
+    </list>
+    
+    <list name="functions">    
+      <item> format-number </item>
+      <item> position </item>
+      <item> lang </item>
+      <item> substring-before </item>
+      <item> substring </item>
+      <item> normalize-space </item>
+      <item> round </item>
+      <item> translate </item>
+      <item> starts-with </item>
+      <item> concat </item>
+      <item> local-name </item>
+      <item> key </item>
+      <item> count </item>
+      <item> document </item>
+      <item> system-property </item>
+      <item> current </item>
+      <item> boolean </item>
+      <item> number </item>
+      <item> contains </item>
+      <item> name </item>
+      <item> last </item>
+      <item> unparsed-entity-uri </item>
+      <item> sum </item>
+      <item> generate-id </item>
+      <item> function-available </item>
+      <item> element-available </item>
+      <item> false </item>
+      <item> substring-after </item>
+      <item> not </item>
+      <item> string-length </item>
+      <item> id </item>
+      <item> floor </item>
+      <item> ceiling </item>
+      <item> namespace-uri </item>
+      <item> true </item>
+      <item> string </item>
+      <item> text </item>
+    </list>
+
+    <list name="functions_2.0">
+      <item> zero-or-one </item>
+      <item> replace </item>
+      <item> namespace-uri-for-prefix </item>
+      <item> current-grouping-key </item>
+      <item> seconds-from-duration </item>
+      <item> resolve-uri </item>
+      <item> node-kind </item>
+      <item> minutes-from-dateTime </item>
+      <item> implicit-timezone </item>
+      <item> exactly-one </item>
+      <item> current-time </item>
+      <item> current-dateTime </item>
+      <item> unordered </item>
+      <item> subtract-dates-yielding-dayTimeDuration </item>
+      <item> string-join </item>
+      <item> static-base-uri </item>
+      <item> months-from-duration </item>
+      <item> input </item>
+      <item> exists </item>
+      <item> default-collation </item>
+      <item> dateTime </item>
+      <item> current-group </item>
+      <item> current-date </item>
+      <item> collection </item>
+      <item> timezone-from-time </item>
+      <item> matches </item>
+      <item> local-name-from-QName </item>
+      <item> day-from-date </item>
+      <item> timezone-from-date </item>
+      <item> round-half-to-even </item>
+      <item> month-from-dateTime </item>
+      <item> month-from-date </item>
+      <item> hours-from-duration </item>
+      <item> escape-uri </item>
+      <item> distinct-values </item>
+      <item> avg </item>
+      <item> years-from-duration </item>
+      <item> unparsed-text </item>
+      <item> unparsed-entity-public-id </item>
+      <item> subtract-dateTimes-yielding-dayTimeDuration </item>
+      <item> subtract-dates-yielding-yearMonthDuration </item>
+      <item> string-to-codepoints </item>
+      <item> sequence-node-identical </item>
+      <item> hours-from-time </item>
+      <item> hours-from-dateTime </item>
+      <item> format-time </item>
+      <item> codepoints-to-string </item>
+      <item> trace </item>
+      <item> tokenize </item>
+      <item> subtract-dateTimes-yielding-yearMonthDuration </item>
+      <item> subsequence </item>
+      <item> seconds-from-dateTime </item>
+      <item> regex-group </item>
+      <item> one-or-more </item>
+      <item> node-name </item>
+      <item> namespace-uri-from-QName </item>
+      <item> min </item>
+      <item> idref </item>
+      <item> format-dateTime </item>
+      <item> format-date </item>
+      <item> days-from-duration </item>
+      <item> compare </item>
+      <item> base-uri </item>
+      <item> seconds-from-time </item>
+      <item> in-scope-prefixes </item>
+      <item> expanded-QName </item>
+      <item> adjust-date-to-timezone </item>
+      <item> year-from-date </item>
+      <item> resolve-QName </item>
+      <item> remove </item>
+      <item> QName </item>
+      <item> minutes-from-time </item>
+      <item> max </item>
+      <item> lower-case </item>
+      <item> index-of </item>
+      <item> doc </item>
+      <item> deep-equal </item>
+      <item> data </item>
+      <item> minutes-from-duration </item>
+      <item> adjust-dateTime-to-timezone </item>
+      <item> abs </item>
+      <item> timezone-from-dateTime </item>
+      <item> reverse </item>
+      <item> error </item>
+      <item> ends-with </item>
+      <item> day-from-dateTime </item>
+      <item> year-from-dateTime </item>
+      <item> upper-case </item>
+      <item> root </item>
+      <item> normalize-unicode </item>
+      <item> empty </item>
+      <item> insert-before </item>
+      <item> document-uri </item>
+      <item> adjust-time-to-timezone </item>
+    </list>
+    
+    <contexts>
+
+       <context name="normalText" attribute="Normal Text" lineEndContext="#stay">
+         <StringDetect attribute="Comment" context="comment" String="&lt;!--" beginRegion="comment"/>
+         <DetectChar attribute="Tag" context="tagname" char="&lt;" />
+         <RegExpr attribute="Entity Reference" context="#stay" String="&entref;" />
+       </context>
+
+       <context name="detectEntRef" attribute="Normal Text" lineEndContext="#stay">
+         <RegExpr attribute="Entity Reference" context="#stay" String="&entref;" />
+       </context>
+       
+       <context name="tagname" attribute="Tag" lineEndContext="#stay">
+         <keyword attribute="XSLT Tag" context="xattributes" String="keytags" />
+         <keyword attribute="XSLT 2.0 Tag" context="xattributes" String="keytags_2.0" />
+         <RegExpr attribute="Attribute" context="attributes" String="\s*" />
+         <DetectChar attribute="Tag" context="#pop" char="&gt;" />
+       </context>
+       
+       <context name="attributes" attribute="Attribute" lineEndContext="#stay">
+         <Detect2Chars attribute="Tag" context="#pop#pop" char="/" char1="&gt;" />
+         <DetectChar attribute="Tag" context="#pop#pop" char="&gt;" />
+         <RegExpr attribute="Normal Text" context="attrValue" String="\s*=\s*" />
+       </context>
+
+       <context name="attrValue" attribute="Invalid" lineEndContext="#stay">
+         <Detect2Chars attribute="Invalid" context="#pop#pop#pop" char="/" char1="&gt;" />
+         <DetectChar attribute="Invalid" context="#pop#pop#pop" char="&gt;" />
+         <DetectChar attribute="Attribute Value" context="string" char="&quot;" />
+         <DetectChar attribute="Attribute Value" context="sqstring" char="'" />
+       </context>
+
+       <context name="xattributes" attribute="Attribute" lineEndContext="#stay">
+          <Detect2Chars attribute="Tag" context="#pop#pop" char="/" char1="&gt;" />
+          <DetectChar attribute="Tag" context="#pop#pop" char="&gt;" />
+          <RegExpr attribute="Attribute" context="xattrValue" String="select\s*=\s*" />
+          <RegExpr attribute="Attribute" context="xattrValue" String="test\s*=\s*" />
+          <RegExpr attribute="Attribute" context="xattrValue" String="match\s*=\s*" />
+          <RegExpr attribute="Attribute" context="attrValue" String="\s*=\s*" />
+       </context>
+
+       <context name="xattrValue" attribute="Invalid" lineEndContext="#stay">
+         <Detect2Chars attribute="Invalid" context="#pop#pop#pop" char="/" char1="&gt;" />
+         <DetectChar attribute="Invalid" context="#pop#pop#pop" char="&gt;" />
+         <DetectChar attribute="XPath" context="xpath" char="&quot;" />
+         <DetectChar attribute="XPath" context="sqxpath" char="'" />
+       </context>
+       
+       
+       <context name="string" attribute="Attribute Value" lineEndContext="#stay">
+         <DetectChar attribute="XPath" context="xpath" char="{" />
+         <DetectChar attribute="Attribute Value" context="#pop#pop" char="&quot;" />
+         <IncludeRules context="detectEntRef" />
+       </context>
+
+       <context name="sqstring" attribute="Attribute Value" lineEndContext="#stay">
+         <DetectChar attribute="XPath" context="sqxpath" char="{" />
+         <DetectChar attribute="Attribute Value" context="#pop#pop" char="'" />
+         <IncludeRules context="detectEntRef" />
+       </context>
+       
+       <context name="comment" attribute="Comment" lineEndContext="#stay">
+         <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
+         <RegExpr attribute="Invalid" context="#stay" String="-(-(?!-&gt;))+" />
+         <RegExpr attribute="Alert" context="#stay" String="(FIXME|TODO|HACK)" />
+       </context>
+
+       <context name="xpath" attribute="XPath" lineEndContext="#stay">
+         <keyword attribute="XPath/ XSLT Function" context="#stay" String="functions" />
+         <keyword attribute="XPath 2.0/ XSLT 2.0 Function" context="#stay" String="functions_2.0" />
+         <RegExpr attribute="XPath Axis" context="#stay" String="(&axisname;)::" />
+         <DetectChar attribute="XPath" context="#pop" char="}" />
+         <DetectChar attribute="XPath String" context="sqxpathstring" char="'" />
+         <DetectChar attribute="XPath" context="#pop#pop" char="&quot;" />
+         <RegExpr attribute="XPath Attribute" context="#stay" String="@&qname;" />
+         <RegExpr attribute="Variable" context="#stay" String="\$&qname;" />
+         <RegExpr attribute="XPath" context="#stay" String="&qname;" />
+         <DetectChar attribute="Invalid" context="#stay" char="$" />
+         <IncludeRules context="detectEntRef" />
+       </context>
+       
+       <context name="sqxpath" attribute="XPath" lineEndContext="#stay">
+         <keyword attribute="XPath/ XSLT Function" context="#stay" String="functions" />
+         <keyword attribute="XPath 2.0/ XSLT 2.0 Function" context="#stay" String="functions_2.0" />
+         <RegExpr attribute="XPath Axis" context="#stay" String="(&axisname;)::" />
+         <DetectChar attribute="XPath" context="#pop" char="}" />
+         <DetectChar attribute="XPath String" context="xpathstring" char="&quot;" />
+         <DetectChar attribute="XPath" context="#pop#pop" char="'" />
+         <RegExpr attribute="XPath Attribute" context="#stay" String="@&qname;" />
+         <RegExpr attribute="Variable" context="#stay" String="\$&qname;" />
+         <RegExpr attribute="XPath" context="#stay" String="&qname;" />
+         <DetectChar attribute="Invalid" context="#stay" char="$" />
+         <IncludeRules context="detectEntRef" />
+       </context>
+       
+       <context name="sqxpathstring" attribute="XPath String" lineEndContext="#stay">
+         <DetectChar attribute="XPath String" context="#pop" char="'" />
+         <IncludeRules context="detectEntRef" />
+       </context>
+       
+       <context name="xpathstring" attribute="XPath String" lineEndContext="#stay">
+         <DetectChar attribute="XPath String" context="#pop" char="&quot;" />
+         <IncludeRules context="detectEntRef" />
+       </context>
+       
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Tag" defStyleNum="dsKeyword"/>
+      <itemData name="Attribute" defStyleNum="dsOthers"/>
+      <itemData name="Invalid" defStyleNum="dsError"/>
+      <itemData name="Alert" defStyleNum="dsAlert"/>
+      <itemData name="Attribute Value" defStyleNum="dsString" color="#800000" selColor="#ffffff" bold="0" italic="0"/>
+      <itemData name="XPath" defStyleNum="dsOthers" color="#008080" selColor="#ffffff" bold="0" italic="0"/>
+      <itemData name="XPath String" defStyleNum="dsString" color="#800000" selColor="#ffffff" bold="0" italic="0"/>
+      <itemData name="XPath Axis" defStyleNum="dsKeyword" color="#008080" selColor="#ffffff" bold="0" italic="1"/>
+      <itemData name="XPath/ XSLT Function" defStyleNum="dsKeyword" color="#008080" selColor="#ffffff" bold="1" italic="0"/>
+      <itemData name="XPath 2.0/ XSLT 2.0 Function" defStyleNum="dsKeyword" color="#008080" selColor="#ffffff" bold="1" italic="0"/>
+      <itemData name="XPath Attribute" defStyleNum="dsNormal" color="#008080" selColor="#ffffff" bold="0" italic="1" />
+      <itemData name="Variable" defStyleNum="dsNormal" color="#008080" selColor="#ffffff" bold="0" italic="1" />
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="XSLT Tag" defStyleNum="dsKeyword" color="#000080" selColor="#ffffff" bold="1" italic="0" />
+      <itemData name="XSLT 2.0 Tag" defStyleNum="dsKeyword" color="#000080" selColor="#ffffff" bold="1" italic="0" />
+      <itemData name="Entity Reference" defStyleNum="dsDecVal" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="multiLine" start="&lt;!--" end="--&gt;" />
+    </comments>
+    <keywords casesensitive="0" weakDeliminator="-:" additionalDeliminator="&quot;{}"/>
+  </general>
+</language>
diff --git a/xml/yacc.xml b/xml/yacc.xml
new file mode 100644
--- /dev/null
+++ b/xml/yacc.xml
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<!--
+  ========================================================================
+
+  YACC.XML supports syntax highlighting for Yacc/Bison source under Kate.
+
+  Copyright (C) 2004 - Jan Villat <jan.villat@net2000.ch>
+  This code is released under the LGPL as part of kdelibs/kate.
+
+  ========================================================================
+
+  Updates for YACC.XML can be obtained from http://kate.kde.org/hl/
+
+  UPDATE HISTORY:-
+  2004.05.26 - YACC.XML 1.00        - First released.
+
+  TODO:-
+  - Add a mime type (cannot find it !?)
+
+  ========================================================================
+-->
+<language name="Yacc/Bison" version="1.03" kateversion="2.4" section="Sources" extensions="*.y" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL">
+
+<highlighting>
+<contexts>
+  <context name="Pre Start" attribute="Normal Text" lineEndContext="#stay">
+    <IncludeRules context="Comment" />
+    <DetectSpaces />
+    <Detect2Chars attribute="Content-Type Delimiter" context="C Declarations" char="%" char1="{" beginRegion="cdeclarations" column="0" />
+    <RegExpr attribute="Normal Text" context="Declarations" String="." beginRegion="declarations" lookAhead="true" />
+  </context>
+
+  <context name="C Declarations" attribute="Normal Text" lineEndContext="#stay">
+    <IncludeRules context="Comment" />
+    <Detect2Chars attribute="Content-Type Delimiter" context="#pop" char="%" char1="}" endRegion="cdeclarations" column="0" />
+    <IncludeRules context="##C++" />
+  </context>
+
+  <context name="Declarations" attribute="Normal Text" lineEndContext="#stay">
+    <IncludeRules context="Comment" />
+    <StringDetect attribute="Directive" context="Union Start" String="%union" />
+    <Detect2Chars attribute="Content-Type Delimiter" context="Rules" char="%" char1="%" beginRegion="rules" endRegion="declarations" />
+
+    <!-- not sure that strict yacc allows that ... but it is commonly used -->
+    <Detect2Chars attribute="Content-Type Delimiter" context="C Declarations" char="%" char1="{" beginRegion="cdeclarations" column="0" />
+
+    <DetectChar attribute="Directive" context="Percent Command" char="%" />
+  </context>
+
+  <context name="Union Start" attribute="Normal Text" lineEndContext="#stay">
+    <IncludeRules context="Comment" />
+    <DetectSpaces />
+    <DetectChar attribute="Normal Text" context="Union In" char="{" beginRegion="union" />
+    <RegExpr attribute="Alert" context="#pop" String="." />
+  </context>
+  <context name="Union In" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Normal Text" context="Union InIn" char="{" />
+    <DetectChar attribute="Normal Text" context="#pop#pop" char="}" endRegion="union" />
+    <IncludeRules context="##C++" />
+  </context>
+  <context name="Union InIn" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Normal Text" context="Union InIn" char="{" />
+    <DetectChar attribute="Normal Text" context="#pop" char="}" />
+    <IncludeRules context="##C++" />
+  </context>
+
+  <context name="Rules" attribute="Rule" lineEndContext="#stay">
+    <IncludeRules context="Comment" />
+    <Detect2Chars attribute="Content-Type Delimiter" context="User Code" char="%" char1="%" beginRegion="code" endRegion="rules" />
+    <DetectChar attribute="Normal Text" context="Rule In" char=":" beginRegion="rule" />
+  </context>
+
+  <context name="Rule In" attribute="Definition" lineEndContext="#stay">
+    <IncludeRules context="Comment" />
+    <DetectChar attribute="Normal Text" context="#pop" char=";" endRegion="rule" />
+    <DetectChar attribute="Normal Text" context="Normal C Bloc" char="{" beginRegion="bloc" />
+    <DetectChar attribute="Normal Text" context="#stay" char="|" />
+    <IncludeRules context="StringOrChar" />
+  </context>
+
+  <context name="User Code" attribute="Normal Text" lineEndContext="#stay">
+    <IncludeRules context="##C++" />
+  </context>
+
+  <context name="Percent Command" attribute="Directive" lineEndContext="#pop">
+    <IncludeRules context="Comment" />
+    <RegExpr attribute="Normal Text" context="Percent Command In" String="\W" lookAhead="true" />
+  </context>
+  <context name="Percent Command In" attribute="NormalText" lineEndContext="#pop#pop">
+    <IncludeRules context="StringOrChar" />
+    <DetectChar attribute="Data Type" context="PC type" char="&lt;" />
+  </context>
+  <context name="PC type" attribute="Data Type" lineEndContext="#pop#pop#pop">
+    <DetectChar attribute="Data Type" context="#pop" char="&gt;" />
+  </context>
+
+  <context name="Comment" attribute="Comment">
+    <Detect2Chars attribute="Comment" context="CommentStar" char="/" char1="*" />
+    <!-- not sure that strict yacc allows that ... but I saw it in some sources ... -->
+    <Detect2Chars attribute="Comment" context="CommentSlash" char="/" char1="/" />
+  </context>
+  <context name="CommentStar" attribute="Comment" lineEndContext="#stay">
+    <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" />
+  </context>
+  <context name="CommentSlash" attribute="Comment" lineEndContext="#stay">
+    <RegExpr attribute="Comment" context="#pop" String="[^\\]$" />
+  </context>
+
+  <context name="StringOrChar" attribute="NormalText">
+    <DetectChar attribute="String Char" context="Char" char="'" />
+    <DetectChar attribute="String" context="String" char="&quot;" />
+  </context>
+  <context name="String" attribute="String" lineEndContext="#pop">
+    <RegExpr attribute="Backslash Code" context="#stay" String="\\." />
+    <DetectChar attribute="String" context="#pop" char="&quot;" />
+  </context>
+  <context name="Char" attribute="String Char" lineEndContext="#pop">
+    <RegExpr attribute="Backslash Code" context="#stay" String="\\." />
+    <DetectChar attribute="String Char" context="#pop" char="'" />
+  </context>
+
+  <context name="Normal C Bloc" attribute="Normal Text" lineEndContext="#stay">
+    <DetectChar attribute="Normal Text" context="Normal C Bloc" char="{" beginRegion="bloc" />
+    <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="bloc" />
+    <IncludeRules context="##C++" />
+    <DetectChar attribute="Directive" context="Dol" char="$" />
+  </context>
+  <context name="Dol" attribute="Normal Text" fallthrough="true" fallthroughContext="DolEnd">
+    <RegExpr attribute="Data Type" context="DolEnd" String="&lt;[^&gt;]+&gt;" />
+  </context>
+  <context name="DolEnd" attribute="Normal Text">
+    <RegExpr attribute="Directive" context="#pop#pop" String="\d+" />
+    <DetectChar attribute="Directive" context="#pop#pop" char="$" />
+  </context>
+</contexts>
+
+<itemDatas>
+  <itemData name="Normal Text" defStyleNum="dsNormal" />
+  <itemData name="Definition" defStyleNum="dsNormal" />
+  <itemData name="Comment" defStyleNum="dsComment" />
+  <itemData name="Content-Type Delimiter" defStyleNum="dsBaseN" bold="1" />
+  <itemData name="Directive" defStyleNum="dsKeyword"/>
+  <itemData name="Rule" defStyleNum="dsString" />
+  <itemData name="Backslash Code" defStyleNum="dsString" bold="1" />
+  <itemData name="Alert" defStyleNum="dsAlert" />
+  <itemData name="String" defStyleNum="dsString"/>
+  <itemData name="String Char" defStyleNum="dsChar"/>
+  <itemData name="Data Type" defStyleNum="dsDataType"/>
+</itemDatas>
+
+</highlighting>
+<general>
+  <comments>
+    <comment name="multiLine" start="/*" end="*/" />
+  </comments>
+</general>
+</language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
