Changeset - 028980b753ae
[Not reviewed]
0 1 0
Sergey Pashinin - 12 years ago 2014-02-26 00:10:50
sergey@pashinin.com
Disabled help-mode for now because of a bug #29

Personally I couldn't reproduce it, but 2 confirmed this.
1 file changed with 3 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/workgroups-specialbufs.el
Show inline comments
 
;;; workgroups-specialbufs --- special buffers serialization
 
;;; Commentary:
 
;;
 
;; TODO:
 
;;  1. Add more special buffers support (that you use)
 
;;  2. Improve existing
 
;;
 
;;; Code:
 

	
 
(require 'workgroups-variables)
 
(require 'workgroups-support-macro)
 

	
 
;; Dired
 
(wg-support 'dired-mode 'dired
 
            `((deserialize . ,(lambda (buffer vars)
 
                                (if (or wg-restore-remote-buffers
 
                                        (not (file-remote-p default-directory)))
 
                                    ;; TODO: try to restore parent dir if not exist
 
                                    (if (file-directory-p default-directory)
 
                                        (dired default-directory)))))))
 

	
 
;; Info-mode
 
(wg-support 'Info-mode 'info
 
            `((save . (Info-current-file Info-current-node))
 
              (deserialize . ,(lambda (buffer vars)
 
                                (wg-aif vars
 
                                    (if (fboundp 'Info-find-node)
 
                                        (apply #'Info-find-node it))
 
                                  (info))))))
 

	
 
;; help-mode
 
;; Bug: https://github.com/pashinin/workgroups2/issues/29
 
(if nil
 
(wg-support 'help-mode 'help-mode
 
            `((save . (help-xref-stack-item help-xref-stack help-xref-forward-stack))
 
              (deserialize . ,(lambda (buffer vars)
 
                               (wg-dbind (item stack forward-stack) vars
 
                                 (condition-case err
 
                                     (apply (car item) (cdr item))
 
                                   (error (message "%s" err)))
 
                                 (wg-awhen (get-buffer "*Help*")
 
                                   (set-buffer it)
 
                                   (wg-when-boundp (help-xref-stack help-xref-forward-stack)
 
                                     (setq help-xref-stack stack
 
                                           help-xref-forward-stack forward-stack))))))))
 
)
 

	
 
;; ielm
 
(wg-support 'inferior-emacs-lisp-mode 'ielm
 
            `((deserialize . ,(lambda (buffer vars) (ielm)))))
 

	
 
;; Magit status
 
(wg-support 'magit-status-mode 'magit
 
            `((deserialize . ,(lambda (buffer vars)
 
                                (when (file-directory-p default-directory)
 
                                  (magit-status default-directory))))))
 

	
 
;; Shell
 
(wg-support 'shell-mode 'shell
 
            `((deserialize . ,(lambda (buffer vars)
 
                                (shell (wg-buf-name buffer))))))
 

	
 
;; org-agenda buffer
 
(defun wg-get-org-agenda-view-commands ()
 
  "Return commands to restore the state of Agenda buffer.
 
Can be restored using \"(eval commands)\"."
 
  (interactive)
 
  (when (boundp 'org-agenda-buffer-name)
 
    (if (get-buffer org-agenda-buffer-name)
 
        (with-current-buffer org-agenda-buffer-name
 
          (let* ((p (or (and (looking-at "\\'") (1- (point))) (point)))
 
                 (series-redo-cmd (get-text-property p 'org-series-redo-cmd)))
 
            (if series-redo-cmd
 
                (get-text-property p 'org-series-redo-cmd)
 
              (get-text-property p 'org-redo-cmd)))))))
 

	
 
(defun wg-run-agenda-cmd (f)
 
  "Run commands F in Agenda buffer.
 
You can get these commands using `wg-get-org-agenda-view-commands'."
 
  (when (and (boundp 'org-agenda-buffer-name)
 
             (fboundp 'org-current-line)
 
             (fboundp 'org-goto-line))
 
    (if (get-buffer org-agenda-buffer-name)
 
        (save-window-excursion
 
          (with-current-buffer org-agenda-buffer-name
 
            (let* ((line (org-current-line)))
 
              (if f (eval f))
 
              (org-goto-line line)))))))
 

	
 
(wg-support 'org-agenda-mode 'org-agenda
 
            '((serialize . (lambda (buffer)
 
                             (wg-get-org-agenda-view-commands)))
 
              (deserialize . (lambda (buffer vars)
 
                               (org-agenda-list)
0 comments (0 inline, 0 general)