diff --git a/novelwriter/core/coretools.py b/novelwriter/core/coretools.py index eb113a5d..08b96957 100644 --- a/novelwriter/core/coretools.py +++ b/novelwriter/core/coretools.py @@ -348,7 +348,9 @@ class DocSearch: rxMatch = rxItt.next() pos = rxMatch.capturedStart() num = rxMatch.capturedLength() - context = text[pos:pos+100].partition("\n")[0] + lim = text[:pos].rfind("\n") + 1 + cut = text[lim:pos].rfind(" ") + lim + 1 + context = text[cut:cut+100].partition("\n")[0] if context: results.append((pos, num, context)) count += 1 diff --git a/tests/test_core/test_core_coretools.py b/tests/test_core/test_core_coretools.py index a0aa86e0..fb5ef0c3 100644 --- a/tests/test_core/test_core_coretools.py +++ b/tests/test_core/test_core_coretools.py @@ -439,6 +439,7 @@ def testCoreTools_DocSearch(monkeypatch, mockGUI, fncPath, mockRnd, ipsumText): return [(s, n, c.split()[0]) for s, n, c in temp] # Defaults + # assert list(search.iterSearch(project, "Lorem")) == [] assert pruneResult(search.iterSearch(project, "Lorem"), 2) == [ (15, 5, "Lorem"), (754, 5, "lorem"), (2056, 5, "lorem,"), (2209, 5, "lorem"), (2425, 5, "lorem"), (2840, 5, "lorem."), (3399, 5, "lorem"), @@ -449,8 +450,8 @@ def testCoreTools_DocSearch(monkeypatch, mockGUI, fncPath, mockRnd, ipsumText): assert pruneResult(search.iterSearch(project, "Lor"), 2) == [] search.setWholeWords(False) assert pruneResult(search.iterSearch(project, "Lor"), 2) == [ - (15, 3, "Lorem"), (29, 3, "lor"), (754, 3, "lorem"), (2056, 3, "lorem,"), - (2209, 3, "lorem"), (2425, 3, "lorem"), (2840, 3, "lorem."), (3328, 3, "lor."), + (15, 3, "Lorem"), (29, 3, "dolor"), (754, 3, "lorem"), (2056, 3, "lorem,"), + (2209, 3, "lorem"), (2425, 3, "lorem"), (2840, 3, "lorem."), (3328, 3, "dolor."), (3399, 3, "lorem"), ] @@ -458,7 +459,7 @@ def testCoreTools_DocSearch(monkeypatch, mockGUI, fncPath, mockRnd, ipsumText): search.setWholeWords(False) search.setUserRegEx(True) assert pruneResult(search.iterSearch(project, r"Lor\b"), 2) == [ - (29, 3, "lor"), (3328, 3, "lor."), + (29, 3, "dolor"), (3328, 3, "dolor."), ] # Max Results