summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/smie.el
diff options
context:
space:
mode:
authorDmitry Gutov <dgutov@yandex.ru>2013-10-11 03:45:03 +0300
committerDmitry Gutov <dgutov@yandex.ru>2013-10-11 03:45:03 +0300
commit0922b8260ac76c153b253c992c1a656fca1a22e2 (patch)
treeda6ae4a3419713020539e40094decafc5ac87d03 /lisp/emacs-lisp/smie.el
parent6d8ca1720a1795d15493f03005390d8ffc559f30 (diff)
downloademacs-0922b8260ac76c153b253c992c1a656fca1a22e2.tar.gz
* lisp/emacs-lisp/smie.el (smie--matching-block-data): Invalidate the
cache also after commands that modify the buffer but don't move point.
Diffstat (limited to 'lisp/emacs-lisp/smie.el')
-rw-r--r--lisp/emacs-lisp/smie.el8
1 files changed, 5 insertions, 3 deletions
diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el
index 32dcb2ed744..ebb82f4bf54 100644
--- a/lisp/emacs-lisp/smie.el
+++ b/lisp/emacs-lisp/smie.el
@@ -1062,10 +1062,12 @@ OPENER is non-nil if TOKEN is an opener and nil if it's a closer."
(defun smie--matching-block-data (orig &rest args)
"A function suitable for `show-paren-data-function' (which see)."
(if (or (null smie-closer-alist)
- (eq (point) (car smie--matching-block-data-cache)))
+ (equal (cons (point) (buffer-chars-modified-tick))
+ (car smie--matching-block-data-cache)))
(or (cdr smie--matching-block-data-cache)
(apply orig args))
- (setq smie--matching-block-data-cache (list (point)))
+ (setq smie--matching-block-data-cache
+ (list (cons (point) (buffer-chars-modified-tick))))
(unless (nth 8 (syntax-ppss))
(condition-case nil
(let ((here (smie--opener/closer-at-point)))
@@ -1108,7 +1110,7 @@ OPENER is non-nil if TOKEN is an opener and nil if it's a closer."
(nth 1 there) (nth 2 there)
(not (nth 0 there)))))))
(scan-error nil))
- (goto-char (car smie--matching-block-data-cache)))
+ (goto-char (caar smie--matching-block-data-cache)))
(apply #'smie--matching-block-data orig args)))
;;; The indentation engine.