summaryrefslogtreecommitdiff
path: root/lisp/mouse.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/mouse.el')
-rw-r--r--lisp/mouse.el18
1 files changed, 6 insertions, 12 deletions
diff --git a/lisp/mouse.el b/lisp/mouse.el
index df099cde83f..f7977689634 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -1195,18 +1195,12 @@ and selects that window."
(save-excursion
(goto-char (posn-point (event-start event)))
(let (beg end)
- (skip-chars-forward "^ \t\n")
- (while (looking-at " [^ \n\t]")
- (forward-char 1)
- (skip-chars-forward "^ \t\n"))
- (setq end (point))
- (skip-chars-backward "^ \t\n")
- (while (and (= (preceding-char) ?\ )
- (not (and (> (point) (1+ (point-min)))
- (= (char-after (- (point) 2)) ?\ ))))
- (backward-char 1)
- (skip-chars-backward "^ \t\n"))
- (setq beg (point))
+ (if (and (not (eobp)) (get-text-property (point) 'mouse-face))
+ (setq end (point) beg (1+ (point))))
+ (if (null beg)
+ (error "No completion here"))
+ (setq beg (previous-single-property-change beg 'mouse-face))
+ (setq end (next-single-property-change end 'mouse-face))
(setq choice (buffer-substring beg end)))))
(let ((owindow (selected-window)))
(select-window (posn-window (event-start event)))