highlighting-kate 0.2.3 → 0.2.4
raw patch · 8 files changed
+443/−20 lines, 8 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- ParseSyntaxFiles.hs +16/−10
- README +1/−0
- Text/Highlighting/Kate.hs +1/−1
- Text/Highlighting/Kate/Syntax/LiterateHaskell.hs +2/−2
- changelog +33/−4
- highlighting-kate.cabal +2/−1
- xml/literate-haskell.xml +2/−2
- xml/literate-haskell.xml.bkp +386/−0
ParseSyntaxFiles.hs view
@@ -1,4 +1,4 @@-{-# OPTIONS -farrows #-}+{-# LANGUAGE Arrows #-} {- ParseSyntaxFiles.hs processes a directory containing Kate@@ -22,7 +22,6 @@ 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@@ -83,25 +82,32 @@ } deriving (Read, Show) +-- | Converts a list of files (ending in .xml) and directories containing .xml files+-- into a list of .xml files.+argFiles :: [String] -> IO [String]+argFiles [] = error "Specify paths of xml files and/or directories containing xml syntax files."+argFiles args = do+ let isXmlFile x = isSuffixOf ".xml" x+ let (files, dirs) = partition isXmlFile args+ dirContents <- mapM (\dir -> getDirectoryContents dir >>= return . map (combine dir) . filter isXmlFile) dirs+ return $ nub (files ++ concat dirContents)++ 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)+ files <- getArgs >>= argFiles destDirExists <- doesDirectoryExist destDir if destDirExists then return () else createDirectory destDir - mapM processOneFile files >> return ()+ mapM_ processOneFile files let syntaxFile = combine libraryPath (addExtension "Syntax" "hs") putStrLn $ "Writing " ++ syntaxFile- let names = sort $ map nameFromPath files + -- Get all syntax files, not only the newly generated ones.+ names <- getDirectoryContents destDir >>= return . sort . map dropExtension . filter (isSuffixOf ".hs") 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
README view
@@ -71,6 +71,7 @@ - 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+- literate-haskell.xml: Fixed single line comments and growing context stack 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
Text/Highlighting/Kate.hs view
@@ -35,4 +35,4 @@ import Text.Highlighting.Kate.Syntax ( highlightAs, languages, languagesByExtension ) import Text.Highlighting.Kate.Definitions ( SourceLine, LabeledSource ) -highlightingKateVersion = "0.2.3"+highlightingKateVersion = "0.2.4"
Text/Highlighting/Kate/Syntax/LiterateHaskell.hs view
@@ -50,8 +50,8 @@ context <- currentContext case context of "literate-normal" -> return ()- "normal" -> pushContext "literate-normal"- "comment_single_line" -> (popContext >> return ())+ "normal" -> (popContext >> return ())+ "comment_single_line" -> (popContext >> popContext >> return ()) "comment_multi_line" -> return () "string" -> return () "infix" -> return ()
changelog view
@@ -1,10 +1,39 @@-highlighting-kate (0.2.1)+highlighting-kate 0.2.4 (15 Mar 2009) + * Fixed bug in literate-haskell-xml. Also fixed now upstream.+ (Bjorn Buckwalter)++ * Modified ParseSyntaxFiles.hs to allow regeneration of individual+ syntax files. With the change ParseSyntaxFiles accepts any number of+ arguments. Those ending with .xml are assumed to be files while the+ rest are assumed to be directories containing .xml files.+ The syntaxes included in Syntax.hs are based on the contents of+ destDir rather than the arguments, this allows regenerating a subset+ of syntaxes but still having all syntaxes in Syntax.hs. (Bjorn Buckwalter)++ * ParseSyntaxFiles.hs: Change deprecated pragma, remove obsolete import.+ (Bjorn Buckwalter)++highlighting-kate 0.2.3 (9 Jul 2008)++ * Removed -O2 in Ghc-Options, as it provides very little speedup++highlighting-kate 0.2.2 (9 Jul 2008)++ * Added Cc-options -O0 to cabal file. This is needed to prevent+ gcc from using enormous amounts of memory on platforms+ that lack a native code generator and compile via C. See+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=469893.++ * Depend on parsec < 3, because parsec 3 is much slower.++ * normalizeHighlighting now strips out empty strings++highlighting-kate 0.2.1 (10 Feb 2008)+ * Implemented lookAhead in parsers, which fixed bugs in perl, bash, and other parsers. -highlighting-kate 0.2+highlighting-kate 0.2 (10 Feb 2008) * Initial release- - -- John MacFarlane <jgm@berkeley.edu> 10 Feb 2008
highlighting-kate.cabal view
@@ -1,5 +1,5 @@ Name: highlighting-kate-Version: 0.2.3+Version: 0.2.4 Cabal-Version: >= 1.2 Build-Type: Simple Category: Text@@ -68,6 +68,7 @@ xml/latex.xml xml/lex.xml xml/literate-haskell.xml+ xml/literate-haskell.xml.bkp xml/lua.xml xml/makefile.xml xml/matlab.xml
xml/literate-haskell.xml view
@@ -327,7 +327,7 @@ <context attribute="Comment" lineEndContext="#stay" name="literate-normal"> <DetectChar attribute="Special" context="normal" char=">" column="0"/> </context>- <context attribute="Normal Text" lineEndContext="literate-normal" name="normal">+ <context attribute="Normal Text" lineEndContext="#pop" 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" />@@ -343,7 +343,7 @@ <Float attribute="Float" context="#stay" /> <Int attribute="Decimal" context="#stay" /> </context>- <context attribute="Comment" lineEndContext="#pop" name="comment_single_line" />+ <context attribute="Comment" lineEndContext="#pop#pop" name="comment_single_line" /> <context attribute="Comment" lineEndContext="#stay" name="comment_multi_line"> <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" /> </context>
+ xml/literate-haskell.xml.bkp view
@@ -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=">" 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=""" />+ <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=""" />+ </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>