diff options
author | Juri Linkov <juri@jurta.org> | 2010-06-05 22:02:31 +0300 |
---|---|---|
committer | Juri Linkov <juri@jurta.org> | 2010-06-05 22:02:31 +0300 |
commit | 157eaca5524d5931c71d84905ad41bd4327d49e1 (patch) | |
tree | 8cad0adba53be7c8a5e2736f75c326235bd75c1f | |
parent | 99e38059b2c497e766125060845c45f4a3b92c16 (diff) | |
download | emacs-x-tabs.tar.gz |
Save and restore tab-local buffer-lists in frame-local buffer-lists.x-tabs
-rw-r--r-- | lisp/tab.el | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/lisp/tab.el b/lisp/tab.el index bf2fdf076a1..c3f8c2772a8 100644 --- a/lisp/tab.el +++ b/lisp/tab.el @@ -99,8 +99,14 @@ Return a newly created frame displaying the current buffer." ;; set-window-configuration does not restore the value ;; of point in the current buffer, so record that separately. (point-marker) - nil ;; tab-history-back - nil ;; tab-history-forward + nil ;; tab-history-back + nil ;; tab-history-forward + (delq nil (mapcar + (lambda (b) (and (buffer-live-p b) b)) + (frame-parameter frame 'buffer-list))) + (delq nil (mapcar + (lambda (b) (and (buffer-live-p b) b)) + (frame-parameter frame 'buried-buffer-list))) ))) ;; FIXME: use `AFTER'. When nil, use default of custom `tab-after'. (modify-frame-parameters @@ -149,10 +155,16 @@ This function returns TAB, or nil if TAB has been deleted." (tab-name (assq 'name (nth 1 tab-param))) (tab-new-param (assq tab tab-list))) (when tab-param - (setcar (cddr tab-param) (current-window-configuration frame)) - (setcar (cdr (cddr tab-param)) (point-marker)) - (setcar (cddr (cddr tab-param)) tab-history-back) - (setcar (cdr (cddr (cddr tab-param))) tab-history-forward) + (setcar (nthcdr 2 tab-param) (current-window-configuration frame)) + (setcar (nthcdr 3 tab-param) (point-marker)) + (setcar (nthcdr 4 tab-param) tab-history-back) + (setcar (nthcdr 5 tab-param) tab-history-forward) + (setcar (nthcdr 6 tab-param) + (delq nil (mapcar (lambda (b) (and (buffer-live-p b) b)) + (frame-parameter frame 'buffer-list)))) + (setcar (nthcdr 7 tab-param) + (delq nil (mapcar (lambda (b) (and (buffer-live-p b) b)) + (frame-parameter frame 'buried-buffer-list)))) (if tab-name (setcdr tab-name (tab-name frame)))) (modify-frame-parameters frame (list (cons 'selected-tab tab))) (set-window-configuration (nth 2 tab-new-param)) @@ -163,6 +175,14 @@ This function returns TAB, or nil if TAB has been deleted." (goto-char (nth 3 tab-new-param))) (setq tab-history-back (nth 4 tab-new-param)) (setq tab-history-forward (nth 5 tab-new-param)) + (modify-frame-parameters + frame (list (cons 'buffer-list + (delq nil (mapcar (lambda (b) (and (buffer-live-p b) b)) + (nth 6 tab-new-param)))))) + (modify-frame-parameters + frame (list (cons 'buried-buffer-list + (delq nil (mapcar (lambda (b) (and (buffer-live-p b) b)) + (nth 7 tab-new-param)))))) (tab-bar-setup frame))) (defun delete-tab (&optional tab frame) |