From: Stefan Monnier <monnier@iro.umontreal.ca>
To: Wilson Snyder <wsnyder@wsnyder.org>
Cc: emacs-devel@gnu.org
Subject: Get rid of verilog-no-change-functions
Date: Sat, 12 Sep 2015 00:22:01 -0400 [thread overview]
Message-ID: <jwvmvwsgtk0.fsf-monnier+emacs@gnu.org> (raw)
I believe the patch below replaces a workaround with an actual fix.
It's indeed unsafe to call syntax-ppss when before-change-functions is
let-bound, but the patch avoids the problem by not let-binding
before-change-functions, relying on the cleaner
inhibit-modification-hooks, which was introduced way back in Emacs-21
for similar reasons.
Any objection to my applying this to Emacs's version of verilog-mode.el?
Stefan
diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el
index 5fcdba6..0f90d60 100644
--- a/lisp/progmodes/verilog-mode.el
+++ b/lisp/progmodes/verilog-mode.el
@@ -408,10 +408,6 @@ This function may be removed when Emacs 21 is no longer supported."
;; And GNU Emacs 22 has obsoleted last-command-char
last-command-event)))
-(defvar verilog-no-change-functions nil
- "True if `after-change-functions' is disabled.
-Use of `syntax-ppss' may break, as ppss's cache may get corrupted.")
-
(defvar verilog-in-hooks nil
"True when within a `verilog-run-hooks' block.")
@@ -422,14 +418,13 @@ Set `verilog-in-hooks' during this time, to assist AUTO caches."
(run-hooks ,@hooks)))
(defun verilog-syntax-ppss (&optional pos)
- (when verilog-no-change-functions
- (if verilog-in-hooks
- (verilog-scan-cache-flush)
- ;; else don't let the AUTO code itself get away with flushing the cache,
- ;; as that'll make things very slow
- (backtrace)
- (error "%s: Internal problem; use of syntax-ppss when cache may be corrupt"
- (verilog-point-text))))
+ (if verilog-in-hooks
+ (verilog-scan-cache-flush)
+ ;; else don't let the AUTO code itself get away with flushing the cache,
+ ;; as that'll make things very slow
+ (backtrace)
+ (error "%s: Internal problem; use of syntax-ppss when cache may be corrupt"
+ (verilog-point-text)))
(if (fboundp 'syntax-ppss)
(syntax-ppss pos)
(parse-partial-sexp (point-min) (or pos (point)))))
@@ -3230,9 +3225,7 @@ user-visible changes to the buffer must not be within a
(buffer-undo-list t)
(inhibit-read-only t)
(inhibit-point-motion-hooks t)
- (verilog-no-change-functions t)
- before-change-functions
- after-change-functions
+ (inhibit-modification-hooks t)
deactivate-mark
buffer-file-name ; Prevent primitives checking
buffer-file-truename) ; for file modification
@@ -3246,9 +3239,7 @@ user-visible changes to the buffer must not be within a
"Execute BODY forms, disabling all change hooks in BODY.
For insignificant changes, see instead `verilog-save-buffer-state'."
`(let* ((inhibit-point-motion-hooks t)
- (verilog-no-change-functions t)
- before-change-functions
- after-change-functions)
+ (inhibit-modification-hooks t))
(progn ,@body)))
(defvar verilog-save-font-mod-hooked nil
next reply other threads:[~2015-09-12 4:22 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-12 4:22 Stefan Monnier [this message]
-- strict thread matches above, loose matches on Subject: below --
2015-09-12 11:33 Get rid of verilog-no-change-functions Wilson Snyder
2015-09-12 20:21 ` Stefan Monnier
2015-09-14 21:09 Wilson Snyder
2015-09-15 13:45 ` Stefan Monnier
2015-09-15 23:51 Wilson Snyder
2015-09-16 1:05 ` Stefan Monnier
2015-09-16 7:40 ` Andreas Schwab
2015-09-16 13:12 ` Stefan Monnier
2015-10-29 13:22 ` Stefan Monnier
2015-10-29 13:48 Wilson Snyder
2015-10-29 15:31 ` Stefan Monnier
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=jwvmvwsgtk0.fsf-monnier+emacs@gnu.org \
--to=monnier@iro.umontreal.ca \
--cc=emacs-devel@gnu.org \
--cc=wsnyder@wsnyder.org \
/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).