diff --git a/src/workgroups-advice.el b/src/workgroups-advice.el deleted file mode 100644 index 5ad48ae9b05bf5d157a9c977f52c3afcf55d9603..0000000000000000000000000000000000000000 --- a/src/workgroups-advice.el +++ /dev/null @@ -1,155 +0,0 @@ -;;; workgroups-advice --- change some functions behaviour -;;; Commentary: -;;; Code: - -(require 'workgroups-utils-basic) -(require 'workgroups-session) - - -;; `wg-pre-window-configuration-change-hook' implementation advice -(cl-macrolet ((define-p-w-c-c-h-advice - (fn) - `(defadvice ,fn (before wg-pre-window-configuration-change-hook) - "Call `wg-update-working-wconfig-hook' before this -function to save up-to-date undo information before the -window-configuration changes." - (run-hooks 'wg-pre-window-configuration-change-hook)))) - (define-p-w-c-c-h-advice split-window) - (define-p-w-c-c-h-advice enlarge-window) - (define-p-w-c-c-h-advice delete-window) - (define-p-w-c-c-h-advice delete-other-windows) - (define-p-w-c-c-h-advice delete-windows-on) - (define-p-w-c-c-h-advice switch-to-buffer) - (define-p-w-c-c-h-advice set-window-buffer)) - - -;; `save-buffers-kill-emacs' advice - -(defadvice save-buffers-kill-emacs (around wg-freeze-wconfig) - "`save-buffers-kill-emacs' calls `list-processes' when active -processes exist, screwing up the window config right before -Workgroups saves it. This advice freezes `wg-current-wconfig' in -its correct state, prior to any window-config changes caused by -`s-b-k-e'." - (wg-with-current-wconfig nil (wg-frame-to-wconfig) - ad-do-it)) - - -;; `select-frame' advice - -(defadvice select-frame (before wg-update-current-workgroup-working-wconfig) - "Update `selected-frame's current workgroup's working-wconfig. -Before selecting a new frame." - (when wg-update-current-workgroup-working-wconfig-on-select-frame - (wg-update-current-workgroup-working-wconfig))) - - -;; enable all advice - -(defun wg-enable-all-advice () - "Enable and activate all of Workgroups' advice." - - ;; From advice.el: - ;; - ;; (defmacro ad-define-subr-args (subr arglist) - ;; `(put ,subr 'ad-subr-arglist (list ,arglist))) - - ;; switch-to-buffer - ;; (ad-define-subr-args 'switch-to-buffer '(buffer-or-name &optional norecord)) - (ad-enable-advice 'switch-to-buffer 'before 'wg-pre-window-configuration-change-hook) - (ad-activate 'switch-to-buffer) - - ;; set-window-buffer - ;; (ad-define-subr-args 'set-window-buffer '(window buffer-or-name &optional keep-margins)) - (ad-enable-advice - 'set-window-buffer 'before 'wg-pre-window-configuration-change-hook) - (ad-activate 'set-window-buffer) - - ;; split-window - (ad-enable-advice - 'split-window 'before 'wg-pre-window-configuration-change-hook) - (ad-activate 'split-window) - - ;; enlarge-window - (ad-enable-advice - 'enlarge-window 'before 'wg-pre-window-configuration-change-hook) - (ad-activate 'enlarge-window) - - ;; delete-window - (ad-enable-advice - 'delete-window 'before 'wg-pre-window-configuration-change-hook) - (ad-activate 'delete-window) - - ;; delete-other-windows - (ad-enable-advice - 'delete-other-windows 'before 'wg-pre-window-configuration-change-hook) - (ad-activate 'delete-other-windows) - - ;; delete-windows-on - (ad-enable-advice - 'delete-windows-on 'before 'wg-pre-window-configuration-change-hook) - (ad-activate 'delete-windows-on) - - ;; save-buffers-kill-emacs - (ad-enable-advice 'save-buffers-kill-emacs 'around 'wg-freeze-wconfig) - (ad-activate 'save-buffers-kill-emacs) - - ;; select-frame - ;;(ad-enable-advice 'select-frame 'before - ;; 'wg-update-current-workgroup-working-wconfig) - ;;(ad-activate 'select-frame) - ) - - -;; disable all advice -;; (wg-disable-all-advice) -(defun wg-disable-all-advice () - "Disable and deactivate all of Workgroups' advice." - - ;; switch-to-buffer - (ad-disable-advice 'switch-to-buffer 'before 'wg-pre-window-configuration-change-hook) - (ad-deactivate 'switch-to-buffer) - - ;; set-window-buffer - (ad-disable-advice - 'set-window-buffer 'before 'wg-pre-window-configuration-change-hook) - (ad-deactivate 'set-window-buffer) - - ;; split-window - (ad-disable-advice - 'split-window 'before 'wg-pre-window-configuration-change-hook) - (ad-deactivate 'split-window) - - ;; enlarge-window - (ad-disable-advice - 'enlarge-window 'before 'wg-pre-window-configuration-change-hook) - (ad-deactivate 'enlarge-window) - - ;; delete-window - (ad-disable-advice - 'delete-window 'before 'wg-pre-window-configuration-change-hook) - (ad-deactivate 'delete-window) - - ;; delete-other-windows - (ad-disable-advice - 'delete-other-windows 'before 'wg-pre-window-configuration-change-hook) - (ad-deactivate 'delete-other-windows) - - ;; delete-windows-on - (ad-disable-advice - 'delete-windows-on 'before 'wg-pre-window-configuration-change-hook) - (ad-deactivate 'delete-windows-on) - - ;; save-buffers-kill-emacs - (ad-disable-advice 'save-buffers-kill-emacs 'around 'wg-freeze-wconfig) - (ad-deactivate 'save-buffers-kill-emacs) - - ;; select-frame - ;;(ad-disable-advice 'select-frame 'before - ;; 'wg-update-current-workgroup-working-wconfig) - ;;(ad-deactivate 'select-frame) - - ) - -(provide 'workgroups-advice) -;;; workgroups-advice.el ends here