summaryrefslogtreecommitdiffstats
path: root/kate/tests/highlight.lhs
blob: 9dc52e570bcd74774f5ab290739ba393925a27d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
test file for Haskell syntax highlighting in KDE's Kate

The test file for literate Haskell can be easily created like this:
 cat highlight.hs | sed -e "s|^|> |" -e "s|> -- ||" -e "s|^> $||" > highlight.lhs
You only have to manually edit the multi-line comment below.

this is a single-line comment

{- this is a multi-line comment

Things like "a string" or a 'c' character shouldn't be highlighted in here.

I could even start a new
one-line comment.

-}

a data definition

> data Tree a = Br (Tree a) (Tree a) | Leaf a | Nil deriving (Show, Eq)


function definition, "funnyfunction::", "Integer", "Int", "Bool" should be highlighted

> funnyfunction::(Tree a)=>[a]->Integer->Int->Bool


strings and chars
first line of function definitions (type declaration) should be highlighted

> strangefunction::Int->String
> strangefunction 1 = "hello"
> strangefunction 2 = "what's up"
> strangefunction 3 = (strangefunction 1) ++ ", " ++ (strangefunction 2)
> strangefunction 4 = 'a':'b':'c':'"':[] -- will return "abc"
> strangefunction 5 = '\n':[]
> strangefunction 6 = '\invalidhaskell':[]

function name including the single quote character
and infix operator (`div`)

> justtesting'::Int->Int
> justtesting' 2 = 2+1
> justtesting' 9 = 7 `div` 2

same definition as above, slightly different function name and a couple more whitespaces

> justtesting''	::	Int -> Int
> justtesting''   2 = 3
> justtesting''	9	=   3 + 9 - 9

the following lines are copied out of Haskell's "Prelude.hs"

> infixl 7  *, /, `quot`, `rem`, `div`, `mod`, :%, %


everything highlighted except the "a"

> class Bounded a where
>     minBound, maxBound :: a

> class (Num a, Ord a) => Real a where
>     toRational     :: a -> Rational

finally, some keyword lists

keywords

> case, class, data, deriving, do, else, if, in, infixl, infixr, instance, let, module, of, primitive,
> then, type, where

infix operators

> quot, rem, div, mod, elem, notElem, seq

this stuff is not handled yet

> !!, %, &&, $!, $, *, **, -,., /=, <, <=, =<<, ==, >, >=, >>, >>=, ^, ^^, ++, ||

functions

> 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,
> either, elem, encodeFloat, enumFrom, enumFromThen, enumFromThenTo,
> enumFromTo, error, even, exp, exponent, fail, filter, flip, floatDigits,
> floatRadix, floatRange, floor, fmap, 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

type constructors

> Bool, Char, Double, Either, Float, IO, Integer, Int, Maybe, Ordering, Rational, Ratio, ReadS,
> ShowS, String

classes

> Bounded, Enum, Eq, Floating, Fractional, Functor, Integral, Ix, Monad, Num, Ord, Read, RealFloat,
> RealFrac, Real, Show

data constructors

> EQ, False, GT, Just, LT, Left, Nothing, Right, True