diff --git a/nw/gui/elements/doceditor.py b/nw/gui/elements/doceditor.py index 3e0aba3c..725769e2 100644 --- a/nw/gui/elements/doceditor.py +++ b/nw/gui/elements/doceditor.py @@ -214,7 +214,14 @@ class GuiDocEditor(QTextEdit): return False self.hLight.setHandle(tHandle) + spTemp = self.hLight.spellCheck + self.hLight.spellCheck = False + + bfTime = time() self.setPlainText(theDoc) + afTime = time() + logger.debug("Document highlighted in %.3f milliseconds" % (1000*(afTime-bfTime))) + self.setCursorPosition(self.nwDocument.theItem.cursorPos) self.lastEdit = time() self._runCounter() @@ -227,6 +234,8 @@ class GuiDocEditor(QTextEdit): else: self.theParent.noticeBar.showNote("This document is read only.") + self.hLight.spellCheck = spTemp + return True def replaceText(self, theText): diff --git a/nw/gui/tools/dochighlight.py b/nw/gui/tools/dochighlight.py index fd093933..1c8cd501 100644 --- a/nw/gui/tools/dochighlight.py +++ b/nw/gui/tools/dochighlight.py @@ -101,47 +101,7 @@ class GuiDocHighlighter(QSyntaxHighlighter): "value" : self._makeFormat(self.colVal), } - # Headers self.hRules = [] - self.hRules.append(( - r"^(#{1}) (.*)[^\n]", { - 0 : self.hStyles["header1"], - 1 : self.hStyles["header1h"], - } - )) - self.hRules.append(( - r"^(#{2}) (.*)[^\n]", { - 0 : self.hStyles["header2"], - 1 : self.hStyles["header2h"], - } - )) - self.hRules.append(( - r"^(#{3}) (.*)[^\n]", { - 0 : self.hStyles["header3"], - 1 : self.hStyles["header3h"], - } - )) - self.hRules.append(( - r"^(#{4}) (.*)[^\n]", { - 0 : self.hStyles["header4"], - 1 : self.hStyles["header4h"], - } - )) - - # Keyword/Value - # self.hRules.append(( - # r"^(@.+?)\s*:\s*(.+?)$", { - # 1 : self.hStyles["keyword"], - # 2 : self.hStyles["value"], - # } - # )) - - # Comments - self.hRules.append(( - r"^%.*$", { - 0 : self.hStyles["hidden"], - } - )) # Trailing Spaces, 2+ self.hRules.append(( @@ -242,11 +202,10 @@ class GuiDocHighlighter(QSyntaxHighlighter): def highlightBlock(self, theText): - if self.theHandle is None: + if self.theHandle is None or not theText: return - if theText.startswith("@"): - # Highlighting of keywords and commands + if theText.startswith("@"): # Keywords and commands tItem = self.theParent.theProject.getItem(self.theHandle) isValid, theBits, thePos = self.theIndex.scanThis(theText) isGood = self.theIndex.checkThese(theBits, tItem) @@ -265,11 +224,26 @@ class GuiDocHighlighter(QSyntaxHighlighter): kwFmt.setUnderlineStyle(QTextCharFormat.SpellCheckUnderline) self.setFormat(xPos, xLen, kwFmt) - # We're done, no need to continue - return + elif theText.startswith("# "): # Header 1 + self.setFormat(0, 1, self.hStyles["header1"]) + self.setFormat(1, len(theText), self.hStyles["header1h"]) - else: - # For other text, just use our regex rules + elif theText.startswith("## "): # Header 2 + self.setFormat(0, 2, self.hStyles["header2"]) + self.setFormat(2, len(theText), self.hStyles["header2h"]) + + elif theText.startswith("### "): # Header 3 + self.setFormat(0, 3, self.hStyles["header3"]) + self.setFormat(3, len(theText), self.hStyles["header3h"]) + + elif theText.startswith("#### "): # Header 4 + self.setFormat(0, 4, self.hStyles["header4"]) + self.setFormat(4, len(theText), self.hStyles["header4h"]) + + elif theText.startswith("%"): # Comments + self.setFormat(0, len(theText), self.hStyles["hidden"]) + + else: # Text Paragraph for rX, xFmt in self.rxRules: rxItt = rX.globalMatch(theText, 0) while rxItt.hasNext():