aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/ui.lua3
-rw-r--r--test/test.lua5
2 files changed, 7 insertions, 1 deletions
diff --git a/core/ui.lua b/core/ui.lua
index 5ee4fbd1..e7e608de 100644
--- a/core/ui.lua
+++ b/core/ui.lua
@@ -304,7 +304,8 @@ end, 1)
events_connect(events.UPDATE_UI, function(updated)
if updated and updated & buffer.UPDATE_SELECTION > 0 and
ui.highlight_words and not buffer.selection_empty and
- buffer:is_range_word(buffer.selection_start, buffer.selection_end) then
+ buffer:is_range_word(buffer.selection_start, buffer.selection_end) and
+ buffer:get_sel_text():find('^%S+$') then
clear_highlighted_words()
local word = buffer:text_range(buffer.selection_start, buffer.selection_end)
buffer.search_flags = buffer.FIND_MATCHCASE | buffer.FIND_WHOLEWORD
diff --git a/test/test.lua b/test/test.lua
index 1ae3be7c..155a4a1e 100644
--- a/test/test.lua
+++ b/test/test.lua
@@ -1790,6 +1790,11 @@ function test_ui_highlight_word()
buffer:set_sel(1, 3)
pos = buffer:indicator_end(ui.INDIC_HIGHLIGHT, 2)
assert_equal(pos, 1) -- no highlights
+ -- Verify multi-word selections do not highlight words.
+ buffer:set_sel(buffer:position_from_line(LINE(3)), buffer.line_end_position[LINE(3)])
+ assert(buffer:is_range_word(buffer.selection_start, buffer.selection_end))
+ pos = buffer:indicator_end(ui.INDIC_HIGHLIGHT, 2)
+ assert_equal(pos, 1) -- no highlights
buffer:close(true)
end