:help "New tab"))))))
\f
+;; Some window-configuration parameters don't need to be persistent.
+;; Don't save to the desktop file such tab parameters that are saved
+;; as "Unprintable entity" so can't be used after restoring the desktop.
+;; Actually tab-bar-select-tab already can handle unprintable entities,
+;; but it's better not to waste the desktop file with useless data.
+(defun frameset-filter-tabs (current _filtered _parameters saving)
+ (if saving
+ (mapcar (lambda (current)
+ (if (consp current)
+ (seq-reduce (lambda (current param)
+ (assq-delete-all param current))
+ '(wc wc-point wc-bl wc-bbl wc-history-back wc-history-forward)
+ (copy-sequence current))
+ current))
+ current)
+ current))
+
+(push '(tabs . frameset-filter-tabs) frameset-filter-alist)
+
(defun tab-bar--tab ()
(let* ((tab (assq 'current-tab (frame-parameter nil 'tabs)))
(tab-explicit-name (cdr (assq 'explicit-name tab)))
(funcall tab-bar-tab-name-function)))
(explicit-name . ,tab-explicit-name)
(time . ,(time-convert nil 'integer))
+ (ws . ,(window-state-get
+ (frame-root-window (selected-frame)) 'writable))
(wc . ,(current-window-configuration))
(wc-point . ,(point-marker))
(wc-bl . ,bl)
(wc-bbl . ,bbl)
(wc-history-back . ,(gethash (selected-frame) tab-bar-history-back))
- (wc-history-forward . ,(gethash (selected-frame) tab-bar-history-forward))
- (ws . ,(window-state-get
- (frame-root-window (selected-frame)) 'writable))
- (ws-bl . ,(mapcar #'buffer-name bl))
- (ws-bbl . ,(mapcar #'buffer-name bbl)))))
+ (wc-history-forward . ,(gethash (selected-frame) tab-bar-history-forward)))))
(defun tab-bar--current-tab (&optional tab)
;; `tab` here is an argument meaning 'use tab as template'. This is
tab-bar-history-forward)))
(ws
- (window-state-put ws (frame-root-window (selected-frame)) 'safe)
-
- (let ((ws-bl (seq-filter #'buffer-live-p
- (mapcar #'get-buffer (cdr (assq 'ws-bl to-tab)))))
- (ws-bbl (seq-filter #'buffer-live-p
- (mapcar #'get-buffer (cdr (assq 'ws-bbl to-tab))))))
- (when ws-bl (set-frame-parameter nil 'buffer-list ws-bl))
- (when ws-bbl (set-frame-parameter nil 'buried-buffer-list ws-bbl)))))
+ (window-state-put ws (frame-root-window (selected-frame)) 'safe)))
(setq tab-bar-history-omit t)