summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/generator.el3
-rw-r--r--lisp/emacs-lisp/syntax.el8
2 files changed, 10 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/generator.el b/lisp/emacs-lisp/generator.el
index b19f6fab722..506df59d8e2 100644
--- a/lisp/emacs-lisp/generator.el
+++ b/lisp/emacs-lisp/generator.el
@@ -681,7 +681,8 @@ When called as a function, NAME returns an iterator value that
encapsulates the state of a computation that produces a sequence
of values. Callers can retrieve each value using `iter-next'."
(declare (indent defun)
- (debug (&define name lambda-list lambda-doc def-body)))
+ (debug (&define name lambda-list lambda-doc def-body))
+ (doc-string 3))
(cl-assert lexical-binding)
(let* ((parsed-body (macroexp-parse-body body))
(declarations (car parsed-body))
diff --git a/lisp/emacs-lisp/syntax.el b/lisp/emacs-lisp/syntax.el
index a1b70b18693..6106720f7a5 100644
--- a/lisp/emacs-lisp/syntax.el
+++ b/lisp/emacs-lisp/syntax.el
@@ -291,6 +291,14 @@ END) suitable for `syntax-propertize-function'."
;; (message "Needs to syntax-propertize from %s to %s"
;; syntax-propertize--done pos)
(set (make-local-variable 'parse-sexp-lookup-properties) t)
+ (when (< syntax-propertize--done (point-min))
+ ;; *Usually* syntax-propertize is called via syntax-ppss which
+ ;; takes care of adding syntax-ppss-flush-cache to b-c-f, but this
+ ;; is not *always* the case, so since we share a single "flush" function
+ ;; between syntax-ppss and syntax-propertize, we also have to make
+ ;; sure the flush function is installed here (bug#29767).
+ (add-hook 'before-change-functions
+ #'syntax-ppss-flush-cache t t))
(save-excursion
(with-silent-modifications
(make-local-variable 'syntax-propertize--done) ;Just in case!