monnier pushed a commit to branch master in repository elpa. commit 5dbcfa1389c81a529d2075ddc3ece5c212f052f5 Author: Teemu Likonen <tliko...@iki.fi> 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