diff --git a/novelwriter/constants.py b/novelwriter/constants.py index 4afa7781..461647de 100644 --- a/novelwriter/constants.py +++ b/novelwriter/constants.py @@ -349,6 +349,9 @@ class nwUnicode: # Unicode Constants # ================= + # Lookup + APOS_TYPE = "\u0027\u2019\u02bc" + # Quotation Marks U_QUOT = "\u0022" # Quotation mark U_APOS = "\u0027" # Apostrophe diff --git a/novelwriter/gui/doceditor.py b/novelwriter/gui/doceditor.py index 8ea95769..5a5ed184 100644 --- a/novelwriter/gui/doceditor.py +++ b/novelwriter/gui/doceditor.py @@ -2012,20 +2012,25 @@ class GuiDocEditor(QPlainTextEdit): cPos = cursor.position() bPos = cursor.block().position() bLen = cursor.block().length() + apos = nwUnicode.APOS_TYPE - # Scan backwards + # Scan backward sPos = cPos for i in range(cPos - bPos): sPos = cPos - i - 1 - if not self._qDocument.characterAt(sPos).isalnum(): + cOne = self._qDocument.characterAt(sPos) + cTwo = self._qDocument.characterAt(sPos - 1) + if not (cOne.isalnum() or cOne in apos and cTwo.isalnum()): sPos += 1 break - # Scan forwards + # Scan forward ePos = cPos for i in range(bPos + bLen - cPos): ePos = cPos + i - if not self._qDocument.characterAt(ePos).isalnum(): + cOne = self._qDocument.characterAt(ePos) + cTwo = self._qDocument.characterAt(ePos + 1) + if not (cOne.isalnum() or cOne in apos and cTwo.isalnum()): break if ePos - sPos <= 0: