summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2017-11-28 13:35:49 -0800
committerJohn MacFarlane <jgm@berkeley.edu>2017-11-28 13:35:49 -0800
commit845b6c8670a6d1a11c1a31ec15ec2f0831883cbe (patch)
tree600be732d34508be96fa568fe514c0430cd0cfe3
parent00561b1bb956a5b4de291e80001cf752c38c4549 (diff)
Added --print-highlight-style option.
This generates a JSON version of a highlighting style, which can be saved as a .theme file, modified, and used with `--highlight-style`. Closes #4106. Closes #4096.
-rw-r--r--MANUAL.txt12
-rw-r--r--src/Text/Pandoc/App.hs27
2 files changed, 36 insertions, 3 deletions
diff --git a/MANUAL.txt b/MANUAL.txt
index c22d18bac..e8fdf9375 100644
--- a/MANUAL.txt
+++ b/MANUAL.txt
@@ -685,8 +685,16 @@ General writer options
Instead of a *STYLE* name, a JSON file with extension
`.theme` may be supplied. This will be parsed as a KDE
syntax highlighting theme and (if valid) used as the
- highlighting style. To see a sample theme that can be
- modified, `pandoc --print-default-data-file default.theme`.
+ highlighting style.
+
+ To generate the JSON version of an existing style,
+ use `--print-highlight-style`.
+
+`--print-highlight-style=`*STYLE*|*FILE*
+
+: Prints a JSON version of a highlighting style, which can
+ be modified, saved with a `.theme` extension, and used
+ with `--highlight-style`.
`--syntax-definition=`*FILE*
diff --git a/src/Text/Pandoc/App.hs b/src/Text/Pandoc/App.hs
index 3c52e4247..f1c21c69a 100644
--- a/src/Text/Pandoc/App.hs
+++ b/src/Text/Pandoc/App.hs
@@ -63,7 +63,10 @@ import qualified Data.Yaml as Yaml
import GHC.Generics
import Network.URI (URI (..), parseURI)
import Paths_pandoc (getDataDir)
-import Skylighting (Style, Syntax (..), defaultSyntaxMap, parseTheme)
+import Data.Aeson.Encode.Pretty (encodePretty', Config(..), keyOrder,
+ defConfig, Indent(..), NumberFormat(..))
+import Skylighting (Style, Syntax (..), defaultSyntaxMap, parseTheme,
+ pygments)
import Skylighting.Parser (addSyntaxDefinition, missingIncludes,
parseSyntaxDefinition)
import System.Console.GetOpt
@@ -1047,6 +1050,28 @@ options =
"FILE")
"" -- "Print default data file"
+ , Option "" ["print-highlight-style"]
+ (ReqArg
+ (\arg _ -> do
+ sty <- fromMaybe pygments <$>
+ lookupHighlightStyle (Just arg)
+ B.putStr $ encodePretty'
+ defConfig{confIndent = Spaces 4
+ ,confCompare = keyOrder
+ (map T.pack
+ ["text-color"
+ ,"background-color"
+ ,"line-numbers"
+ ,"bold"
+ ,"italic"
+ ,"underline"
+ ,"text-styles"])
+ ,confNumFormat = Generic
+ ,confTrailingNewline = True} sty
+ exitSuccess)
+ "STYLE|FILE")
+ "" -- "Print default template for FORMAT"
+
, Option "" ["dpi"]
(ReqArg
(\arg opt ->