summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Manheimer <ken.manheimer@gmail.com>2011-07-05 14:54:08 -0400
committerKen Manheimer <ken.manheimer@gmail.com>2011-07-05 14:54:08 -0400
commit919d884a6dc860fc4268a5c4ec44e2e80a42836f (patch)
tree8ac1d25a18a5c635d76627d2c6b6bee0245b5f3a
parent450a0f09279df347a10d6c1e4b809a5082daf9c8 (diff)
downloademacs-919d884a6dc860fc4268a5c4ec44e2e80a42836f.tar.gz
* allout.el (allout-post-undo-hook): New allout outline-change event hook
to signal undo activity. (allout-post-command-business): Run allout-post-undo-hook if an undo just occurred. (allout-after-copy-or-kill-hook), (allout-mode): Minor docstring changes. * allout-widgets.el (allout-widgets-after-undo-function): Ensure the integrity of the current item's decoration after it has been in the vicinity of an undo. (allout-widgets-mode): Include allout-widgets-after-undo-function on the new allout-post-undo-hook.
-rw-r--r--lisp/ChangeLog15
-rw-r--r--lisp/allout-widgets.el10
-rw-r--r--lisp/allout.el12
3 files changed, 36 insertions, 1 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 66215266bdb..20679038120 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,18 @@
+2011-07-05 Ken Manheimer <ken.manheimer@gmail.com>
+
+ * allout.el (allout-post-undo-hook): New allout outline-change
+ event hook to signal undo activity.
+ (allout-post-command-business): Run allout-post-undo-hook if an
+ undo just occurred.
+ (allout-after-copy-or-kill-hook), (allout-mode): Minor docstring
+ changes.
+ * allout-widgets.el (allout-widgets-after-undo-function): Ensure
+ the integrity of the current item's decoration after it has been
+ in the vicinity of an undo.
+ (allout-widgets-mode): Include allout-widgets-after-undo-function
+ on the new allout-post-undo-hook.
+
+
2011-07-05 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/lisp-mode.el (lisp-interaction-mode-abbrev-table):
diff --git a/lisp/allout-widgets.el b/lisp/allout-widgets.el
index 8dab7411750..ef75e7157e6 100644
--- a/lisp/allout-widgets.el
+++ b/lisp/allout-widgets.el
@@ -561,6 +561,8 @@ outline hot-spot navigation \(see `allout-mode')."
'allout-widgets-shifts-recorder nil 'local)
(add-hook 'allout-after-copy-or-kill-hook
'allout-widgets-after-copy-or-kill-function nil 'local)
+ (add-hook 'allout-post-undo-hook
+ 'allout-widgets-after-undo-function nil 'local)
(add-hook 'before-change-functions 'allout-widgets-before-change-handler
nil 'local)
@@ -1130,6 +1132,14 @@ Dispatched by `allout-widgets-post-command-business' in response to
Intended for use on allout-after-copy-or-kill-hook."
(if (car kill-ring)
(setcar kill-ring (allout-widgets-undecorate-text (car kill-ring)))))
+;;;_ > allout-widgets-after-undo-function ()
+(defun allout-widgets-after-undo-function ()
+ "Do allout-widgets processing of text after an undo.
+
+Intended for use on allout-post-undo-hook."
+ (save-excursion
+ (if (allout-goto-prefix)
+ (allout-redecorate-item (allout-get-or-create-item-widget)))))
;;;_ > allout-widgets-exposure-undo-recorder (widget from-state)
(defun allout-widgets-exposure-undo-recorder (widget)
diff --git a/lisp/allout.el b/lisp/allout.el
index 5b8a7a7de1a..592a64c647a 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -1461,7 +1461,15 @@ This hook might be invoked multiple times by a single command.")
(defvar allout-after-copy-or-kill-hook nil
"*Hook that's run after copying outline text.
-Functions on the hook should not take any arguments.")
+Functions on the hook should not require any arguments.")
+;;;_ = allout-post-undo-hook
+(defvar allout-post-undo-hook nil
+ "*Hook that's run after undo activity.
+
+The item that's current when the hook is run *may* be the one
+that was affected by the undo.
+
+Functions on the hook should not require any arguments.")
;;;_ = allout-outside-normal-auto-fill-function
(defvar allout-outside-normal-auto-fill-function nil
"Value of normal-auto-fill-function outside of allout mode.
@@ -1874,6 +1882,7 @@ without changes to the allout core. Here are key ones:
`allout-structure-deleted-hook'
`allout-structure-shifted-hook'
`allout-after-copy-or-kill-hook'
+`allout-post-undo-hook'
Terminology
@@ -3313,6 +3322,7 @@ coordinating with allout activity.")
(when allout-just-did-undo
(setq allout-just-did-undo nil)
+ (run-hooks 'allout-post-undo-hook)
(cond ((and (= buffer-saved-size -1)
allout-auto-save-temporarily-disabled)
;; user possibly undid a decryption, deinhibit auto-save: