1
1
mirror of https://github.com/walles/moar.git synced 2024-09-19 07:58:00 +03:00

Adapt to LESS_TERMCAP_md and LESS_TERMCAP_us

Fixes #14
This commit is contained in:
Johan Walles 2019-10-30 20:29:29 +01:00
parent a7cba8bb16
commit 6334be7dcc
2 changed files with 25 additions and 0 deletions

View File

@ -3,6 +3,7 @@ package m
import (
"fmt"
"log"
"os"
"regexp"
"strconv"
"strings"
@ -21,6 +22,28 @@ type Token struct {
Style tcell.Style
}
// SetManPageFormatFromEnv parses LESS_TERMCAP_xx environment variables and
// adapts the moar output accordingly.
func SetManPageFormatFromEnv(logger *log.Logger) {
// Requested here: https://github.com/walles/moar/issues/14
lessTermcapMd := os.Getenv("LESS_TERMCAP_md")
if lessTermcapMd != "" {
manPageBold = _TermcapToStyle(logger, lessTermcapMd)
}
lessTermcapUs := os.Getenv("LESS_TERMCAP_us")
if lessTermcapUs != "" {
manPageUnderline = _TermcapToStyle(logger, lessTermcapUs)
}
}
func _TermcapToStyle(logger *log.Logger, termcap string) tcell.Style {
// Add a character to be sure we have one to take the format from
tokens, _ := TokensFromString(logger, termcap+"x")
return tokens[len(tokens)-1].Style
}
// TokensFromString turns a (formatted) string into a series of tokens,
// and an unformatted string
func TokensFromString(logger *log.Logger, s string) ([]Token, *string) {

View File

@ -576,6 +576,8 @@ func (p *Pager) StartPaging(logger *log.Logger, screen tcell.Screen) {
// We want to match the terminal theme, see screen.Init() source code
os.Setenv("TCELL_TRUECOLOR", "disable")
SetManPageFormatFromEnv(logger)
if e := screen.Init(); e != nil {
fmt.Fprintf(os.Stderr, "%v\n", e)
os.Exit(1)