Commits

ehamberg  committed 1971f6f

some improvements to the haskell syntax highlighting

* fix single-line comment rules
* highlight imported modules
* highlight more functions

BUG: 205753

svn path=/trunk/KDE/kdelibs/kate/; revision=1017669

  • Participants
  • Parent commits d396ff5

Comments (0)

Files changed (3)

File part/syntax/data/haskell.xml

 <language name="Haskell" version="1.3" kateversion="2.3" section="Sources" extensions="*.hs" mimetype="text/x-haskell" author="Marcel Martin (mmar@freenet.de)" license="" indenter="haskell">
 	<highlighting>
 	<list name="keywords">
+		<item> as </item>
 		<item> case </item>
 		<item> class </item>
 		<item> data </item>
 		<item> module </item>
 		<item> of </item>
 		<item> primitive </item>
+		<item> qualified </item>
 		<item> then </item>
 		<item> type </item>
 		<item> where </item>
 		<item> getChar </item>
 		<item> getContents </item>
 		<item> getLine </item>
+		<item> group </item>
 		<item> head </item>
 		<item> id </item>
 		<item> inRange </item>
 		<item> sin </item>
 		<item> sinh </item>
 		<item> snd </item>
+		<item> sort </item>
 		<item> span </item>
 		<item> splitAt </item>
 		<item> sqrt </item>
 	<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="Comment" context="comment_single_line" String="--$" />
+			<RegExpr attribute="Comment" context="comment_single_line"
+				String="--[ A-Za-z0-9\-,;`].*$" />
+			<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" />
 	</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"/>

File part/syntax/data/haskell.xml.orig

+<?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.3" kateversion="2.3" section="Sources" extensions="*.hs" mimetype="text/x-haskell" author="Marcel Martin (mmar@freenet.de)" license="" indenter="haskell">
+	<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> 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> 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> group </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> pack </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> sort </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>
+		<item> ByteString </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>

File part/syntax/data/haskell.xml.rej

+***************
+*** 11,16 ****
+  		<item> do </item>
+  		<item> else </item>
+  		<item> if </item>
+  		<item> in </item>
+  		<item> infixl </item>
+  		<item> infixr </item>
+--- 12,18 ----
+  		<item> do </item>
+  		<item> else </item>
+  		<item> if </item>
++         <item> import </item>
+  		<item> in </item>
+  		<item> infixl </item>
+  		<item> infixr </item>