monnier pushed a commit to branch master
in repository elpa.
commit 5dbcfa1389c81a529d2075ddc3ece5c212f052f5
Author: Teemu Likonen <[email protected]>
Date: Wed Jul 22 07:59:05 2009 +0000
Siirretään koukkujen asennus omiin funktioihinsa
---
wcheck-mode.el | 64 ++++++++++++++++++++++++++++++++++++-------------------
1 files changed, 42 insertions(+), 22 deletions(-)
diff --git a/wcheck-mode.el b/wcheck-mode.el
index d9997ad..6000692 100644
--- a/wcheck-mode.el
+++ b/wcheck-mode.el
@@ -370,20 +370,11 @@ information on how to configure Wcheck mode. Interactive
command
;; Add buffer-local hooks. These ask for updates for the buffer
;; or may sometimes automatically turn off the mode.
- (add-hook 'kill-buffer-hook #'wcheck-hook-kill-buffer nil t)
- (add-hook 'window-scroll-functions #'wcheck-hook-window-scroll nil t)
- (add-hook 'after-change-functions #'wcheck-hook-after-change nil t)
- (add-hook 'change-major-mode-hook
- #'wcheck-hook-change-major-mode nil t)
- (add-hook 'outline-view-change-hook
- #'wcheck-hook-outline-view-change nil t)
+ (wcheck-add-local-hooks (current-buffer))
;; Add global hooks. It's probably sufficient to add these only
;; once but it's no harm to ensure their existence every time.
- (add-hook 'window-size-change-functions
- #'wcheck-hook-window-size-change)
- (add-hook 'window-configuration-change-hook
- #'wcheck-hook-window-configuration-change)
+ (wcheck-add-global-hooks)
;; Add this buffer to the bookkeeper.
(wcheck-update-buffer-process-data (current-buffer) wcheck-language)
@@ -411,22 +402,13 @@ information on how to configure Wcheck mode. Interactive
command
;; If there are no buffers using Wcheck mode anymore, stop the idle
;; timer and remove global hooks.
(when (not wcheck-buffer-process-data)
- (remove-hook 'window-size-change-functions
- #'wcheck-hook-window-size-change)
- (remove-hook 'window-configuration-change-hook
- #'wcheck-hook-window-configuration-change)
+ (wcheck-remove-global-hooks)
(when wcheck-timer
(cancel-timer wcheck-timer)
(setq wcheck-timer nil)))
;; Remove buffer-local hooks.
- (remove-hook 'kill-buffer-hook #'wcheck-hook-kill-buffer t)
- (remove-hook 'window-scroll-functions #'wcheck-hook-window-scroll t)
- (remove-hook 'after-change-functions #'wcheck-hook-after-change t)
- (remove-hook 'change-major-mode-hook
- #'wcheck-hook-change-major-mode t)
- (remove-hook 'outline-view-change-hook
- #'wcheck-hook-outline-view-change t)))
+ (wcheck-remove-local-hooks (current-buffer))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -556,6 +538,44 @@ call. The delay between consecutive calls is defined in
variable
;;; Hooks
+(defun wcheck-add-local-hooks (buffer)
+ (with-current-buffer buffer
+ (dolist (hook '((kill-buffer-hook . wcheck-hook-kill-buffer)
+ (window-scroll-functions . wcheck-hook-window-scroll)
+ (after-change-functions . wcheck-hook-after-change)
+ (change-major-mode-hook . wcheck-hook-change-major-mode)
+ (outline-view-change-hook
+ . wcheck-hook-outline-view-change)))
+ (add-hook (car hook) (cdr hook) nil t))))
+
+
+(defun wcheck-remove-local-hooks (buffer)
+ (with-current-buffer buffer
+ (dolist (hook '((kill-buffer-hook . wcheck-hook-kill-buffer)
+ (window-scroll-functions . wcheck-hook-window-scroll)
+ (after-change-functions . wcheck-hook-after-change)
+ (change-major-mode-hook . wcheck-hook-change-major-mode)
+ (outline-view-change-hook
+ . wcheck-hook-outline-view-change)))
+ (remove-hook (car hook) (cdr hook) t))))
+
+
+(defun wcheck-add-global-hooks ()
+ (dolist (hook '((window-size-change-functions
+ . wcheck-hook-window-size-change)
+ (window-configuration-change-hook
+ . wcheck-hook-window-configuration-change)))
+ (add-hook (car hook) (cdr hook))))
+
+
+(defun wcheck-remove-global-hooks ()
+ (dolist (hook '((window-size-change-functions
+ . wcheck-hook-window-size-change)
+ (window-configuration-change-hook
+ . wcheck-hook-window-configuration-change)))
+ (remove-hook (car hook) (cdr hook))))
+
+
(defun wcheck-hook-window-scroll (window window-start)
"`wcheck-mode' hook for window scroll.
Request update for the buffer when its window have been