all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#41195: 27.0.91; Using syntax-ppss-flush-cache in syntax-propertize-function infloops
@ 2020-05-11 23:32 Dmitry Gutov
  2020-05-12 20:55 ` Stefan Monnier
  0 siblings, 1 reply; 3+ messages in thread
From: Dmitry Gutov @ 2020-05-11 23:32 UTC (permalink / raw)
  To: 41195

In theory, syntax-propertize-function implementations shouldn't change
buffer syntax the way that would affect the current syntax-ppss cache.
Or if they do, they should clear the cache accordingly.

Unfortunately, using syntax-ppss-flush-cache for that purpose doesn't
work: it makes Emacs infloop.

To reproduce, apply this patch:

diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index 5ec3e94275..efe38049ab 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -2362,6 +2362,7 @@ js-syntax-propertize
                             (eval-when-compile (append "=({[,:;" 
'(nil))))))
             (put-text-property (match-beginning 1) (match-end 1)
                                'syntax-table (string-to-syntax "\"/"))
+           (syntax-ppss-flush-cache (match-beginning 0))
             (js-syntax-propertize-regexp end)))))
      ("\`\(#\)!" (1 "< b"))
      ("<" (0 (ignore

and then edit a file with js-mode containing

   a = /xyz/





^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-05-12 21:05 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-05-11 23:32 bug#41195: 27.0.91; Using syntax-ppss-flush-cache in syntax-propertize-function infloops Dmitry Gutov
2020-05-12 20:55 ` Stefan Monnier
2020-05-12 21:05   ` Dmitry Gutov

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.