diff --git a/commands/hugo.go b/commands/hugo.go index 8d18b6252..369403ddb 100644 --- a/commands/hugo.go +++ b/commands/hugo.go @@ -110,6 +110,8 @@ func InitializeConfig() { viper.SetDefault("Indexes", map[string]string{"tag": "tags", "category": "categories"}) viper.SetDefault("Permalinks", make(hugolib.PermalinkOverrides, 0)) viper.SetDefault("Sitemap", hugolib.Sitemap{Priority: -1}) + viper.SetDefault("PygmentsStyle", "monokai") + viper.SetDefault("PygmentsUseClasses", false) if hugoCmdV.PersistentFlags().Lookup("build-drafts").Changed { viper.Set("BuildDrafts", Draft) @@ -134,7 +136,6 @@ func InitializeConfig() { if hugoCmdV.PersistentFlags().Lookup("logfile").Changed { viper.Set("LogFile", LogFile) } - if BaseUrl != "" { if !strings.HasSuffix(BaseUrl, "/") { BaseUrl = BaseUrl + "/" diff --git a/docs/content/extras/highlighting.md b/docs/content/extras/highlighting.md index 534b973c4..0f82202bc 100644 --- a/docs/content/extras/highlighting.md +++ b/docs/content/extras/highlighting.md @@ -27,13 +27,13 @@ silently simply pass the content along unhighlighted. * **Warning** pygments is relatively slow and our integration isn't as optimized as it could be. Expect much longer build times when using server side highlighting. * Languages available depends on your pygments installation. - * While pygments supports a few different output formats and options we currently -only support output=html, style=monokai, noclasses=true, and encoding=utf-8. * Styles are inline in order to be supported in syndicated content when references to style sheets are not carried over. * We have sought to have the simplest interface possible, which consequently limits configuration. An ambitious user is encouraged to extend the current functionality to offer more customization. +* You can change appearance with config options `pygmentsstyle`(default +`"monokai"`) and `pygmentsuseclasses`(defaut `false`). ### Usage Highlight takes exactly one required parameter of language and requires a diff --git a/helpers/pygments.go b/helpers/pygments.go index 46eb879e5..2ff500da3 100644 --- a/helpers/pygments.go +++ b/helpers/pygments.go @@ -15,10 +15,12 @@ package helpers import ( "bytes" + "fmt" "os/exec" "strings" jww "github.com/spf13/jwalterweatherman" + "github.com/spf13/viper" ) func Highlight(code string, lexer string) string { @@ -32,8 +34,15 @@ func Highlight(code string, lexer string) string { var out bytes.Buffer var stderr bytes.Buffer + style := viper.GetString("PygmentsStyle") - cmd := exec.Command(pygmentsBin, "-l"+lexer, "-fhtml", "-O style=monokai,noclasses=true,encoding=utf-8") + noclasses := "true" + if viper.GetBool("PygmentsUseClasses") { + noclasses = "false" + } + + cmd := exec.Command(pygmentsBin, "-l"+lexer, "-fhtml", "-O", + fmt.Sprintf("style=%s,noclasses=%s,encoding=utf8", style, noclasses)) cmd.Stdin = strings.NewReader(code) cmd.Stdout = &out cmd.Stderr = &stderr