diff options
Diffstat (limited to 'kate/data/julia.xml')
-rw-r--r-- | kate/data/julia.xml | 291 |
1 files changed, 291 insertions, 0 deletions
diff --git a/kate/data/julia.xml b/kate/data/julia.xml new file mode 100644 index 000000000..29f0a7635 --- /dev/null +++ b/kate/data/julia.xml @@ -0,0 +1,291 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ==================================================================== + Julia syntax highlighting file for the TDE editors Kate and Kwrite + ==================================================================== + + This was adapted from the Matlab syntax highlighting file + + Most of this XML file is straightforward. Only the character ' (') + needs nontrivial treatment, since it is both a postfix operator indicating + complex conjugate transpose (adjoint) and a character 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 ' + Otherwise it is a character 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. + + Author: Timothy E. Holy, Washington University in St. Louis +--> + +<!DOCTYPE language SYSTEM "language.dtd"> + +<language name="Julia" section="Sources" version="0.3" kateversion="2.5" extensions="*.jl" casesensitive="1" priority="5" license="MIT"> + + <highlighting> + <list name="block_begin"> + <item> begin </item> + <item> do </item> + <item> for </item> + <item> function </item> + <item> if </item> + <item> let </item> + <item> quote </item> + <item> try </item> + <item> type </item> + <item> while </item> + </list> + <list name="block_eb"> + <item> catch </item> + <item> else </item> + <item> elseif </item> + </list> + <list name="block_end"> + <item> end </item> + </list> + <list name="keywords"> + <item> abstract </item> + <item> bitstype </item> + <item> break </item> + <item> ccall </item> + <item> const </item> + <item> continue </item> + <item> export </item> + <item> global </item> + <item> import </item> + <item> in </item> + <item> local </item> + <item> macro </item> + <item> module </item> + <item> return </item> + <item> typealias </item> + </list> + <list name="types"> + <item> AbstractArray </item> + <item> AbstractMatrix </item> + <item> AbstractVector </item> + <item> Any </item> + <item> Array </item> + <item> ASCIIString </item> + <item> Associative </item> + <item> Bool </item> + <item> ByteString </item> + <item> Char </item> + <item> Complex </item> + <item> Complex64 </item> + <item> Complex128 </item> + <item> ComplexPair </item> + <item> DArray </item> + <item> Dict </item> + <item> Exception </item> + <item> Expr </item> + <item> Float </item> + <item> Float32 </item> + <item> Float64 </item> + <item> Function </item> + <item> ObjectIdDict </item> + <item> Int </item> + <item> Int8 </item> + <item> Int16 </item> + <item> Int32 </item> + <item> Int64 </item> + <item> Integer </item> + <item> IntSet </item> + <item> IO </item> + <item> IOStream </item> + <item> Matrix </item> + <item> Nothing </item> + <item> None </item> + <item> NTuple </item> + <item> Number </item> + <item> Ptr </item> + <item> Range </item> + <item> Range1 </item> + <item> Ranges </item> + <item> Rational </item> + <item> Real </item> + <item> Regex </item> + <item> RegexMatch </item> + <item> Set </item> + <item> Signed </item> + <item> StridedArray </item> + <item> StridedMatrix </item> + <item> StridedVecOrMat </item> + <item> StridedVector </item> + <item> String </item> + <item> SubArray </item> + <item> SubString </item> + <item> Symbol </item> + <item> Task </item> + <item> Tuple </item> + <item> Type </item> + <item> Uint </item> + <item> Uint8 </item> + <item> Uint16 </item> + <item> Uint32 </item> + <item> Uint64 </item> + <item> Union </item> + <item> Unsigned </item> + <item> UTF8String </item> + <item> VecOrMat </item> + <item> Vector </item> + <item> Void </item> + <item> WeakRef </item> + </list> + <contexts> + + <context name="_normal" attribute="Normal Text" lineEndContext="#stay"> + + <DetectSpaces /> + + <!-- Blocks --> + <keyword context="#stay" attribute="Keyword" String="block_begin" +beginRegion="block" /> + <keyword context="#stay" attribute="Keyword" String="block_eb" +endRegion="block" beginRegion="block" /> + <keyword context="#stay" attribute="Keyword" String="block_end" +endRegion="block" /> + <StringDetect String="#BEGIN" context="region_marker" attribute="FoldingComment" beginRegion="user_region" /> + <StringDetect String="#END" context="region_marker" attribute="FoldingComment" endRegion="user_region" /> + + <!-- Keywords, types, and comments --> + <keyword context="#stay" attribute="Keyword" String="keywords" /> + <keyword context="#stay" attribute="Data Type" String="types" /> + <DetectChar char="#" context="1-comment" attribute="Comment"/> + + <!-- Lists and arrays --> + <!-- <DetectChar char="(" context="nested" beginRegion="nested" attribute="Delimiter" /> + <DetectChar char="[" context="squared" beginRegion="squared" attribute="Delimiter" /> + <DetectChar char="{" context="curly" beginRegion="curly" attribute="Delimiter" /> --> + + <!-- Strings --> + <DetectChar attribute="String" context="String" char="""/> + + <!-- Multi-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=">>"/> + <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=">="/> + <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="./"/> + <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="/="/> + <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=">>="/> + <StringDetect context="#stay" attribute="Operator" String="<<="/> + + <!-- 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="Float" String="(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?(im)?(?=')" /> + <RegExpr context="_adjoint" attribute="Delimiter" String="[\)\]}](?=')" /> + <RegExpr context="_adjoint" attribute="Operator" String="\.'(?=')" /> + + <!-- If ' is not the adjoint operator, it starts a character or an unterminated char --> + <RegExpr context="#stay" attribute="Char" String="'[^']*(''[^']*)*'(?=[^']|$)" /> + <RegExpr context="#stay" attribute="Incomplete Char" String="'[^']*(''[^']*)*" /> + + <!-- Identifiers, numbers and braces --> + <!-- We can't use HlCHex, Int, and Float because we need to allow the "im" at the end of complex numbers --> + <DetectIdentifier context="#stay" attribute="Variable" /> + <RegExpr context="#stay" attribute="Hex" String="0x[0-9a-fA-F]+(im)?" /> + <RegExpr context="#stay" attribute="Float" String="(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?(im)?" /> + <AnyChar context="#stay" attribute="Delimiter" String="()[]{}"/> + + <!-- Single-character operators --> + <AnyChar context="#stay" attribute="Operator" String="*+-/\&|<>~$!^=,;:@"/> + + </context> + + <!-- Context for user block (#BEGIN...#END) --> + <context name="region_marker" lineEndContext="#pop" attribute="FoldingComment" > + <IncludeRules context="1-comment" /> + </context> + + <!-- Contexts entered after beginning a list or array --> + <context name="nested" attribute="Normal text" lineEndContext="#stay"> + <DetectChar char=")" context="#pop" endRegion="nested" attribute="Delimiter" /> + </context> + <context name="squared" attribute="Normal text" lineEndContext="#stay"> + <DetectChar char="]" context="#pop" endRegion="squared" attribute="Delimiter" /> + </context> + <context name="curly" attribute="Normal text" lineEndContext="#stay"> + <DetectChar char="}" context="#pop" endRegion="curly" attribute="Delimiter" /> + </context> + + <!-- Context entered after encountering an ' adjoint operator --> + <context name="_adjoint" attribute="Operator" lineEndContext="#pop"> + <RegExpr context="#pop" attribute="Operator" String="'+" /> + </context> + + <!-- Context entered after encountering an " (string) --> + <context attribute="String" lineEndContext="#pop" name="String"> + <DetectSpaces /> + <DetectIdentifier /> + <LineContinue attribute="String" context="#stay"/> + <HlCStringChar attribute="String Char" context="#stay"/> + <DetectChar attribute="String" context="#pop" char="""/> + </context> + + <!-- 1-line comment: #pop@EOL --> + <context name="1-comment" lineEndContext="#pop" attribute="Comment"> + <DetectSpaces /> + <DetectIdentifier /> + </context> + + </contexts> + + <itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal" /> + <itemData name="Variable" defStyleNum="dsNormal" /> + <itemData name="Operator" defStyleNum="dsNormal"/> + <itemData name="Decimal" defStyleNum="dsDecVal" /> + <itemData name="Float" defStyleNum="dsFloat" /> + <itemData name="Hex" defStyleNum="dsBaseN" /> + <itemData name="Delimiter" defStyleNum="dsNormal" /> + <itemData name="String" defStyleNum="dsString"/> + <itemData name="Char" defStyleNum="dsChar"/> + <itemData name="Incomplete Char" defStyleNum="dsChar"/> + <itemData name="System" defStyleNum="dsBaseN"/> + <itemData name="Keyword" defStyleNum="dsKeyword"/> + <itemData name="Data Type" defStyleNum="dsDataType"/> + <itemData name="Comment" defStyleNum="dsComment"/> + <itemData name="Comment" defStyleNum="dsComment"/> + <itemData name="FoldingComment" defStyleNum="dsComment" /> + </itemDatas> + + </highlighting> + + <general> + <comments> + <comment name="singleLine" start="#" /> + </comments> + <keywords casesensitive="1" weakDeliminator=""/> + </general> + +</language> + +<!-- It's recommended to put the following line in the Variables field under Settings->Configure Kate->Open/Save->Modes&Filetypes --> +<!-- kate: space-indent on; indent-width 4; mixed-indent off; indent-mode cstyle; --> |