From ff36d38f433cc2221c0cb41c120d7b1b660e6244 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sat, 14 Jun 2025 14:22:14 +0200 Subject: [PATCH] Improve formatting of log messages made from message box content --- novelwriter/shared.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/novelwriter/shared.py b/novelwriter/shared.py index c5b7025c..7a276d02 100644 --- a/novelwriter/shared.py +++ b/novelwriter/shared.py @@ -25,6 +25,7 @@ along with this program. If not, see . from __future__ import annotations import logging +import re from enum import Enum from pathlib import Path @@ -41,6 +42,8 @@ from novelwriter.core.spellcheck import NWSpellEnchant from novelwriter.enum import nwChange, nwItemClass if TYPE_CHECKING: + from collections.abc import Callable + from novelwriter.core.project import NWProject from novelwriter.core.status import T_StatusKind from novelwriter.gui.theme import GuiTheme @@ -50,6 +53,8 @@ logger = logging.getLogger(__name__) NWWidget = TypeVar("NWWidget", bound=QWidget) +RX_HTML = re.compile(r"<.*?>") + class SharedData(QObject): @@ -382,7 +387,7 @@ class SharedData(QObject): alert.setAlertType(_GuiAlert.INFO, False) self._lastAlert = alert.logMessage if log: - logger.info(self._lastAlert, stacklevel=2) + self._logMessage(self._lastAlert, logger.info) alert.exec() return @@ -393,7 +398,7 @@ class SharedData(QObject): alert.setAlertType(_GuiAlert.WARN, False) self._lastAlert = alert.logMessage if log: - logger.warning(self._lastAlert, stacklevel=2) + self._logMessage(self._lastAlert, logger.warning) alert.exec() return @@ -407,7 +412,7 @@ class SharedData(QObject): alert.setException(exc) self._lastAlert = alert.logMessage if log: - logger.error(self._lastAlert, stacklevel=2) + self._logMessage(self._lastAlert, logger.error) alert.exec() return @@ -425,6 +430,12 @@ class SharedData(QObject): # Internal Functions ## + def _logMessage(self, message: str, log: Callable) -> None: + """Print message to log.""" + for text in message.split("
"): + log(RX_HTML.sub("", text), stacklevel=3) + return + def _resetProject(self) -> None: """Create a new project and spell checking instance.""" from novelwriter.core.project import NWProject