aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeo Liu2013-03-24 14:42:25 +0800
committerLeo Liu2013-03-24 14:42:25 +0800
commit7b0e2f853fcd88c58715fd159923d50dfdeb9cba (patch)
tree43c47e8af99b49d98f2fd1443a8641c37a225908
parent2bf7d27acd741bf870d6ca0c74dbed7b7260b5ad (diff)
downloademacs-7b0e2f853fcd88c58715fd159923d50dfdeb9cba.tar.gz
emacs-7b0e2f853fcd88c58715fd159923d50dfdeb9cba.zip
* lisp/files.el (kill-buffer-hook): Doc fix.
* lisp/emacs-lisp/edebug.el (edebug-mode): Make sure edebug-kill-buffer is the last entry in kill-buffer-hook. * lisp/nxml/rng-valid.el (rng-validate-while-idle) (rng-validate-quick-while-idle): Guard against deleted buffer. Fixes: debbugs:13999
-rw-r--r--lisp/ChangeLog11
-rw-r--r--lisp/emacs-lisp/edebug.el5
-rw-r--r--lisp/files.el5
-rw-r--r--lisp/nxml/rng-valid.el34
4 files changed, 37 insertions, 18 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index c1124f51a8e..68a9575bcbe 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,14 @@
12013-03-24 Leo Liu <sdl.web@gmail.com>
2
3 * nxml/rng-valid.el (rng-validate-while-idle)
4 (rng-validate-quick-while-idle): Guard against deleted buffer.
5 (Bug#13999)
6
7 * emacs-lisp/edebug.el (edebug-mode): Make sure edebug-kill-buffer
8 is the last entry in kill-buffer-hook.
9
10 * files.el (kill-buffer-hook): Doc fix.
11
12013-03-23 Dmitry Gutov <dgutov@yandex.ru> 122013-03-23 Dmitry Gutov <dgutov@yandex.ru>
2 13
3 * emacs-lisp/lisp-mode.el (emacs-lisp-docstring-fill-column): Make 14 * emacs-lisp/lisp-mode.el (emacs-lisp-docstring-fill-column): Make
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index 52e12013fd3..5a6fd4a0a22 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -3810,7 +3810,10 @@ Options:
3810 ;; If the user kills the buffer in which edebug is currently active, 3810 ;; If the user kills the buffer in which edebug is currently active,
3811 ;; exit to top level, because the edebug command loop can't usefully 3811 ;; exit to top level, because the edebug command loop can't usefully
3812 ;; continue running in such a case. 3812 ;; continue running in such a case.
3813 (add-hook 'kill-buffer-hook 'edebug-kill-buffer nil t) 3813 ;;
3814 ;; Append `edebug-kill-buffer' to the hook to avoid interfering with
3815 ;; other entries that are ungarded against deleted buffer.
3816 (add-hook 'kill-buffer-hook 'edebug-kill-buffer t t)
3814 (use-local-map edebug-mode-map)) 3817 (use-local-map edebug-mode-map))
3815 3818
3816(defun edebug-kill-buffer () 3819(defun edebug-kill-buffer ()
diff --git a/lisp/files.el b/lisp/files.el
index 9da9ac6fd53..06958622d14 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -1516,7 +1516,10 @@ expand wildcards (if any) and replace the file with multiple files."
1516(defvar kill-buffer-hook nil 1516(defvar kill-buffer-hook nil
1517 "Hook run when a buffer is killed. 1517 "Hook run when a buffer is killed.
1518The buffer being killed is current while the hook is running. 1518The buffer being killed is current while the hook is running.
1519See `kill-buffer'.") 1519See `kill-buffer'.
1520
1521Note: Be careful with let-binding this hook considering it is
1522frequently used for cleanup.")
1520 1523
1521(defun find-alternate-file (filename &optional wildcards) 1524(defun find-alternate-file (filename &optional wildcards)
1522 "Find file FILENAME, select its buffer, kill previous buffer. 1525 "Find file FILENAME, select its buffer, kill previous buffer.
diff --git a/lisp/nxml/rng-valid.el b/lisp/nxml/rng-valid.el
index de18c581421..e1140980813 100644
--- a/lisp/nxml/rng-valid.el
+++ b/lisp/nxml/rng-valid.el
@@ -433,24 +433,26 @@ The schema is set like `rng-auto-set-schema'."
433;; validation process down. 433;; validation process down.
434 434
435(defun rng-validate-while-idle (buffer) 435(defun rng-validate-while-idle (buffer)
436 (with-current-buffer buffer 436 (when (buffer-live-p buffer) ; bug#13999
437 (if rng-validate-mode 437 (with-current-buffer buffer
438 (if (let ((rng-validate-display-point (point)) 438 (if rng-validate-mode
439 (rng-validate-display-modified-p (buffer-modified-p))) 439 (if (let ((rng-validate-display-point (point))
440 (rng-do-some-validation 'rng-validate-while-idle-continue-p)) 440 (rng-validate-display-modified-p (buffer-modified-p)))
441 (force-mode-line-update) 441 (rng-do-some-validation 'rng-validate-while-idle-continue-p))
442 (rng-validate-done)) 442 (force-mode-line-update)
443 ;; must have done kill-all-local-variables 443 (rng-validate-done))
444 (rng-kill-timers)))) 444 ;; must have done kill-all-local-variables
445 (rng-kill-timers)))))
445 446
446(defun rng-validate-quick-while-idle (buffer) 447(defun rng-validate-quick-while-idle (buffer)
447 (with-current-buffer buffer 448 (when (buffer-live-p buffer) ; bug#13999
448 (if rng-validate-mode 449 (with-current-buffer buffer
449 (if (rng-do-some-validation) 450 (if rng-validate-mode
450 (force-mode-line-update) 451 (if (rng-do-some-validation)
451 (rng-validate-done)) 452 (force-mode-line-update)
452 ;; must have done kill-all-local-variables 453 (rng-validate-done))
453 (rng-kill-timers)))) 454 ;; must have done kill-all-local-variables
455 (rng-kill-timers)))))
454 456
455(defun rng-validate-done () 457(defun rng-validate-done ()
456 (when (or (not (current-message)) 458 (when (or (not (current-message))