From: Eli Zaretskii <eliz@gnu.org>
To: guillaume.brunerie@gmail.com, Stefan Monnier <monnier@iro.umontreal.ca>
Cc: 74415@debbugs.gnu.org
Subject: bug#74415: 29.4; mouse-start-end does not respect syntax-table text properties
Date: Thu, 28 Nov 2024 18:02:10 +0200 [thread overview]
Message-ID: <86mshjcpod.fsf@gnu.org> (raw)
In-Reply-To: <jwv8qt6c3ed.fsf-monnier+emacs@gnu.org> (message from Stefan Monnier on Mon, 25 Nov 2024 18:15:12 -0500)
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: Guillaume Brunerie <guillaume.brunerie@gmail.com>, 74415@debbugs.gnu.org
> Date: Mon, 25 Nov 2024 18:15:12 -0500
>
> > Stefan, is there any reason not to use syntax-after everywhere in
> > mouse.el?
>
> Not that I can think of, no.
> AFAIU, this code simply predates `syntax-after`.
Thanks. Guillaume, does the patch below give good results?
diff --git a/lisp/mouse.el b/lisp/mouse.el
index 410e52b..766c4d8 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -632,7 +632,9 @@ context-menu-region
(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) ?\"))
+ (or (and char (eq (syntax-class-to-char
+ (syntax-class (syntax-after pos)))
+ ?\"))
(nth 3 (save-excursion (syntax-ppss pos)))))
(define-key-after submenu [mark-string]
`(menu-item "String"
@@ -1890,7 +1892,8 @@ mouse-skip-word
If `mouse-1-double-click-prefer-symbols' is non-nil, skip over symbol.
If DIR is positive skip forward; if negative, skip backward."
(let* ((char (following-char))
- (syntax (char-to-string (char-syntax char)))
+ (syntax (char-to-string
+ (syntax-class-to-char (syntax-class (syntax-after (point))))))
sym)
(cond ((and mouse-1-double-click-prefer-symbols
(setq sym (bounds-of-thing-at-point 'symbol)))
@@ -1938,7 +1941,9 @@ mouse-start-end
((and (= mode 1)
(= start end)
(char-after start)
- (= (char-syntax (char-after start)) ?\())
+ (= (syntax-class-to-char
+ (syntax-class (syntax-after start)))
+ ?\())
(if (/= (syntax-class (syntax-after start)) 4) ; raw syntax code for ?\(
;; This happens in CC Mode when unbalanced parens in CPP
;; constructs are given punctuation syntax with
@@ -1953,7 +1958,9 @@ mouse-start-end
((and (= mode 1)
(= start end)
(char-after start)
- (= (char-syntax (char-after start)) ?\)))
+ (= (syntax-class-to-char
+ (syntax-class (syntax-after start)))
+ ?\)))
(if (/= (syntax-class (syntax-after start)) 5) ; raw syntax code for ?\)
;; See above comment about CC Mode.
(signal 'scan-error (list "Unbalanced parentheses" start start))
@@ -1965,7 +1972,9 @@ mouse-start-end
((and (= mode 1)
(= start end)
(char-after start)
- (= (char-syntax (char-after start)) ?\"))
+ (= (syntax-class-to-char
+ (syntax-class (syntax-after start)))
+ ?\"))
(let ((open (or (eq start (point-min))
(save-excursion
(goto-char (- start 1))
next prev parent reply other threads:[~2024-11-28 16:02 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-18 10:12 bug#74415: 29.4; mouse-start-end does not respect syntax-table text properties Guillaume Brunerie
2024-11-24 9:59 ` Eli Zaretskii
2024-11-25 23:15 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-28 16:02 ` Eli Zaretskii [this message]
2024-11-28 20:03 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=86mshjcpod.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=74415@debbugs.gnu.org \
--cc=guillaume.brunerie@gmail.com \
--cc=monnier@iro.umontreal.ca \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).