git.iko.soy/typeable/pandoc
on master help sign in
LaTeX reader: Handle language attribute for lstlistings.
8b3a81eJohn MacFarlane
src/Text/Pandoc/Highlighting.hs+2−1
@@ -87,7 +87,8 @@ langToListingsMap :: M.Map String String
87langToListingsMap = M.fromList langsList
87langToListingsMap = M.fromList langsList
88
88
89listingsToLangMap :: M.Map String String
89listingsToLangMap :: M.Map String String
90−listingsToLangMap = M.fromList $ reverse langsList
90+listingsToLangMap = M.fromList $ map switch langsList
91+ where switch (a,b) = (b,a)
91
92
92langsList :: [(String, String)]
93langsList :: [(String, String)]
93langsList = [("ada","Ada")
94langsList = [("ada","Ada")
src/Text/Pandoc/Readers/LaTeX.hs+5−2
@@ -52,6 +52,7 @@ import Data.List (intercalate)
52import qualified Data.Map as M
52import qualified Data.Map as M
53import qualified Control.Exception as E
53import qualified Control.Exception as E
54import System.FilePath (takeExtension, addExtension)
54import System.FilePath (takeExtension, addExtension)
55+import Text.Pandoc.Highlighting (fromListingsLanguage)
55
56
56-- | Parse LaTeX from string and return 'Pandoc' document.
57-- | Parse LaTeX from string and return 'Pandoc' document.
57readLaTeX :: ReaderOptions -- ^ Reader options
58readLaTeX :: ReaderOptions -- ^ Reader options
@@ -819,11 +820,13 @@ environments = M.fromList
819 , ("verbatim", codeBlock <$> (verbEnv "verbatim"))
820 , ("verbatim", codeBlock <$> (verbEnv "verbatim"))
820 , ("Verbatim", codeBlock <$> (verbEnv "Verbatim"))
821 , ("Verbatim", codeBlock <$> (verbEnv "Verbatim"))
821 , ("lstlisting", do options <- option [] keyvals
822 , ("lstlisting", do options <- option [] keyvals
822− let classes = [ "numberLines" |
823− lookup "numbers" options == Just "left" ]
824 let kvs = [ (if k == "firstnumber"
823 let kvs = [ (if k == "firstnumber"
825 then "startFrom"
824 then "startFrom"
826 else k, v) | (k,v) <- options ]
825 else k, v) | (k,v) <- options ]
826+ let classes = [ "numberLines" |
827+ lookup "numbers" options == Just "left" ]
828+ ++ maybe [] (:[]) (lookup "language" options
829+ >>= fromListingsLanguage)
827 let attr = ("",classes,kvs)
830 let attr = ("",classes,kvs)
828 codeBlockWith attr <$> (verbEnv "lstlisting"))
831 codeBlockWith attr <$> (verbEnv "lstlisting"))
829 , ("minted", liftA2 (\l c -> codeBlockWith ("",[l],[]) c)
832 , ("minted", liftA2 (\l c -> codeBlockWith ("",[l],[]) c)