diff options
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/mouse.el | 17 | ||||
-rw-r--r-- | lisp/progmodes/prog-mode.el | 4 |
2 files changed, 12 insertions, 9 deletions
diff --git a/lisp/mouse.el b/lisp/mouse.el index af1eca12f45..459cce4cd97 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el @@ -489,14 +489,15 @@ Some context functions add menu items below the separator." `(menu-item "All" ,(lambda (e) (interactive "e") (mark-thing-at-mouse e 'buffer)) :help "Mark the whole buffer for a subsequent cut/copy")) - (when (let* ((pos (posn-point (event-end click))) - (char (when pos (char-after pos)))) - (or (and char (eq (char-syntax char) ?\")) - (nth 3 (save-excursion (syntax-ppss pos))))) - (define-key-after submenu [mark-string] - `(menu-item "String" - ,(lambda (e) (interactive "e") (mark-thing-at-mouse e 'string)) - :help "Mark the string at click for a subsequent cut/copy"))) + (with-current-buffer (window-buffer (posn-window (event-end click))) + (when (let* ((pos (posn-point (event-end click))) + (char (when pos (char-after pos)))) + (or (and char (eq (char-syntax char) ?\")) + (nth 3 (save-excursion (syntax-ppss pos))))) + (define-key-after submenu [mark-string] + `(menu-item "String" + ,(lambda (e) (interactive "e") (mark-thing-at-mouse e 'string)) + :help "Mark the string at click for a subsequent cut/copy")))) (define-key-after submenu [mark-line] `(menu-item "Line" ,(lambda (e) (interactive "e") (mark-thing-at-mouse e 'line)) diff --git a/lisp/progmodes/prog-mode.el b/lisp/progmodes/prog-mode.el index 30b6edf0d9d..496b0810183 100644 --- a/lisp/progmodes/prog-mode.el +++ b/lisp/progmodes/prog-mode.el @@ -93,7 +93,9 @@ 'mark-whole-buffer) ;; Include text-mode select menu only in strings and comments. - (when (nth 8 (save-excursion (syntax-ppss (posn-point (event-end click))))) + (when (nth 8 (save-excursion + (with-current-buffer (window-buffer (posn-window (event-end click))) + (syntax-ppss (posn-point (event-end click)))))) (text-mode-context-menu menu click)) menu) |