mirror of
https://github.com/kovidgoyal/kitty.git
synced 2026-05-13 16:37:27 +00:00
Handle backslash escapes in :code: blocks
This commit is contained in:
parent
5d3a9f2628
commit
4969611bdb
1 changed files with 24 additions and 1 deletions
|
|
@ -7,6 +7,7 @@ import (
|
|||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"unicode"
|
||||
|
||||
"kitty"
|
||||
"kitty/tools/utils"
|
||||
|
|
@ -50,6 +51,28 @@ func New(allow_escape_codes bool) *Context {
|
|||
return &ans
|
||||
}
|
||||
|
||||
func remove_backslash_escapes(text string) string {
|
||||
// see https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#escaping-mechanism
|
||||
out := strings.Builder{}
|
||||
prev_was_slash := false
|
||||
out.Grow(len(text))
|
||||
for _, ch := range text {
|
||||
if prev_was_slash {
|
||||
if !unicode.IsSpace(ch) {
|
||||
out.WriteRune(ch)
|
||||
}
|
||||
prev_was_slash = false
|
||||
} else {
|
||||
if ch == '\\' {
|
||||
prev_was_slash = true
|
||||
} else {
|
||||
out.WriteRune(ch)
|
||||
}
|
||||
}
|
||||
}
|
||||
return out.String()
|
||||
}
|
||||
|
||||
func replace_all_rst_roles(str string, repl func(rst_format_match) string) string {
|
||||
var m rst_format_match
|
||||
rf := func(full_match string, groupdict map[string]utils.SubMatch) string {
|
||||
|
|
@ -132,7 +155,7 @@ func (self *Context) Prettify(text string) string {
|
|||
case "term":
|
||||
return self.ref_hyperlink(val, "term-")
|
||||
case "code":
|
||||
return self.Code(val)
|
||||
return self.Code(remove_backslash_escapes(val))
|
||||
case "option":
|
||||
idx := strings.LastIndex(val, "--")
|
||||
if idx < 0 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue