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