Files
@ 61a04483dab6
Branch filter:
Location: workgroups2/src/workgroups-advice.el - annotation
61a04483dab6
4.8 KiB
text/x-elisp
Removed ido.el
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | 088605c05794 088605c05794 088605c05794 443938b472d4 142088e5b0a3 5a6c3a89c877 443938b472d4 443938b472d4 443938b472d4 295f3038db4d 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 142088e5b0a3 142088e5b0a3 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 0f9f40f42c2f 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 247ddbd10593 247ddbd10593 247ddbd10593 443938b472d4 443938b472d4 443938b472d4 443938b472d4 247ddbd10593 443938b472d4 443938b472d4 443938b472d4 443938b472d4 0f9f40f42c2f 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 443938b472d4 247ddbd10593 247ddbd10593 247ddbd10593 443938b472d4 443938b472d4 443938b472d4 443938b472d4 088605c05794 | ;;; 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
|