Add markdown highlight format

This commit is contained in:
Veronica Berglyd Olsen
2025-06-16 18:46:37 +02:00
parent 1c150e0011
commit 148fc68590
8 changed files with 45 additions and 11 deletions
+1
View File
@@ -77,6 +77,7 @@ class nwRegEx:
FMT_EI = r"(?<![\w\\])(_)(?![\s_])(.+?)(?<![\s\\])(\1)(?!\w)"
FMT_EB = r"(?<![\w\\])(\*{2})(?![\s\*])(.+?)(?<![\s\\])(\1)(?!\w)"
FMT_ST = r"(?<![\w\\])(~{2})(?![\s~])(.+?)(?<![\s\\])(\1)(?!\w)"
FMT_HL = r"(?<![\w\\])(={2})(?![\s=])(.+?)(?<![\s\\])(\1)(?!\w)"
FMT_SC = r"(?i)(?<!\\)(\[(?:b|/b|i|/i|s|/s|u|/u|m|/m|sup|/sup|sub|/sub|br)\])"
FMT_SV = r"(?i)(?<!\\)(\[(?:footnote|field):)(.+?)(?<!\\)(\])"
+9 -1
View File
@@ -29,7 +29,15 @@ from enum import Flag, IntEnum
from PyQt6.QtGui import QColor
ESCAPES = {r"\*": "*", r"\~": "~", r"\_": "_", r"\[": "[", r"\]": "]", r"\ ": ""}
ESCAPES = {
r"\*": "*",
r"\~": "~",
r"\=": "=",
r"\_": "_",
r"\[": "[",
r"\]": "]",
r"\ ": "",
}
RX_ESC = re.compile("|".join([re.escape(k) for k in ESCAPES.keys()]), flags=re.DOTALL)
+1
View File
@@ -189,6 +189,7 @@ class Tokenizer(ABC):
(REGEX_PATTERNS.markdownItalic, [0, TextFmt.I_B, 0, TextFmt.I_E]),
(REGEX_PATTERNS.markdownBold, [0, TextFmt.B_B, 0, TextFmt.B_E]),
(REGEX_PATTERNS.markdownStrike, [0, TextFmt.D_B, 0, TextFmt.D_E]),
(REGEX_PATTERNS.markdownMark, [0, TextFmt.M_B, 0, TextFmt.M_E]),
]
self._shortCodeFmt = {
+16 -3
View File
@@ -110,6 +110,7 @@ class GuiDocHighlighter(QSyntaxHighlighter):
self._addCharFormat("bold", colEmph, "b")
self._addCharFormat("italic", colEmph, "i")
self._addCharFormat("strike", syntax.hidden, "s")
self._addCharFormat("mark", syntax.mark, "bg")
self._addCharFormat("mspaces", syntax.error, "err")
self._addCharFormat("nobreak", colBreak, "bg")
self._addCharFormat("altdialog", syntax.dialA)
@@ -196,6 +197,17 @@ class GuiDocHighlighter(QSyntaxHighlighter):
self._txtRules.append((rxRule, hlRule))
self._cmnRules.append((rxRule, hlRule))
# Markdown Highlight
rxRule = REGEX_PATTERNS.markdownMark
hlRule = {
1: self._hStyles["markup"],
2: self._hStyles["mark"],
3: self._hStyles["markup"],
}
self._minRules.append((rxRule, hlRule))
self._txtRules.append((rxRule, hlRule))
self._cmnRules.append((rxRule, hlRule))
# Shortcodes
rxRule = REGEX_PATTERNS.shortcodePlain
hlRule = {
@@ -437,9 +449,6 @@ class GuiDocHighlighter(QSyntaxHighlighter):
charFormat = QTextCharFormat()
charFormat.setFontStyleName(name)
if color:
charFormat.setForeground(color)
if style:
styles = style.split(",")
if "b" in styles:
@@ -455,6 +464,10 @@ class GuiDocHighlighter(QSyntaxHighlighter):
charFormat.setUnderlineStyle(QTextCharFormat.UnderlineStyle.SpellCheckUnderline)
if "bg" in styles and color is not None:
charFormat.setBackground(QBrush(color, Qt.BrushStyle.SolidPattern))
color = None
if color:
charFormat.setForeground(color)
if size:
charFormat.setFontPointSize(round(size*CONFIG.textFont.pointSize()))
+6
View File
@@ -42,6 +42,7 @@ class RegExPatterns:
_rxItalic = re.compile(nwRegEx.FMT_EI, re.UNICODE)
_rxBold = re.compile(nwRegEx.FMT_EB, re.UNICODE)
_rxStrike = re.compile(nwRegEx.FMT_ST, re.UNICODE)
_rxMark = re.compile(nwRegEx.FMT_HL, re.UNICODE)
_rxSCPlain = re.compile(nwRegEx.FMT_SC, re.UNICODE)
_rxSCValue = re.compile(nwRegEx.FMT_SV, re.UNICODE)
@@ -75,6 +76,11 @@ class RegExPatterns:
"""Markdown strikethrough style."""
return self._rxStrike
@property
def markdownMark(self) -> re.Pattern:
"""Markdown highlight style."""
return self._rxMark
@property
def shortcodePlain(self) -> re.Pattern:
"""Plain shortcode style."""