From c02e7a52a1b609d1ffde4dd6259f98684a047e50 Mon Sep 17 00:00:00 2001
From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com>
Date: Sat, 21 Oct 2023 15:40:33 +0200
Subject: [PATCH] Fix keyword section in writing classes
---
novelwriter/core/tohtml.py | 27 ++++++++++-----------------
novelwriter/core/tomd.py | 4 ++--
novelwriter/core/toodt.py | 15 ++++++++++-----
3 files changed, 22 insertions(+), 24 deletions(-)
diff --git a/novelwriter/core/tohtml.py b/novelwriter/core/tohtml.py
index 6ebaeedf..412dcedf 100644
--- a/novelwriter/core/tohtml.py
+++ b/novelwriter/core/tohtml.py
@@ -31,7 +31,7 @@ from pathlib import Path
from novelwriter import CONFIG
from novelwriter.common import formatTimeStamp
-from novelwriter.constants import nwHeadFmt, nwKeyWords, nwLabels, nwHtmlUnicode
+from novelwriter.constants import nwHeadFmt, nwKeyWords, nwLabels, nwHtmlUnicode, trConst
from novelwriter.core.project import NWProject
from novelwriter.core.tokenizer import Tokenizer, stripEscape
@@ -474,25 +474,18 @@ class ToHtml(Tokenizer):
def _formatKeywords(self, text: str) -> str:
"""Apply HTML formatting to keywords."""
valid, bits, _ = self._project.index.scanThis("@"+text)
- if not valid or not bits:
+ if not valid or not bits or bits[0] not in nwLabels.KEY_NAME:
return ""
- result = ""
- tags = []
- if bits[0] in nwLabels.KEY_NAME:
- result += f"{nwLabels.KEY_NAME[bits[0]]}: "
- if len(bits) > 1:
- if bits[0] == nwKeyWords.TAG_KEY:
- result += f"{bits[1]}"
+ result = f"{trConst(nwLabels.KEY_NAME[bits[0]])}: "
+ if len(bits) > 1:
+ if bits[0] == nwKeyWords.TAG_KEY:
+ result += f"{bits[1]}"
+ else:
+ if self._genMode == self.M_PREVIEW:
+ result += ", ".join(f"{t}" for t in bits[1:])
else:
- if self._genMode == self.M_PREVIEW:
- for tTag in bits[1:]:
- tags.append(f"{tTag}")
- result += ", ".join(tags)
- else:
- for tTag in bits[1:]:
- tags.append(f"{tTag}")
- result += ", ".join(tags)
+ result += ", ".join(f"{t}" for t in bits[1:])
return result
diff --git a/novelwriter/core/tomd.py b/novelwriter/core/tomd.py
index 67843ace..cc2e8696 100644
--- a/novelwriter/core/tomd.py
+++ b/novelwriter/core/tomd.py
@@ -27,7 +27,7 @@ import logging
from pathlib import Path
-from novelwriter.constants import nwHeadFmt, nwLabels
+from novelwriter.constants import nwHeadFmt, nwLabels, trConst
from novelwriter.core.project import NWProject
from novelwriter.core.tokenizer import Tokenizer
@@ -209,7 +209,7 @@ class ToMarkdown(Tokenizer):
result = ""
if bits[0] in nwLabels.KEY_NAME:
- result += f"**{nwLabels.KEY_NAME[bits[0]]}:** "
+ result += f"**{trConst(nwLabels.KEY_NAME[bits[0]])}:** "
if len(bits) > 1:
result += ", ".join(bits[1:])
diff --git a/novelwriter/core/toodt.py b/novelwriter/core/toodt.py
index 88b8ed84..c1165e30 100644
--- a/novelwriter/core/toodt.py
+++ b/novelwriter/core/toodt.py
@@ -37,7 +37,7 @@ from datetime import datetime
from novelwriter import __version__
from novelwriter.common import xmlIndent
-from novelwriter.constants import nwHeadFmt, nwLabels, trConst
+from novelwriter.constants import nwHeadFmt, nwKeyWords, nwLabels, trConst
from novelwriter.core.project import NWProject
from novelwriter.core.tokenizer import Tokenizer, stripEscape
@@ -571,10 +571,15 @@ class ToOdt(Tokenizer):
valid, bits, _ = self._project.index.scanThis("@"+text)
if not valid or not bits or bits[0] not in nwLabels.KEY_NAME:
return "", []
- name = trConst(nwLabels.KEY_NAME[bits[0]])
- tags = ", ".join(bits[1:])
- rTxt = f"{name}: {tags}"
- rFmt = [(0, self.FMT_B_B), (len(name) + 1, self.FMT_B_E)]
+
+ rTxt = f"{trConst(nwLabels.KEY_NAME[bits[0]])}: "
+ rFmt = [(0, self.FMT_B_B), (len(rTxt) - 1, self.FMT_B_E)]
+ if len(bits) > 1:
+ if bits[0] == nwKeyWords.TAG_KEY:
+ rTxt += bits[1]
+ else:
+ rTxt += ", ".join(bits[1:])
+
return rTxt, rFmt
def _addTextPar(