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.
This commit is contained in:
John MacFarlane 2017-11-28 13:35:49 -08:00
parent 00561b1bb9
commit 845b6c8670
2 changed files with 36 additions and 3 deletions

View file

@ -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*

View file

@ -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 ->