skylighting-core 0.7.7 → 0.8
raw patch · 4 files changed
+495/−36 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- changelog.md +328/−4
- skylighting-core.cabal +1/−1
- src/Skylighting/Format/HTML.hs +23/−31
- xml/elm.xml +143/−0
changelog.md view
@@ -1,5 +1,21 @@-# Revision history for skylighting-core+# Revision history for skylighting and skylighting-core +## 0.8 -- 2019-05-27++ * Wrap html source lines with `<span>`, not `<a>` (David+ Baynard). Fixes jgm/pandoc#4386. Also fixes #33 (and+ therefore fixes jgm/pandoc#4278).+ * Prevent line-wrap overlap in html by increasing padding+ (David Baynard).+ * Remove superfluous 'pointer-events: all' (David Baynard).+ * Simplify HTML generation code (David Baynard).+ * Remove sourceLine class from spans (David Baynard).+ * Display line numbers using css counters (David Baynard).+ * Add Elm syntax definition (#66, #68, Bonghyun Kim).+ * Put changelog in base directory, use symlinks to point to it.+ We have the same changelog for skylighting and skylighting-core,+ for simplicity. (Version numbers are kept in sync.)+ ## 0.7.7 -- 2019-02-27 * Add parseSyntaxDefinitionFromString [API change].@@ -82,6 +98,314 @@ ## 0.7 -- 2018-03-03 - * Initial release of this library, which includes the core- functionality of skylighting, relicensed as BSD3- (Jonathan Daugherty).+ * Split skylighting into skylighting-core (BSD3) and skylighting (GPL)+ (#37, Jonathan Daugherty). skylighting-core (BSD3 licensed) includes+ the core library functionality and the source of the XML syntax, but+ not the compiled Syntax modules, and skylighting (GPL2 licensed)+ includes Syntax modules compiled from the XML syntax files.++ * We discontinue support for GHC before 7.10 (because we need to support the+ reexport-modules Cabal directive.)++ * Print message about loaded syntax defs to stderr (#36).++ * New module Skylighting.Loader, exporting+ `loadSyntaxFromFile` and `loadSyntaxesFromDir` (Jonathan Daugherty).++ * Adjust tests to load xml definitions dynamically.++## 0.6 -- 2018-01-18++ * Add ANSI color output (Alexander Ronald Altman, #22).++ + New package dependencies: `ansi-terminal` and `colour`.+ + New module: `Skylighting.Format.ANSI`, exporting `formatANSI`,+ (also reexported from the module `Skylighting`).+ + In `Skylighting.Types`, new types `ANSIColorLevel` and+ `Xterm256ColorCode`, and a new field `ansiColorLevel` in+ `FormatOptions`.+ + Main `skylighting` executable now supports ANSI output (use+ `ansi` as argument to `--format`), which is now the default output+ format. A new flag `--color-level` has been added to select+ the number of colors (with options `16`, `256`, `true`, and+ the default `auto`).++ * Reword error for missing contexts in IncludeRules.++ * Use ordNub instead of nub for missingIncludes.++## 0.5.1 -- 2018-01-07++ * Fixed tokenizer exceptions (#31). Previously `throwError`+ did not actually generate `Left` results in `tokenize`,+ because of the way the MonadPlus instance worked. Rewrote+ the TokenizerM monad from scratch so that exceptions would+ not be skipped.++ * Improved error message about undefined contexts.++ * Makefile: use cabal for bootstrap target.++ * README: remove stack bootstrap instructions.+ You can no longer bootstrap with stack, because it+ insists on building ALL the executables the first time,+ and of course that can't be done with this library.++ * Use quickcheck for fuzz test.++## 0.5.0.1 -- 2017-12-18++ * Small improvements to fuzz tests in test suite. We now+ ensure that we print the random text on test failure. Also,+ we now run the test with many smaller samples rather than+ one big one.++ * Add aeson lower bound (because of toEncoding) (#28).++## 0.5 -- 2017-12-10++ * Fix line spacing and overflowing content in generated HTML+ (David Baynard, #25, see jgm/pandoc#4128).++ + Fix empty line height, explicitly+ + Ensure long lines scroll on screen+ + Only apply colour to the outer div+ + Don't reset line number colour+ + Fix borders on empty code lines+ + Collapse divs correctly.++ * Changes to Style types and JSON instances. Previously we could not+ successfully round-trip through JSON.++ + `tokenStyles` is now a map rather than an association list.+ + We now use `line-number-color` instead of `line-numbers` at+ the top level in the JSON instances, falling back to+ `line-numbers` in `editor-colors`, for KDE theme compatibility.+ + We use `line-number-background-color` at the top level, falling+ back to the text background color.+ + We use `text-color` at the top level, falling back to the `text-color`+ of the `Normal` token style if it exists, for KDE compatibility.+ + We use `background-color` at the top level, falling back to+ the `background-color` in `editor-colors`, for KDE compatibility.+ + A round-trip JSON test has been added.++## 0.4.4.1 -- 2017-11-27++ * HTML formatting: fix color, bgcolor when numbering enabled.+ Previously, the code got the color and background color+ the numbers were supposed to get. See jgm/pandoc #4103.+ * Updated syntax descriptions for bash, clojure, commonlisp, diff,+ dockerfile, doxygen, doxygenlua, fsharp, hamlet, haskell, haxe,+ java, javascript, julia, latex, literate-curry, literate-haskell,+ makefile, mediawiki, monobasic, ocaml, prolog, r, relaxng, scala,+ sci, sql-mysql, sql-postgresql, sql, xslt.+ * test program: use --accept instead of --regen.++## 0.4.4 -- 2017-11-21++ * HTML formatter: always use an a element (rather than a div)+ for source lines. The divs were invalid, because code+ elements must contain phrasing content. Previously we used+ a elements when line anchors were called for, but there is+ no clear reason not to use them always.+ * skylighting binary: add doctype to generated HTML.++## 0.4.3.2 -- 2017-11-04++ * Fixed regression in `data-line-number` attributes in HTML+ output. We should not include the `lineIdPrefix` in+ front of this.++## 0.4.3.1 -- 2017-11-03++ * Fixed typo in css (Artymort).+ * Fixed travis build times.++## 0.4.3 --- 2017-11-02++ * `FormatOptions`: added `lineIdPrefix` (jgm/pandoc#4031).+ This is needed because a web page may contain several+ code samples, and we need to make sure that the ids on+ lines are unique.+ * HTML formatter: use `lineIdPrefix` in ids for lines.+ * HTML formatter: Don't put href attributes on divs.++## 0.4.2 --- 2017-10-26++ * HTML output: remove outer div. This prevented margin+ collapsing between the pre and surrounding block elements,+ and often gave us excess white space around code blocks.+ See jgm/pandoc#3996.++## 0.4.1 --- 2017-09-28++ * Updated XML definitions from KDE repository.+ Changed: actionscript, ada, agda, alert, alert_indent, asn1, awk, bash,+ boo, c, changelog, clojure, cmake, coldfusion, commonlisp, cpp, cs, css,+ curry, d, dockerfile, dot, doxygen, doxygenlua, eiffel, email, erlang,+ fortran, fsharp, gcc, haskell, haxe, isocpp, java, javascript, jsp, julia,+ lilypond, lua, m4, makefile, matlab, maxima, mips, modelines, modula-2,+ monobasic, objectivec, objectivecpp, ocaml, octave, opencl, pascal, perl,+ php, pike, postscript, prolog, purebasic, python, r, relaxng,+ relaxngcompact, rest, rhtml, ruby, rust, scala, scheme, sci, sql-mysql,+ sql-postgresql, sql, tcl, tcsh, verilog, vhdl, xml, xslt, xul, zsh.+ * Added support for powershell, using definition from KDE repository.+ * Stop terminating long builds on TravisCI (Kyle Ondy).++## 0.4 --- 2017-09-15++ * Removed ToJSON/FromJSON instances for KeywordAttr,+ WordSet, Matcher, Context, ContextSwitch, Rule, Syntax+ (added in 0.3.5). Creating these increased the memory+ requirements for compiling skylighting to a degree not+ justified by the usefulness of these instances.++## 0.3.5 --- 2017-09-14++ * Added ToJSON/FromJSON instances for all basic types.+ * Added some background colors to 'kate' style, matching default.theme,+ and made FromJSON for Style sensitive to background-color.++## 0.3.4.1 -- 2017-09-09++ * HTML formatting: do not use `div` elements for source+ lines in inline output.++## 0.3.4 -- 2017-09-09++ * HTML formatting changes (David Baynard). Note that these+ changes may require changes in hard-coded CSS that is+ used with skylighting's HTML output.++ + Wrap lines of source code in a `div` with `display` set to+ `inline-block`. The `div`s make per-line processing easier.+ They cannot be set as `display: block` as that introduces extra+ new lines when copying and pasting.+ + Render line numbers in html using CSS pseudo elements rather than+ a table. The line numbers are always produced, as `data-line-number`+ attributes, and css to display them as `::before` elements are+ always produced. The option to switch on line numbering only+ toggles a class; this means it is possible to toggle line numbering+ without re-running skylighting.+ + If the `linkAnchors` option is set, wrap with an `a` element rather+ than a `div`, set so that clicking the line number (and only the+ line number) will jump to that line.+ + Code wraps by default when html is printed, with wrapped lines+ indented.++## 0.3.3.1 -- 2017-06-26++ * Updated xml syntax definitions and clojure test.+ * Improved 'make update-xml' target.+ * Updated version bound for criterion.++## 0.3.3 -- 2017-04-22++ * Revert change from 0.3.2; now entities from a DTD are+ resolved if the DTD element is included. This is needed+ for agda.xml and some others. If you want to use a custom+ xml definition without needing language.dtd, just remove+ the reference to language.dtd in your xml file.+ * Added `case` keyword for ats (Hanwen (Steinway) Wu).++## 0.3.2 -- 2017-04-01++ * Parse xml definitions without resolving entities from+ language.dtd. This allows xml definitions to be used even+ when language.dtd isn't available. Existing definitions+ don't rely on the two or three entities definied in+ language.dtd, so this is harmless.+ * Small optimizations.++## 0.3.1 -- 2017-02-28++ * Use handwritten parser for Float instead of regex. Fixes+ jgm/highlighting-kate#57 (again).+ * Added float parsing tests.+ * Use parsec parsers, not regex, for CStringChar and CChar.+ * Rewrote Int, Hex, Oct, CStringChar, CCHar parsers with parsec+ instead of regex. This speeds things up.+ * Don't include leading + in Int, Hex, Oct parsers. That gives+ bad results for things like `i+1`.++## 0.3 -- 2017-02-19++ * Store literal binary-encoded representations of the Syntax+ structure in Skylighting.Syntax.*.hs, instead of the+ structure itself. This works around a problem ghc has+ compiling modules with large structures. This indirect method+ produces faster compile times and avoids massive memory usage by+ ghc (especially in profiling builds). For background see+ http://stackoverflow.com/questions/16348340/. Closes #7.+ * Types: Internals of 'WordSet' are no longer exposed.++## 0.2 -- 2017-02-19++ * Restore Data, Typeable, Generic instances for basic types.+ To do this, we remove reCompiled field from RE (API change). Instead, we+ have the tokenizer compile regexes the first time it encounters them,+ memoizing the results. Performance is not significantly worse.+ * Skylighting.Syntax.*: use string representation of the Syntax,+ which is then 'read', rather than including the code for the data+ structure directly (#7). This indirect method produces faster compile+ times and avoids massive memory usage by ghc (especially in profiling+ builds). For background see+ http://stackoverflow.com/questions/16348340/compiling-very-large-constants-with-ghc+ * Use -fprof-auto-exported for profiling builds.+ * Added benchmark for xml syntax definition parsing.+ * Patched perl.xml (improperly escaped regex) (#8).+ This fixes a perl regex compilation error for regex patterns+ with backslash as delimiter, e.g. m\a\.+ * Add a flag to build with system pcre (Felix Yan).++## 0.1.1.5 -- 2017-02-03++ * Avoid depending on a PrintfArg instance for Text (#5).+ This isn't provided in some older versions of the text library.+ This change should allow the package to build on older platforms.++## 0.1.1.4 -- 2017-01-31++ * Properly escape characters in subDynamic.+ This fixes a problem that caused failures with++ echo -e "s\0b\0c" | skylighting -s perl++ * More efficient rewrite of char escaping for regexes.++## 0.1.1.3 -- 2017-01-29++ * Increase test timeout to 6s.+ * Avoid double {{}} in latex macros.+ * Fixed problem compiling Format.LaTeX on older ghc versions (7.8.3)+ that can't take a Text as PrintfArg.++## 0.1.1.2 -- 2017-01-28++ * Added much more extensive testing to ensure that tokenizers+ don't hang or drop input.+ * Fixed some issues with line-end and fallthrough context+ handling.+ * Fixed a bug in WordDetect handling which caused it to drop+ input (#2).++## 0.1.1.1 -- 2017-01-21++ * Optimized. Speed is now comparable to highlighting-kate+ and often better.+ * Added benchmarks.++## 0.1.1 -- 2017-01-19++ * Added breezeDark style, from breeze-dark.theme.+ * Fixed performance bug in regex application (#1). This gives a+ significant speedup, especially for inputs with long lines.++## 0.1.0.1 -- 2016-12-23++ * Fixed bug in LaTeX renderer (backslash in wrong position).++## 0.1.0.0 -- 2016-12-23++ * Initial release+
skylighting-core.cabal view
@@ -1,5 +1,5 @@ name: skylighting-core-version: 0.7.7+version: 0.8 synopsis: syntax highlighting library description: Skylighting is a syntax highlighting library. It derives its tokenizers from XML syntax
src/Skylighting/Format/HTML.hs view
@@ -7,7 +7,6 @@ import Data.List (intersperse, sort) import qualified Data.Map as Map import Data.Monoid ((<>))-import Data.String (fromString) import qualified Data.Text as Text import Skylighting.Types import Text.Blaze.Html@@ -81,19 +80,13 @@ -- subsequent per-line processing (e.g. adding line numnbers) possible. sourceLineToHtml :: FormatOptions -> LineNo -> SourceLine -> Html sourceLineToHtml opts lno cont =- (if lineAnchors opts- then H.a ! A.class_ sourceLine- ! A.id lineNum- ! A.href lineRef- ! dataAttrib- else H.a ! A.class_ sourceLine- ! A.id lineNum- ! dataAttrib) $ mapM_ (tokenToHtml opts) cont- where sourceLine = toValue "sourceLine"- lineNum = toValue prefixedLineNo+ H.span ! A.id lineNum+ $ do+ H.a ! A.href lineRef $ mempty+ mapM_ (tokenToHtml opts) cont+ where lineNum = toValue prefixedLineNo lineRef = toValue ('#':prefixedLineNo) prefixedLineNo = Text.unpack (lineIdPrefix opts) <> show (lineNo lno)- dataAttrib = A.title (toValue (show (lineNo lno))) tokenToHtml :: FormatOptions -> Token -> Html tokenToHtml _ (NormalTok, txt) = toHtml txt@@ -141,22 +134,21 @@ styleToCss f = unlines $ divspec ++ numberspec ++ colorspec ++ linkspec ++ sort (map toCss (Map.toList (tokenStyles f)))- where colorspec = [- "div.sourceCode\n { "- ++ case (defaultColor f, backgroundColor f) of- (Nothing, Nothing) -> ""- (Just c, Nothing) -> "color: " ++ fromColor c ++ ";"- (Nothing, Just c) -> "background-color: " ++ fromColor c ++ ";"- (Just c1, Just c2) -> "color: " ++ fromColor c1- ++ "; background-color: " ++ fromColor c2 ++ ";"- ++ " }"]+ where colorspec = pure . unwords $ [+ "div.sourceCode\n {"+ , maybe "" (\c -> "color: " ++ fromColor c ++ ";") (defaultColor f)+ , maybe "" (\c -> "background-color: " ++ fromColor c ++ ";") (backgroundColor f)+ , "}"+ ] numberspec = [- "pre.numberSource a.sourceLine"- , " { position: relative; left: -4em; }"- , "pre.numberSource a.sourceLine::before"- , " { content: attr(title);"+ "pre.numberSource code"+ , " { counter-reset: source-line 0; }"+ , "pre.numberSource code > span"+ , " { position: relative; left: -4em; counter-increment: source-line; }"+ , "pre.numberSource code > span > a:first-child::before"+ , " { content: counter(source-line);" , " position: relative; left: -1em; text-align: right; vertical-align: baseline;"- , " border: none; pointer-events: all; display: inline-block;"+ , " border: none; display: inline-block;" , " -webkit-touch-callout: none; -webkit-user-select: none;" , " -khtml-user-select: none; -moz-user-select: none;" , " -ms-user-select: none; user-select: none;"@@ -171,9 +163,9 @@ " padding-left: 4px; }" ] divspec = [- "a.sourceLine { display: inline-block; line-height: 1.25; }"- , "a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; }"- , "a.sourceLine:empty { height: 1.2em; }" -- correct empty line height+ "code.sourceCode > span { display: inline-block; line-height: 1.25; }"+ , "code.sourceCode > span { color: inherit; text-decoration: inherit; }"+ , "code.sourceCode > span:empty { height: 1.2em; }" -- correct empty line height , ".sourceCode { overflow: visible; }" -- needed for line numbers , "code.sourceCode { white-space: pre; position: relative; }" -- position relative needed for relative contents , "div.sourceCode { margin: 1em 0; }" -- Collapse neighbours correctly@@ -183,11 +175,11 @@ , "}" , "@media print {" , "code.sourceCode { white-space: pre-wrap; }"- , "a.sourceLine { text-indent: -1em; padding-left: 1em; }"+ , "code.sourceCode > span { text-indent: -5em; padding-left: 5em; }" , "}" ] linkspec = [ "@media screen {"- , "a.sourceLine::before { text-decoration: underline; }"+ , "code.sourceCode > span > a:first-child::before { text-decoration: underline; }" , "}" ]
+ xml/elm.xml view
@@ -0,0 +1,143 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language SYSTEM "language.dtd">+<language name="Elm" version="1" kateversion="5.0" section="Sources" extensions="*.elm" author="Bonghyun Kim (bonghyun.d.kim@gmail.com)" license="MIT" style="elm">+ <highlighting>+ <list name="declarations">+ <item>type</item>+ <item>alias</item>+ <item>port</item>+ </list>+ <list name="controlFlows">+ <item>case</item>+ <item>of</item>+ <item>if</item>+ <item>else</item>+ <item>then</item>+ </list>+ <list name="letExpressions">+ <item>let</item>+ <item>in</item>+ </list>+ <list name="imports">+ <item>module</item>+ <item>exposing</item>+ <item>import</item>+ <item>as</item>+ </list>+ <list name="infixes">+ <item>infix</item>+ <item>left</item>+ <item>right</item>+ <item>non</item>+ </list>+ <list name="effects">+ <item>effect</item>+ <item>where</item>+ <item>command</item>+ <item>subscription</item>+ </list>+ <contexts>+ <context attribute="Normal" lineEndContext="#stay" name="code">+ <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" />+ <Detect2Chars attribute="Comment" context="comment" char="-" char1="-" />+ <WordDetect attribute="Comment" context="documentation" String="{-|" />++ <keyword attribute="Keyword" context="#stay" String="declarations" />+ <keyword attribute="Keyword" context="#stay" String="letExpressions" />+ <keyword attribute="Keyword" context="#stay" String="effects" />+ <keyword attribute="Keyword" context="#stay" String="imports" />+ <keyword attribute="Keyword" context="#stay" String="infixes" />+ <keyword attribute="ControlFlowKeyword" context="#stay" String="controlFlows" />++ <WordDetect attribute="Import" context="module" String="module" />+ <WordDetect attribute="Port" context="port" String="port" />+ <WordDetect attribute="Import" context="import" String="import" />++ <RegExpr attribute="Name" context="#stay" String="(\b[a-z]\w*|\b_\b)" />+ <RegExpr attribute="Operator" context="#stay" String="(->|::|\/\/|\.\.|&&|\|\||\+\+|\|>|<\||>>|<<|==|\/=|<=|>=)" />+ <RegExpr attribute="Operator" context="#stay" String="[+-\/*%=><^\|!]" />+ <RegExpr attribute="Operator" context="#stay" String="[@\#$&~?]" />++ <RegExpr attribute="Type" context="#stay" String="\b[A-Z][\w]*" />++ <Int attribute="Decimal" context="#stay" />+ <RegExpr attribute="Hex" context="#stay" String="0x[\da-f]+" insensitive="true" />+ <RegExpr attribute="Float" context="#stay" String="\d+\.\d+(e[+-]?\d+)?" insensitive="true" />++ <RegExpr attribute="Char" context="#stay" String="'(.|\\'|\\n|\\r|\\t|\\"|\\\\|\\u\{(10|0?[0-9])[0-9a-fA-F]{4}\})'" />+ <DetectChar attribute="String" context="string" char=""" />+ <RegExpr attribute="String" context="multilineString" String="""""/>+ </context>+ <context attribute="Comment" lineEndContext="#pop" name="comment">+ </context>+ <context attribute="Comment" lineEndContext="#stay" name="comments">+ <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" />+ <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=""" />+ </context>+ <context attribute="String" lineEndContext="#stay" name="multilineString">+ <RegExpr attribute="String" context="#stay" String="\s*" />+ <RegExpr attribute="String" context="#stay" String="\.*" />+ <StringDetect attribute="String" context="#pop" String=""""" />+ </context>+ <context attribute="Normal" lineEndContext="#stay" name="module">+ <DetectChar attribute="Normal" context="moduleParentheses" char="(" />+ <keyword attribute="Keyword" context="#stay" String="imports" />+ <RegExpr attribute="Name" context="#stay" String="\b[a-z][\w]*" />+ <RegExpr attribute="Type" context="#stay" String="\b[A-Z][\w]*" />+ <DetectChar attribute="Normal" context="#pop" char=")" />+ </context>+ <context attribute="Normal" lineEndContext="#stay" name="moduleParentheses">+ <DetectChar attribute="Normal" context="moduleParentheses" char="(" />+ <RegExpr attribute="Name" context="#stay" String="\b[a-z][\w]*" />+ <RegExpr attribute="Type" context="#stay" String="\b[A-Z][\w]*" />+ <DetectChar attribute="Normal" context="#pop" char=")" />+ </context>+ <context attribute="Normal" lineEndContext="#stay" name="port">+ <WordDetect attribute="Import" context="module" String="imports" />+ </context>+ <context attribute="Normal" lineEndContext="#stay" name="import">+ <DetectChar attribute="Normal" context="moduleParentheses" char="(" />+ <keyword attribute="Keyword" context="#stay" String="imports" />+ <RegExpr attribute="Name" context="#stay" String="\b[a-z][\w]*" />+ <RegExpr attribute="Type" context="#stay" String="\b[A-Z][\w]*" />+ <DetectChar attribute="Normal" context="#pop" char=")" />+ </context>+ <context attribute="Comment" lineEndContext="#stay" name="documentation">+ <WordDetect attribute="Comment" context="#stay" String="@docs" />+ <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" />+ </context>+ </contexts>++ <itemDatas>+ <itemData name="Normal" defStyleNum="dsNormal" spellChecking="false" />+ <itemData name="Comment" defStyleNum="dsComment" />++ <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false" />+ <itemData name="ControlFlowKeyword" defStyleNum="dsControlFlow" spellChecking="false" />++ <itemData name="Name" defStyleNum="dsFunction" spellChecking="false" />+ <itemData name="Port" defStyleNum="dsNormal" spellChecking="false" />+ <itemData name="Import" defStyleNum="dsImport" spellChecking="false" />+ <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false" />+ <itemData name="Type" defStyleNum="dsDataType" spellChecking="false" />++ <itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false" />+ <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false" />+ <itemData name="Float" defStyleNum="dsFloat" spellChecking="false" />+ <itemData name="Char" defStyleNum="dsChar" spellChecking="false" />+ <itemData name="String" defStyleNum="dsString" />+ </itemDatas>+ </highlighting>+ <general>+ <folding indentationsensitive="1"/>+ <comments>+ <comment name="singleLine" start="--" />+ <comment name="multiLine" start="{-" end="-}" />+ </comments>+ <keywords casesensitive="1" />+</general>+</language>