Changeset - b89b3fae0af7
[Not reviewed]
0 1 0
Sergey Pashinin - 12 years ago 2013-08-26 14:12:49
sergey@pashinin.com
fixed autocreation of first workgroup
1 file changed with 4 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/workgroups2.el
Show inline comments
 
@@ -143,103 +143,104 @@
 

	
 
;;; workgroups-mode
 

	
 
(defun wg-reload-session ()
 
  "Reload current workgroups session."
 
  (interactive)
 
  (let ((file (or (wg-determine-session-save-file-name)
 
                  wg-default-session-file)))
 
    (when (file-exists-p file)
 
      (condition-case err
 
          (wg-find-session-file wg-default-session-file)
 
        (error (message "Error finding session-file: %s" err))))))
 

	
 
(defun wg-find-session-file-on-workgroups-mode-entry ()
 
  "This function is called when activating workgroups mode. It
 
loads a session file set in `wg-default-session-file' variable if
 
`wg-use-default-session-file' is t."
 
  (when (and wg-use-default-session-file
 
             (file-exists-p wg-default-session-file))
 
    (condition-case err
 
        (wg-find-session-file wg-default-session-file)
 
      (error (message "Error finding `wg-default-session-file': %s" err)))))
 

	
 
(defun wg-save-session-on-emacs-exit ()
 
  "Call `wg-save-session-on-exit' with `wg-emacs-exit-save-behavior'.
 
Added to `kill-emacs-query-functions'."
 
  (wg-save-session-on-exit wg-emacs-exit-save-behavior)
 
  t)
 

	
 
(defun wg-save-session-on-workgroups-mode-exit ()
 
  "Call `wg-save-session-on-exit' with `wg-workgroups-mode-exit-save-behavior'.
 
Called when `workgroups-mode' is turned off."
 
  (wg-save-session-on-exit wg-workgroups-mode-exit-save-behavior)
 
  t)
 

	
 
(defun wg-add-or-remove-workgroups-hooks (remove)
 
  "Add or remove all of Workgroups' hooks, depending on REMOVE."
 
  (wg-add-or-remove-hooks
 
   remove
 
   'kill-emacs-query-functions 'wg-save-session-on-emacs-exit
 
   'delete-frame-hook 'wg-update-working-wconfig-on-delete-frame
 
   'wg-pre-window-configuration-change-hook 'wg-update-working-wconfig-hook
 
   'window-configuration-change-hook 'wg-flag-window-configuration-changed
 
   'post-command-hook 'wg-undoify-window-configuration-change
 
   'minibuffer-setup-hook 'wg-turn-on-minibuffer-mode
 
   'minibuffer-exit-hook 'wg-flag-just-exited-minibuffer
 
   'minibuffer-exit-hook 'wg-turn-off-minibuffer-mode
 
   'ido-make-buffer-list-hook 'wg-set-ido-buffer-list
 
   'iswitchb-make-buflist-hook 'wg-set-iswitchb-buffer-list
 
   'kill-buffer-hook 'wg-auto-dissociate-buffer-hook
 
   'kill-buffer-hook 'wg-update-buffer-in-buf-list
 
   'window-configuration-change-hook 'wg-associate-frame-buffers
 
   'after-make-frame-functions 'wg-after-make-frame))
 

	
 
(defun wg-add-workgroups-mode-minor-mode-entries ()
 
  "Add Workgroups' minor-mode entries.
 
Adds entries to `minor-mode-list', `minor-mode-alist' and
 
`minor-mode-map-alist'."
 
  (pushnew 'workgroups-mode minor-mode-list)
 
  (pushnew '(workgroups-mode " wg") minor-mode-alist :test 'equal)
 
  (setq minor-mode-map-alist
 
        (cons (cons 'workgroups-mode (wg-make-workgroups-mode-map))
 
              (delete (assoc 'workgroups-mode minor-mode-map-alist)
 
                      minor-mode-map-alist))))
 

	
 
(defun workgroups-mode (&optional arg)
 
  "Turns `workgroups-mode' on and off.
 
If ARG is null, toggle `workgroups-mode'.
 
If ARG is an integer greater than zero, turn on `workgroups-mode'.
 
If ARG is an integer less one, turn off `workgroups-mode'.
 
If ARG is anything else, turn on `workgroups-mode'."
 
  (interactive (list current-prefix-arg))
 
  (setq workgroups-mode
 
        (cond ((not arg) (not workgroups-mode))
 
              ((integerp arg) (if (> arg 0) t nil))
 
              (t)))
 
  (cond
 
   (workgroups-mode
 
    (wg-reset-internal)
 
    (wg-add-workgroups-mode-minor-mode-entries)
 
    (wg-enable-all-advice)
 
    (wg-add-or-remove-workgroups-hooks nil)
 
    ;;(mapcar 'wg-after-make-frame (frame-list))
 
    (mapc 'wg-after-make-frame (frame-list))
 
    (wg-add-mode-line-display)
 
    (wg-find-session-file-on-workgroups-mode-entry)
 
    (run-hooks 'workgroups-mode-hook))
 
   (t
 
    (wg-save-session-on-workgroups-mode-exit)
 
    (wg-disable-all-advice)
 
    (wg-add-or-remove-workgroups-hooks t)
 
    (wg-remove-mode-line-display)
 
    (run-hooks 'workgroups-mode-exit-hook)))
 
  (wg-fontified-message
 
    (:cmd "Workgroups Mode: ")
 
    (:msg (if workgroups-mode "on" "off")))
 
  ;;(if (and workgroups-mode
 
  ;;         (= (length (wg-workgroup-list)) 0))
 
  ;;    (wg-create-workgroup "First workgroup"))
 
  (if (and workgroups-mode
 
           wg-use-default-session-file
 
           (= (length (wg-workgroup-list)) 0))
 
      (wg-create-workgroup "First workgroup"))
 
  workgroups-mode)
 

	
 
(provide 'workgroups2)
 
;;; workgroups2.el ends here
0 comments (0 inline, 0 general)