403Webshell
Server IP : 217.160.0.212  /  Your IP : 216.73.216.141
Web Server : Apache
System : Linux www 6.18.51-i1-ampere #1196 SMP Fri Sep 11 20:43:55 CEST 2026 aarch64
User : sws1073854427 ( 1073854427)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /usr/share/emacs/28.2/lisp/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/share/emacs/28.2/lisp//tab-bar.elc
;ELC
;;; Compiled
;;; in Emacs version 28.2
;;; with all optimizations.



(byte-code "\300\301\302\303\304\305\306\307&\210\300\310\311\312\304\301\304\313\306\307&	\210\314\315\316\317\306\307\304\310&\210\314\320\321\322\306\307\304\310&\210\314\323\324\325\306\326\304\310&\210\314\327\330\331\306\326\304\310&\210\314\332\333\334\306\326\304\310&\210\335\336\337\340\341DD\342\343\344\345\346\347\350\304\301\306\307&
\207" [custom-declare-group tab-bar nil "Frame-local tabs." :group convenience :version "27.1" tab-bar-faces ((tab-bar custom-face)) "Faces used in the tab bar." faces custom-declare-face tab-bar-tab ((default :inherit tab-bar) (((class color) (min-colors 88)) :box (:line-width 1 :style released-button)) (t :inverse-video nil)) "Tab bar face for selected tab." tab-bar-tab-inactive ((default :inherit tab-bar-tab) (((class color) (min-colors 88)) :background "grey75") (t :inverse-video t)) "Tab bar face for non-selected tab." tab-bar-tab-group-current ((t :inherit tab-bar-tab :box nil :weight bold)) "Tab bar face for current group tab." "28.1" tab-bar-tab-group-inactive ((t :inherit (shadow tab-bar-tab-inactive))) "Tab bar face for inactive group tab." tab-bar-tab-ungrouped ((t :inherit (shadow tab-bar-tab-inactive))) "Tab bar face for ungrouped tab when tab groups are used." custom-declare-variable tab-bar-select-tab-modifiers funcall function #[0 "\300\207" [nil] 1 ""] "List of modifier keys for selecting tab-bar tabs by their numbers.\nPossible modifier keys are `control', `meta', `shift', `hyper', `super' and\n`alt'.  Pressing one of the modifiers in the list and a digit selects the\ntab whose number equals the digit (see `tab-bar-select-tab').\nThe digit 9 selects the last (rightmost) tab (see `tab-last').\nThe digit 0 selects the most recently visited tab (see `tab-recent').\nFor easier selection of tabs by their numbers, consider customizing\n`tab-bar-tab-hints', which will show tab numbers alongside the tab name." :type (set :tag "Tab selection modifier keys" (const control) (const meta) (const shift) (const hyper) (const super) (const alt)) :initialize custom-initialize-default :set #[514 "\301\"\210\205\302 \210\303 \207" [tab-bar-mode set-default tab-bar--undefine-keys tab-bar--define-keys] 5 "\n\n(fn SYM VAL)"]] 14)
#@82 Install key bindings for switching between tabs if the user has configured them.
(defalias 'tab-bar--define-keys #[0 "\2037\303\304\305\306C\"!\307\"\210\310\211\311W\203+\303\304\305T\306\\C\"!\312\"\210\211T\262\202\210\303\304\305\313C\"!\314\"\210\315\316!\204B\303\317\320\"\210\315\321!\204M\303\322\323\"\210\315\324!\204X\303\325\323\"\210\326	>\205~\327\n\235\205~\330\n\236\211\203r\211\331\241\210\202{\330\331B\211\262\nB\331\262\207" [tab-bar-select-tab-modifiers tab-bar-format mode-line-misc-info global-set-key vector append 48 tab-recent 0 8 tab-bar-select-tab 57 tab-last global-key-binding [(control tab)] [(control tab)] tab-next [(control shift tab)] [(control shift tab)] tab-previous [(control shift iso-lefttab)] [(control shift iso-lefttab)] tab-bar-format-global (global-mode-string (#1="" global-mode-string)) global-mode-string ((#1# (:eval (if (and tab-bar-mode (memq 'tab-bar-format-global tab-bar-format)) #1# global-mode-string))))] 7 (#$ . 2301)])
#@68 Uninstall key bindings previously bound by `tab-bar--define-keys'.
(defalias 'tab-bar--undefine-keys #[0 "\300\301!\302=\203\f\303\304!\210\300\305!\306=\203\303\307!\210\300\310!\306=\205#\303\311!\207" [global-key-binding [(control tab)] tab-next global-unset-key [(control tab)] [(control shift tab)] tab-previous [(control shift tab)] [(control shift iso-lefttab)] [(control shift iso-lefttab)]] 2 (#$ . 3308)])
#@37 Load the icons for the tab buttons.
(defalias 'tab-bar--load-buttons #[0 "\203$\303\304\305#\204$\306\304G\305\307\310\311\312\313\314	\315BBBBBBBD$\210\n\205H\303\304\305\n#?\205H\306\304\nG\305\307\310\311\312\316\314	\317BBBBBBBD\n$\207" [tab-bar-new-button tab-bar-button-margin tab-bar-close-button get-text-property 0 display add-text-properties image :type xpm :file "tabs/new.xpm" :margin (:ascent center) "tabs/close.xpm" (:ascent center)] 12 (#$ . 3734)])
#@228 Determine and return the value of `tab-bar-lines' for FRAME.
Return 0 if `tab-bar-mode' is not enabled.  Otherwise return
either 1 or 0 depending on the value of the customizable variable
`tab-bar-show', which see.

(fn FRAME)
(defalias 'tab-bar--tab-bar-lines-for-frame #[257 "\204\303\207	\304\267\202\303\207\305\207\306	!\205\"\n!G	V\203!\305\207\303\207" [tab-bar-mode tab-bar-show tab-bar-tabs-function 0 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (nil 12 t 14)) 1 natnump] 3 (#$ . 4215)])
#@291 Update the `tab-bar-lines' frame parameter in FRAMES.
If the optional parameter FRAMES is omitted, update only
the currently selected frame.  If it is t, update all frames
as well as the default for new frames.  Otherwise FRAMES should be
a list of frames to update.

(fn &optional FRAMES)
(defalias 'tab-bar--update-tab-bar-lines #[256 "\211\303\267\202\304 C\202\305 \202\211\211\211\203/\211@\306\307\"\204(\310\311\312!#\210A\266\202\202\266\211\313=\205O\311\203F	\313=\203F\314\202G\315B\316\311\n\"B\211\207" [tab-bar-mode tab-bar-show default-frame-alist #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (nil 6 t 12)) selected-frame frame-list frame-parameter tab-bar-lines-keep-state set-frame-parameter tab-bar-lines tab-bar--tab-bar-lines-for-frame t 1 0 assq-delete-all] 9 (#$ . 4768)])
#@609 Toggle the tab bar in all graphical frames (Tab Bar mode).

This is a minor mode.  If called interactively, toggle the `Tab-Bar
mode' mode.  If the prefix argument is positive, enable the mode, and
if it is zero or negative, disable the mode.

If called from Lisp, toggle the mode if ARG is `toggle'.  Enable the
mode if ARG is nil, omitted, or is a positive number.  Disable the
mode if ARG is a negative number.

To check whether the minor mode is enabled in the current buffer,
evaluate `tab-bar-mode'.

The mode's hook is called both when the mode is enabled and when it is
disabled.

(fn &optional ARG)
(defalias 'tab-bar-mode #[256 "\302 \303=\203
?\202\247\203\304W\203\305\202\306\307\301!\2031\310\300	\"\2031\300	B\311\306!\210\203<\312 \210\203F\313 \210\202I\314 \210\315\316\203S\317\202T\320\"\210\321\322!\203v\302 \203h\211\302 \232\203v\323\324\203r\325\202s\326\327#\210\210\330 \210\207" [tab-bar-mode global-minor-modes current-message toggle 1 nil t boundp delq tab-bar--update-tab-bar-lines tab-bar--load-buttons tab-bar--define-keys tab-bar--undefine-keys run-hooks tab-bar-mode-hook tab-bar-mode-on-hook tab-bar-mode-off-hook called-interactively-p any message "Tab-Bar mode %sabled%s" "en" "dis" "" force-mode-line-update] 6 (#$ . 5631) (byte-code "\203\n\301!\202\302C\207" [current-prefix-arg prefix-numeric-value toggle] 2)])
(defvar tab-bar-mode-hook nil)
(byte-code "\301\302N\204\f\303\301\302\304#\210\303\301\305\306#\210\303\301\307\310C#\210\311\312\310\313\300!\205#\310\211%\207" [tab-bar-mode-map tab-bar-mode-hook variable-documentation put "Hook run after entering or leaving `tab-bar-mode'.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" custom-type hook standard-value nil add-minor-mode tab-bar-mode boundp] 6)
#@210 Return the tab number represented by KEY.
If KEY is a symbol 'tab-N', where N is a tab number, the value is N.
If KEY is \='current-tab, the value is nil.
For any other value of KEY, the value is t.

(fn KEY)
(defalias 'tab-bar--key-to-number #[257 "\211\300\267\202\n\301\207\302\207\303\304\"\305\306\"\205\307\310\306\311#!\262\206\"\301\207" [#s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (nil 6 current-tab 8)) t nil format "%S" string-prefix-p "tab-" string-to-number string-replace ""] 7 (#$ . 7515)])
#@352 This function extracts extra info from the mouse event at position POSN.
It returns a list of the form (KEY KEY-BINDING CLOSE-P), where:
 KEY is a symbol representing a tab, such as \='tab-1 or \='current-tab;
 KEY-BINDING is the binding of KEY;
 CLOSE-P is non-nil if the mouse event was a click on the close button "x",
   nil otherwise.

(fn POSN)
(defalias 'tab-bar--event-to-item #[257 "\301\211\211@\262\203\302!@\211\205\303\304\305#\207\211\3068\262@\307\310\311 \237B\312\"\304C\205:\3132:\314\315\316#\"0\207" [tab-bar--dragging-in-progress nil posn-string get-text-property 0 menu-item 2 lookup-key keymap current-active-maps [tab-bar] done map-keymap make-closure #[514 "\211\242\302=\2050\301\242A@G\\\300V\203'\303\304\3058\306\300\301\242Z\307A@#E\"\210\301\211\242A@G\\\240\207" [V0 V1 menu-item throw done 2 get-text-property close-tab] 10 "\n\n(fn KEY BINDING)"]] 9 (#$ . 8078)])
#@213 Select the tab at mouse click, or add a new tab on the tab bar.
Whether this command adds a new tab or selects an existing tab
depends on whether the click is on the "+" button or on an
existing tab.

(fn EVENT)
(defalias 'tab-bar-mouse-down-1 #[257 "\301\302!!\303@!\304@\305>\206\3068?\2051\307A@!\203'\310A@!\207\211\304=?\2051\311!\207" [tab-bar--dragging-in-progress tab-bar--event-to-item event-start tab-bar--key-to-number t (add-tab history-back history-forward) 2 functionp call-interactively tab-bar-select-tab] 5 (#$ . 9007) "e"])
#@176 Close the tab whose "x" close button you click.
See also `tab-bar-mouse-close-tab', which closes the tab
regardless of where you click on it.  Also add a new tab.

(fn EVENT)
(defalias 'tab-bar-mouse-1 #[257 "\300\301!!\302@!@\303>\203\304A@!\203\305A@!\207\3068\205.\211\307=?\205.\310!\207" [tab-bar--event-to-item event-start tab-bar--key-to-number (add-tab history-back history-forward) functionp call-interactively 2 t tab-bar-close-tab] 5 (#$ . 9569) "e"])
#@147 Close the tab you click on.
This is in contrast with `tab-bar-mouse-1' that closes a tab
only when you click on its "x" close button.

(fn EVENT)
(defalias 'tab-bar-mouse-close-tab #[257 "\300\301!!\302@!\211\303=?\205\304!\207" [tab-bar--event-to-item event-start tab-bar--key-to-number t tab-bar-close-tab] 5 (#$ . 10052) "e"])
#@69 Pop up the context menu for the tab on which you click.

(fn EVENT)
(defalias 'tab-bar-mouse-context-menu #[257 "\301\302!!\303@!\304\305\306\307\310#!\310=\203)\311\312\313#\210\203v\311\314\315#\210\202v\311\316\317\320\321\322\323\324\322EF\325BBB#\210\311\326\317\327\321\322\330\331\nDF\332BBB#\210\311\333\317\334\321\322\335\336\nDF\337BBB#\210\311\340\317\341\321\322\342\343\nDF\344BBB#\210\345\"\207" [tab-bar-closed-tabs tab-bar--event-to-item event-start tab-bar--key-to-number make-sparse-keymap propertize "Context Menu" hide t define-key-after [new-tab] (menu-item "New tab" tab-bar-new-tab :help "Create a new tab") [undo-close] (menu-item "Reopen closed tab" tab-bar-undo-close-tab :help "Undo closing the tab") [duplicate-tab] menu-item "Duplicate" lambda nil (interactive) tab-bar-duplicate-tab (:help "Clone the tab") [detach-tab] "Detach" (interactive) tab-bar-detach-tab (:help "Move the tab to new frame") [close] "Close" (interactive) tab-bar-close-tab (:help "Close the tab") [close-other] "Close other tabs" (interactive) tab-bar-close-other-tabs (:help "Close all other tabs") popup-menu] 15 (#$ . 10393) "e"])
#@187 Move a tab to a different position on the tab bar.
This command should be bound to a drag event.  It moves the tab
at the mouse-down event to the position at mouse-up event.

(fn EVENT)
(defalias 'tab-bar-mouse-move-tab #[257 "\301\302\303\304!!@!\302\303\305!!@!=\206!\306=\206!\211\306=?\2053\307\2040\310 T\2021\"\207" [tab-bar--dragging-in-progress nil tab-bar--key-to-number tab-bar--event-to-item event-start event-end t tab-bar-move-tab-to tab-bar--current-tab-index] 6 (#$ . 11558) "e"])
#@46 Keymap for the commands used on the tab bar.
(defvar tab-bar-map (byte-code "\300 \301\302\303#\210\301\304\305#\210\301\306\307#\210\301\310\311#\210\301\312\313#\210\301\314\315#\210\301\316\317#\210\301\320\321#\210\301\322\317#\210\301\323\321#\210\301\324\317#\210\301\325\321#\210\301\326\327#\210\301\330\331#\210\301\332\327#\210\301\333\331#\210\301\334\327#\210\301\335\331#\210\207" [make-sparse-keymap define-key [down-mouse-1] tab-bar-mouse-down-1 [drag-mouse-1] tab-bar-mouse-move-tab [mouse-1] tab-bar-mouse-1 [down-mouse-2] tab-bar-mouse-close-tab [mouse-2] ignore [down-mouse-3] tab-bar-mouse-context-menu [mouse-4] tab-previous [mouse-5] tab-next [wheel-up] [wheel-down] [wheel-left] [wheel-right] [S-mouse-4] tab-bar-move-tab-backward [S-mouse-5] tab-bar-move-tab [S-wheel-up] [S-wheel-down] [S-wheel-left] [S-wheel-right]] 5) (#$ . 12074))
(byte-code "\300\301\302\303\304!\305BB\"\207" [global-set-key [tab-bar] menu-item purecopy "tab bar" (ignore :filter tab-bar-make-keymap)] 5)
#@156 Generate an actual keymap from `tab-bar-map'.
Its main job is to show tabs in the tab bar
and to bind mouse events to the commands.

(fn &optional IGNORE)
(defalias 'tab-bar-make-keymap #[256 "\300 \207" [tab-bar-make-keymap-1] 2 (#$ . 13102)])
#@204 Toggle tab bar on or off, based on the status of the current frame.
Used in the Show/Hide menu, to have the toggle reflect the current frame.
See `tab-bar-mode' for more information.

(fn &optional ARG)
(defalias 'toggle-tab-bar-mode-from-frame #[256 "\211\300=\203\301\302\303\304\"\305V\203\305\202\306!\207\301!\207" [toggle tab-bar-mode frame-parameter nil tab-bar-lines 0 1] 5 (#$ . 13354) (byte-code "\206\301C\207" [current-prefix-arg toggle] 1)])
#@463 Toggle tab bar of the selected frame.
When calling from Lisp, use the optional argument FRAME to toggle
the tab bar on that frame.
This is useful if you want to enable the tab bar individually
on each new frame when the global `tab-bar-mode' is disabled,
or if you want to disable the tab bar individually on each
new frame when the global `tab-bar-mode' is enabled, by using

  (add-hook 'after-make-frame-functions 'toggle-frame-tab-bar)

(fn &optional FRAME)
(defalias 'toggle-frame-tab-bar #[256 "\300\301\302\301\"\303V\203\303\202\304#\210\300\305\302\305\"?#\207" [set-frame-parameter tab-bar-lines frame-parameter 0 1 tab-bar-lines-keep-state] 7 (#$ . 13826) nil])
(byte-code "\300\301\302\303\304DD\305\306\307\310\311\312\313\314\315\316\317&
\210\300\320\302\303\321DD\322\306\323\314\315\316\317&	\210\300\324\302\303\325DD\326\306\327\314\315\316\330&	\210\300\331\302\303\332DD\333\306\334\310\311\312\335\314\315\316\317&
\210\336\331\337\330#\207" [custom-declare-variable tab-bar-show funcall function #[0 "\300\207" [t] 1 #1=""] "Defines when to show the tab bar.\nIf t, the default, enable `tab-bar-mode' automatically upon using\nthe commands that create new window configurations (e.g., `tab-new').\nIf a non-negative integer, show the tab bar only if the number of\nthe tabs exceeds the value of this variable.  In particular,\nif the value is 1, hide the tab bar when it has only one tab, and\nshow it again once more tabs are created.  A value that is a\nnon-negative integer also makes the tab bar appearance be different\non different frames: the tab bar can be shown on some frames and\nhidden on others, depending on how many tab-bar tabs are on that\nframe, and whether that number is greater than the numerical value\nof this variable.\nIf nil, always keep the tab bar hidden.  In this case it's still\npossible to use persistent named window configurations by relying on\nkeyboard commands `tab-new', `tab-close', `tab-next', `tab-switcher', etc.\n\nSetting this variable directly does not take effect; please customize\nit (see the info node `Easy Customization'), then it will automatically\nupdate the tab bar on all frames according to the new value.\n\nTo enable or disable the tab bar individually on each frame,\nyou can use the command `toggle-frame-tab-bar'." :type (choice (const :tag "Always" t) (const :tag "When more than one tab" 1) (const :tag "Never" nil)) :initialize custom-initialize-default :set #[514 "\300\"\210\211\203
\301\302!\207\303\304!\207" [set-default tab-bar-mode 1 tab-bar--update-tab-bar-lines t] 5 "\n\n(fn SYM VAL)"] :group tab-bar :version "27.1" tab-bar-new-tab-choice #[0 "\300\207" [t] 1 #1#] "Defines what to show in a new tab.\nIf t, start a new tab with the current buffer, i.e. the buffer\nthat was current before calling the command that adds a new tab\n(this is the same what `make-frame' does by default).\nIf the value is a string, use it as a buffer name to switch to\nif such buffer exists, or switch to a buffer visiting the file or\ndirectory that the string specifies.  If the value is a function,\ncall it with no arguments and switch to the buffer that it returns.\nIf nil, duplicate the contents of the tab that was active\nbefore calling the command that adds a new tab." (choice (const :tag "Current buffer" t) (string :tag "Buffer" "*scratch*") (directory :tag "Directory" :value "~/") (file :tag "File" :value "~/.emacs") (function :tag "Function") (const :tag "Duplicate tab" nil)) tab-bar-new-tab-group #[0 "\300\207" [t] 1 #1#] "Defines what group to assign to a new tab.\nIf nil, don't set a default group automatically.\nIf t, inherit the group name from the previous tab.\nIf the value is a string, use it as the group name of a new tab.\nIf the value is a function, call it with no arguments\nto get the group name." (choice (const :tag "No automatic group" nil) (const :tag "Inherit group from previous tab" t) (string :tag "Fixed group name") (function :tag "Function that returns group name")) "28.1" tab-bar-new-button-show #[0 "\300\207" [t] 1 #1#] "If non-nil, show the \"New tab\" button in the tab bar.\nWhen this is nil, you can create new tabs with \\[tab-new]." boolean #[514 "\300\"\210\301 \207" [set-default force-mode-line-update] 5 "\n\n(fn SYM VAL)"] make-obsolete-variable tab-bar-format] 14)
#@32 Button for creating a new tab.
(defvar tab-bar-new-button " + " (#$ . 18154))
(byte-code "\300\301\302\303\304DD\305\306\307\310\311\312\313\314\315\316\317&
\207" [custom-declare-variable tab-bar-close-button-show funcall function #[0 "\300\207" [t] 1 ""] "Defines where to show the close tab button.\nIf t, show the close tab button on all tabs.\nIf `selected', show it only on the selected tab.\nIf `non-selected', show it only on non-selected tab.\nIf nil, don't show it at all." :type (choice (const :tag "On all tabs" t) (const :tag "On selected tab" selected) (const :tag "On non-selected tabs" non-selected) (const :tag "None" nil)) :initialize custom-initialize-default :set #[514 "\300\"\210\301 \207" [set-default force-mode-line-update] 5 "\n\n(fn SYM VAL)"] :group tab-bar :version "27.1"] 14)
#@37 Button for closing the clicked tab.
(defvar tab-bar-close-button (propertize " x" 'close-tab t :help "Click to close tab") (#$ . 18969))
#@39 Button for going back in tab history.
(defvar tab-bar-back-button " < " (#$ . 19112))
#@42 Button for going forward in tab history.
(defvar tab-bar-forward-button " > " (#$ . 19204))
(byte-code "\300\301\302\303\304DD\305\306\307\310\311\312\313\314\315\316\317&
\207" [custom-declare-variable tab-bar-tab-hints funcall function #[0 "\300\207" [nil] 1 ""] "Show absolute numbers on tabs in the tab bar before the tab name.\nThis helps to select the tab by its number using `tab-bar-select-tab'\nand `tab-bar-select-tab-modifiers'." :type boolean :initialize custom-initialize-default :set #[514 "\300\"\210\301 \207" [set-default force-mode-line-update] 5 "\n\n(fn SYM VAL)"] :group tab-bar :version "27.1"] 14)
#@28 String that delimits tabs.
(defvar tab-bar-separator nil (#$ . 19833))
#@25 Separator between tabs.
(defalias 'tab-bar-separator #[0 "\206	\203\n\302\207\303\207" [tab-bar-separator window-system " " "|"] 1 (#$ . 19910)])
(byte-code "\300\301\302\303\304DD\305\306\307\310\311\312\313\314\315\316\317&
\207" [custom-declare-variable tab-bar-tab-name-function funcall function #[0 "\300\207" [tab-bar-tab-name-current] 1 ""] "Function to get a tab name.\nFunction gets no arguments.\nThe choice is between displaying only the name of the current buffer\nin the tab name (default), or displaying the names of all buffers\nfrom all windows in the window configuration." :type (choice (const :tag "Selected window buffer" tab-bar-tab-name-current) (const :tag "Selected window buffer with window count" tab-bar-tab-name-current-with-count) (const :tag "Truncated buffer name" tab-bar-tab-name-truncated) (const :tag "All window buffers" tab-bar-tab-name-all) (function :tag "Function")) :initialize custom-initialize-default :set #[514 "\300\"\210\301 \207" [set-default force-mode-line-update] 5 "\n\n(fn SYM VAL)"] :group tab-bar :version "27.1"] 14)
#@59 Generate tab name from the buffer of the selected window.
(defalias 'tab-bar-tab-name-current #[0 "\300\301\302 !!\207" [buffer-name window-buffer minibuffer-selected-window] 3 (#$ . 20995)])
#@119 Generate tab name from the buffer of the selected window.
Also add the number of windows in the window configuration.
(defalias 'tab-bar-tab-name-current-with-count #[0 "\300\301\302\"G\303\304 !\305V\203\306\307#\207\306\310\"\207" [window-list-1 nil nomini window-buffer minibuffer-selected-window 1 format "%s (%d)" "%s"] 6 (#$ . 21194)])
#@48 Generate tab name from buffers of all windows.
(defalias 'tab-bar-tab-name-all #[0 "\300\301\302\303\304\305\306 \307\"\"!\310#\207" [mapconcat buffer-name delete-dups mapcar window-buffer window-list-1 frame-first-window nomini ", "] 8 (#$ . 21548)])
(byte-code "\300\301\302\303\304DD\305\306\307\310\311\312\313&	\207" [custom-declare-variable tab-bar-tab-name-truncated-max funcall function #[0 "\300\207" [20] 1 ""] "Maximum length of the tab name from the current buffer.\nEffective when `tab-bar-tab-name-function' is customized\nto `tab-bar-tab-name-truncated'." :type integer :group tab-bar :version "27.1"] 10)
(defvar tab-bar-tab-name-ellipsis t)
#@190 Generate tab name from the buffer of the selected window.
Truncate it to the length specified by `tab-bar-tab-name-truncated-max'.
Append ellipsis `tab-bar-tab-name-ellipsis' in this case.
(defalias 'tab-bar-tab-name-truncated #[0 "\302\303\304 !!\211GW\203\207\305\306\307\211	%\310#\207" [tab-bar-tab-name-truncated-max tab-bar-tab-name-ellipsis buffer-name window-buffer minibuffer-selected-window propertize truncate-string-to-width nil help-echo] 8 (#$ . 22213)])
#@373 Function to get a list of tabs to display in the tab bar.
This function should have one optional argument FRAME,
defaulting to the selected frame when nil.
It should return a list of alists with parameters
that include at least the element (name . TAB-NAME).
For example, \='((tab (name . "Tab 1")) (current-tab (name . "Tab 2")))
By default, use function `tab-bar-tabs'.
(defvar tab-bar-tabs-function 'tab-bar-tabs (#$ . 22695))
#@207 Return a list of tabs belonging to the FRAME.
Ensure the frame parameter `tabs' is pre-populated.
Update the current tab name when it exists.
Return its existing value or a new value.

(fn &optional FRAME)
(defalias 'tab-bar-tabs #[256 "\301\302\"\211\203&\303!\304\236\305\236\203#\211\203#\211A\204# \241\210\266\207\306 C\262\307\"\210\207" [tab-bar-tab-name-function frame-parameter tabs tab-bar--current-tab-find name explicit-name tab-bar--current-tab-make tab-bar-tabs-set] 7 (#$ . 23132)])
#@61 Set a list of TABS on the FRAME.

(fn TABS &optional FRAME)
(defalias 'tab-bar-tabs-set #[513 "\300\301#\207" [set-frame-parameter tabs] 6 (#$ . 23651)])
(byte-code "\300\301\302\303\304DD\305\306\303\307\310\311\312&	\207" [custom-declare-variable tab-bar-tab-face-function funcall function #[0 "\300\207" [tab-bar-tab-face-default] 1 ""] "Function to define a tab face.\nFunction gets one argument: a tab." :type :group tab-bar :version "28.1"] 10)
#@12 

(fn TAB)
(defalias 'tab-bar-tab-face-default #[257 "\211@\300=\203	\301\207\302\207" [current-tab tab-bar-tab tab-bar-tab-inactive] 3 (#$ . 24110)])
(byte-code "\300\301\302\303\304DD\305\306\303\307\310\311\312\313\314\315\316&
\207" [custom-declare-variable tab-bar-tab-name-format-function funcall function #[0 "\300\207" [tab-bar-tab-name-format-default] 1 ""] "Function to format a tab name.\nFunction gets two arguments, the tab and its number, and should return\nthe formatted tab name to display in the tab bar." :type :initialize custom-initialize-default :set #[514 "\300\"\210\301 \207" [set-default force-mode-line-update] 5 "\n\n(fn SYM VAL)"] :group tab-bar :version "28.1"] 14)
#@14 

(fn TAB I)
(defalias 'tab-bar-tab-name-format-default #[514 "@\304=\305\203\306\307\"\202\310\311\312\"	\203,	\203#\313\202$\314=\204,\n\206-\310Q\315!#\207" [tab-bar-tab-hints tab-bar-close-button-show tab-bar-close-button tab-bar-tab-face-function current-tab propertize format "%d " "" alist-get name non-selected selected face] 8 (#$ . 24814)])
(byte-code "\300\301\302\303\304DD\305\306\307\310\311\312\313\314\315\316\317\320\321&\207" [custom-declare-variable tab-bar-format funcall function #[0 "\300\207" [(tab-bar-format-history tab-bar-format-tabs tab-bar-separator tab-bar-format-add-tab)] 1 ""] "Template for displaying tab bar items.\nEvery item in the list is a function that returns\na string, or a list of menu-item elements, or nil.\nAdding a function to the list causes the tab bar to show\nthat string, or display a tab button which, when clicked,\nwill invoke the command that is the binding of the menu item.\nThe menu-item binding of nil will produce a tab clicking\non which will select that tab.  The menu-item's title is\ndisplayed as the label of the tab.\nIf a function returns nil, it doesn't directly affect the\ntab bar appearance, but can do that by some side-effect.\nIf the list ends with `tab-bar-format-align-right' and\n`tab-bar-format-global', then after enabling `display-time-mode'\n(or any other mode that uses `global-mode-string'),\nit will display time aligned to the right on the tab bar instead\nof the mode line.  Replacing `tab-bar-format-tabs' with\n`tab-bar-format-tabs-groups' will group tabs on the tab bar." :type hook :options (tab-bar-format-menu-bar tab-bar-format-history tab-bar-format-tabs tab-bar-format-tabs-groups tab-bar-separator tab-bar-format-add-tab tab-bar-format-align-right tab-bar-format-global) :initialize custom-initialize-default :set #[514 "\300\"\210\301 \207" [set-default force-mode-line-update] 5 "\n\n(fn SYM VAL)"] :group tab-bar :version "28.1"] 16)
#@99 Pop up the same menu as displayed by the menu bar.
Used by `tab-bar-format-menu-bar'.

(fn EVENT)
(defalias 'tab-bar-menu-bar #[257 "\300\301\302\303\304#!\305\306\307\"\210\310\311\312\"\313 \"\210\314\"\207" [make-sparse-keymap propertize "Menu Bar" hide t run-hooks activate-menubar-hook menu-bar-update-hook map-keymap make-closure #[514 "\211:\205\301\300\302!\303!#\207" [V0 define-key-after vector copy-sequence] 7 "\n\n(fn KEY BINDING)"] menu-bar-keymap popup-menu] 6 (#$ . 26776) "e"])
#@66 Produce the Menu button for the tab bar that shows the menu bar.
(defalias 'tab-bar-format-menu-bar #[0 "\300\207" [((menu-bar menu-item (propertize "Menu" 'face 'tab-bar-tab-inactive) tab-bar-menu-bar :help "Menu Bar"))] 1 (#$ . 27284)])
#@225 Produce back and forward buttons for the tab bar.
These buttons will be shown when `tab-bar-history-mode' is enabled.
You can hide these buttons by customizing `tab-bar-format' and removing
`tab-bar-format-history' from it.
(defalias 'tab-bar-format-history #[0 "\205#\303\304\305 \306BBB\307\304	\310BBB\311\304\305 \312BBB\313\304\n\314BBBF\207" [tab-bar-history-mode tab-bar-back-button tab-bar-forward-button sep-history-back menu-item tab-bar-separator (ignore) history-back (tab-bar-history-back :help "Click to go back in tab history") sep-history-forward (ignore) history-forward (tab-bar-history-forward :help "Click to go forward in tab history")] 7 (#$ . 27530)])
#@77 Format TAB using its index I and return the result as a keymap.

(fn TAB I)
(defalias 'tab-bar--format-tab #[514 "\301\302\303\304\"!\305\306 \307BBBC@\310=\203&\310\305\"\311BBBC\202>\302\303\312\"!\305\"\313\314\"\315BBBBC\313\316\"\205a@\310=\203Q\317\202X\302\303\320\"!\305\321\313\316	\"FC#\207" [tab-bar-tab-name-format-function append intern format "sep-%i" menu-item tab-bar-separator (ignore) current-tab (ignore :help "Current tab") "tab-%i" alist-get binding (:help "Click to visit tab") close-binding C-current-tab "C-tab-%i" ""] 11 (#$ . 28213)])
#@39 Produce all the tabs for the tab bar.
(defalias 'tab-bar-format-tabs #[0 "\301C\302\303\304\" \"\207" [tab-bar-tabs-function 0 mapcan make-closure #[257 "\300\211\242T\240\210\301\300\242\"\207" [V0 tab-bar--format-tab] 4 "\n\n(fn TAB)"]] 5 (#$ . 28806)])
(byte-code "\300\301\302\303\304DD\305\306\303\307\310\311\312\313\314\315\316&
\207" [custom-declare-variable tab-bar-tab-group-function funcall function #[0 "\300\207" [tab-bar-tab-group-default] 1 ""] "Function to get a tab group name.\nFunction gets one argument: a tab." :type :initialize custom-initialize-default :set #[514 "\300\"\210\301 \207" [set-default force-mode-line-update] 5 "\n\n(fn SYM VAL)"] :group tab-bar :version "28.1"] 14)
#@12 

(fn TAB)
(defalias 'tab-bar-tab-group-default #[257 "\300\301\"\207" [alist-get group] 4 (#$ . 29521)])
(byte-code "\300\301\302\303\304DD\305\306\303\307\310\311\312\313\314\315\316&
\207" [custom-declare-variable tab-bar-tab-group-format-function funcall function #[0 "\300\207" [tab-bar-tab-group-format-default] 1 ""] "Function to format a tab group name.\nFunction gets two arguments, a tab with a group name and its number,\nand should return the formatted tab group name to display in the tab bar." :type :initialize custom-initialize-default :set #[514 "\300\"\210\301 \207" [set-default force-mode-line-update] 5 "\n\n(fn SYM VAL)"] :group tab-bar :version "28.1"] 14)
#@14 

(fn TAB I)
(defalias 'tab-bar-tab-group-format-default #[514 "\302\203\f\303\304\"\202
\305	!P\306\307#\207" [tab-bar-tab-hints tab-bar-tab-group-function propertize format "%d " "" face tab-bar-tab-group-inactive] 6 (#$ . 30210)])
(byte-code "\300\301\302\303\304DD\305\306\303\307\310\311\312&	\207" [custom-declare-variable tab-bar-tab-group-face-function funcall function #[0 "\300\207" [tab-bar-tab-group-face-default] 1 ""] "Function to define a tab group face.\nFunction gets one argument: a tab." :type :group tab-bar :version "28.1"] 10)
#@12 

(fn TAB)
(defalias 'tab-bar-tab-group-face-default #[257 "\211@\301=\204!\204\302\207\303!\207" [tab-bar-tab-group-function current-tab tab-bar-tab-ungrouped tab-bar-tab-face-default] 3 (#$ . 30770)])
#@201 Format TAB as a tab that represents a group of tabs.
The argument I is the tab index, and CURRENT-P is non-nil
when the tab is current.  Return the result as a keymap.

(fn TAB I &optional CURRENT-P)
(defalias 'tab-bar--format-tab-group #[770 "\302\303\304\305\"!\306\307 \310BBBC\303\304\311\"!\306\203&\312!\313\314#\202,	\"\2034\315\202D\316\317	\"\206D\320\321\322\323\nDF\324BBBBC\"\207" [tab-bar-tab-group-function tab-bar-tab-group-format-function append intern format "sep-%i" menu-item tab-bar-separator (ignore) "group-%i" propertize face tab-bar-tab-group-current ignore alist-get binding lambda nil (interactive) tab-bar-select-tab (:help "Click to visit group")] 13 (#$ . 30987)])
#@65 Produce tabs for the tab bar grouped according to their groups.
(defalias 'tab-bar-format-tabs-groups #[0 " 	\302!!\303C\304C\305\306\307$\"\207" [tab-bar-tabs-function tab-bar-tab-group-function tab-bar--current-tab-find nil 0 mapcan make-closure #[257 "!\302\211\242T\240\210\211\300\232\204\211\2042\306\301\242\232?\205&\205&\307\302\242\310#\f\311\302\242\")\"\202B\301\242\232\204A\307\302\242\"\202B\312\301\240\210\207" [V0 V1 V2 tab-bar-tab-group-function tab-bar-tab-group-face-function tab-bar-tab-face-function append tab-bar--format-tab-group t tab-bar--format-tab nil] 7 "\n\n(fn TAB)"]] 10 (#$ . 31706)])
#@26 Button to add a new tab.
(defalias 'tab-bar-format-add-tab #[0 "\205	\205\302\303	\304BBBC\207" [tab-bar-new-button-show tab-bar-new-button add-tab menu-item (tab-bar-new-tab :help "New tab")] 4 (#$ . 32356)])
#@47 Align the rest of tab bar items to the right.
(defalias 'tab-bar-format-align-right #[0 "\301>A\302!\303\304\305#\211G\306\307\310\311\312\313\314EE#\315\316\317BBBC\207" [tab-bar-format tab-bar-format-align-right tab-bar-format-list mapconcat #[257 "\3008\207" [2] 3 "\n\n(fn ITEM)"] "" propertize " " display space :align-to - right align-right menu-item (ignore)] 12 (#$ . 32577)])
#@302 Produce display of `global-mode-string' in the tab bar.
When `tab-bar-format-global' is added to `tab-bar-format'
(possibly appended after `tab-bar-format-align-right'),
then modes that display information on the mode line
using `global-mode-string' will display the same text
on the tab bar instead.
(defalias 'tab-bar-format-global #[0 "\301\302\303\304!!\305BBBC\207" [global-mode-string global menu-item string-trim-right format-mode-line (ignore)] 5 (#$ . 32976)])
#@20 

(fn FORMAT-LIST)
(defalias 'tab-bar-format-list #[257 "\300C\301\302\303\304\305\"\"\"\207" [0 apply append mapcar make-closure #[257 "\300\211\242T\240\210\301!\205&\211 \211;\203#\302\303\304\300\242\"!\305\306BBBC\262\211\262\207" [V0 functionp intern format "str-%i" menu-item (ignore)] 6 "\n\n(fn FORMAT)"]] 8 (#$ . 33453)])
#@64 Generate an actual keymap from `tab-bar-map', without caching.
(defalias 'tab-bar-make-keymap-1 #[0 "\302\303	!\"\207" [tab-bar-map tab-bar-format append tab-bar-format-list] 4 (#$ . 33799)])
#@43 

(fn CURRENT FILTERED PARAMETERS SAVING)
(defalias 'frameset-filter-tabs #[1028 "\211\203	\300\301\"\207\207" [mapcar #[257 "\211:\203
\300\301\302\303!#\207\207" [seq-reduce #[514 "\300\"\207" [assq-delete-all] 5 "\n\n(fn CURRENT PARAM)"] (wc wc-point wc-bl wc-bbl wc-history-back wc-history-forward) copy-sequence] 6 "\n\n(fn CURRENT)"]] 7 (#$ . 33998)])
(byte-code "\301B\302\207" [frameset-filter-alist (tabs . frameset-filter-tabs) nil] 2)
#@93 Make a new tab data structure that can be added to tabs on the FRAME.

(fn &optional FRAME)
(defalias 'tab-bar--tab #[256 "\303\304\"\305\306\"\305\307\"\310\311\312\313\"\"\310\311\312\314\"\"\315\316\203*\305\316\"\202, B\306B\317\205<\307BC\320\321 B\322\323\324\206J\325 !\326\"B\327\330 B\331\332 B\333B\334B\335\336\206g\325 	\"B\337\336\206s\325 \n\"B\257\340\341\fA\"#BBB\207" [tab-bar-tab-name-function tab-bar-history-back tab-bar-history-forward tab-bar--current-tab-find nil alist-get explicit-name group seq-filter buffer-live-p frame-parameter buffer-list buried-buffer-list tab name append time float-time ws window-state-get frame-root-window selected-frame writable wc current-window-configuration wc-point point-marker wc-bl wc-bbl wc-history-back gethash wc-history-forward mapcan #[257 "\211@\300>?\205\n\211C\207" [(name explicit-name group time ws wc wc-point wc-bl wc-bbl wc-history-back wc-history-forward)] 3 "\n\n(fn PARAM)"]] 22 (#$ . 34459)])
#@82 Make the current tab data structure from TAB on FRAME.

(fn &optional TAB FRAME)
(defalias 'tab-bar--current-tab #[512 "\300\206	\301\302\"!\207" [tab-bar--current-tab-make tab-bar--current-tab-find nil] 6 (#$ . 35472)])
#@291 Make the current tab data structure from TAB.
TAB here is an argument meaning "use tab as template",
i.e. the tab is created using data from TAB.  This is
necessary when switching tabs, otherwise the destination tab
inherits the current tab's `explicit-name' parameter.

(fn &optional TAB)
(defalias 'tab-bar--current-tab-make #[256 "\302\303\"\203\302\304\"\202 ;\203\202 \305!\205  \306\307\203.\302\307\"\2020	 B\303B\310\205=\304BC\311\312	A\"\"BBB\207" [tab-bar-new-tab-group tab-bar-tab-name-function alist-get explicit-name group functionp current-tab name append mapcan #[257 "\211@\300>?\205\n\211C\207" [(name explicit-name group time ws wc wc-point wc-bl wc-bbl wc-history-back wc-history-forward)] 3 "\n\n(fn PARAM)"]] 11 (#$ . 35703)])
#@29 

(fn &optional TABS FRAME)
(defalias 'tab-bar--current-tab-find #[512 "\301\206!\236\207" [tab-bar-tabs-function current-tab] 5 (#$ . 36483)])
#@29 

(fn &optional TABS FRAME)
(defalias 'tab-bar--current-tab-index #[512 "\301\206!\302\303#\207" [tab-bar-tabs-function seq-position current-tab #[514 "@=\207" [] 4 "\n\n(fn A B)"]] 6 (#$ . 36638)])
#@33 

(fn TAB &optional TABS FRAME)
(defalias 'tab-bar--tab-index #[769 "\301\206!\302#\207" [tab-bar-tabs-function seq-position eq] 7 (#$ . 36850)])
#@34 

(fn NAME &optional TABS FRAME)
(defalias 'tab-bar--tab-index-by-name #[769 "\301\206!\302#\207" [tab-bar-tabs-function seq-position #[514 "\300\301\"\232\207" [alist-get name] 5 "\n\n(fn A B)"]] 7 (#$ . 37008)])
#@33 

(fn NTH &optional TABS FRAME)
(defalias 'tab-bar--tab-index-recent #[769 "\206!\301\"S8\302\"\207" [tab-bar-tabs-function tab-bar--tabs-recent tab-bar--tab-index] 9 (#$ . 37236)])
#@29 

(fn &optional TABS FRAME)
(defalias 'tab-bar--tabs-recent #[512 "\206!\301\302\303\304\305\"#\207" [tab-bar-tabs-function seq-sort-by #[257 "\300\301\"\207" [alist-get time] 4 "\n\n(fn TAB)"] > seq-remove #[257 "\211@\300=\207" [current-tab] 3 "\n\n(fn TAB)"]] 9 (#$ . 37435)])
#@631 Switch to the tab by its absolute position TAB-NUMBER in the tab bar.
When this command is bound to a numeric key (with a key prefix or modifier key
using `tab-bar-select-tab-modifiers'), calling it without an argument
will translate its bound numeric key to the numeric argument.
Also the prefix argument TAB-NUMBER can be used to override
the numeric key, so it takes precedence over the bound digit key.
For example, `<MODIFIER>-2' will select the second tab, but `C-u 15
<MODIFIER>-2' will select the 15th tab.  TAB-NUMBER counts from 1.
Negative TAB-NUMBER counts tabs from the end of the tab bar.

(fn &optional TAB-NUMBER)
(defalias 'tab-bar-select-tab #[256 "\211\250\204%\306!\307!\203\"\211\310Y\203\"\211\311X\203\"\211\312Z\266\202\202%\266\313	 \314!\313W\2038GT\\\202D\313U\203C\211T\202D\315G^]S=?\205\316 8\317\320\"\317\321\"\322!\203\344\323!\324 =\203\344\317\325\"\326\327\317\330\"\"\326\327\317\331\"\"\317\332\"\317\333\"\334!\210\335!\203\250\336!\203\250\337!\315=\204\250b\210\203\263\340\341\342#\210\203\275\340\341\343#\210\344\324 \322\317\320@\"!\205\314\n#\210\344\324 \322\317\320@\"!\205\335#\266\202\356\211\203\356\345\341\346#\210\347\203\377\233\211\240\266\233\211\3508!\240\266
\204\351\352\317\353\"\"\210\266\354 \207" [last-command-event tab-bar-tabs-function tab-bar-history-back tab-bar-history-forward tab-bar-history-omit tab-bar-mode event-basic-type characterp 49 57 48 0 tab-bar--current-tab-index 1 tab-bar--tab alist-get wc ws window-configuration-p window-configuration-frame selected-frame wc-point seq-filter buffer-live-p wc-bl wc-bbl wc-history-back wc-history-forward set-window-configuration markerp marker-buffer marker-position set-frame-parameter nil buffer-list buried-buffer-list puthash window-state-put safe t tab-bar--current-tab-make message "Selected tab '%s'" name force-mode-line-update] 20 (#$ . 37729) "P"])
#@116 Switch to ARGth next tab.
Interactively, ARG is the prefix numeric argument and defaults to 1.

(fn &optional ARG)
(defalias 'tab-bar-switch-to-next-tab #[256 "\211\250\204\301\262 \302!\206\303\304\\G\"\305T!\207" [tab-bar-tabs-function 1 tab-bar--current-tab-index 0 mod tab-bar-select-tab] 6 (#$ . 39709) "p"])
#@120 Switch to ARGth previous tab.
Interactively, ARG is the prefix numeric argument and defaults to 1.

(fn &optional ARG)
(defalias 'tab-bar-switch-to-prev-tab #[256 "\211\250\204\300\262\301[!\207" [1 tab-bar-switch-to-next-tab] 3 (#$ . 40041) "p"])
#@268 Switch to the last tab or ARGth tab from the end of the tab bar.
Interactively, ARG is the prefix numeric argument; it defaults to 1,
which means the last tab on the tab bar.  For example, `C-u 2
<MODIFIER>-9' selects the tab before the last tab.

(fn &optional ARG)
(defalias 'tab-bar-switch-to-last-tab #[256 "\301 G\302\206\n\303!SZ!\207" [tab-bar-tabs-function tab-bar-select-tab abs 1] 5 (#$ . 40300) "p"])
#@133 Switch to ARGth most recently visited tab.
Interactively, ARG is the prefix numeric argument and defaults to 1.

(fn &optional ARG)
(defalias 'tab-bar-switch-to-recent-tab #[256 "\211\250\204\300\262\301!\211\203\302T!\207\303\304!\207" [1 tab-bar--tab-index-recent tab-bar-select-tab message "No more recent tabs"] 4 (#$ . 40722) "p"])
#@234 Switch to the tab by NAME.
Default values are tab names sorted by recency, so you can use \<minibuffer-local-map>\[next-history-element]
to get the name of the most recently visited tab, the second
most recent, and so on.

(fn NAME)
(defalias 'tab-bar-switch-to-tab #[257 "\300\301!\206\302T!\207" [tab-bar-select-tab tab-bar--tab-index-by-name 0] 4 (#$ . 41073) (byte-code "\300\301\302 \"\303\304\305@\"\306\211\211\211&C\207" [mapcar #[257 "\300\301\"\207" [alist-get name] 4 "\n\n(fn TAB)"] tab-bar--tabs-recent completing-read format-prompt "Switch to tab by name" nil] 9)])
(defalias 'tab-bar-select-tab-by-name 'tab-bar-switch-to-tab)
#@357 Move tab from FROM-NUMBER position to new position at TO-NUMBER.
FROM-NUMBER defaults to the current tab number.
FROM-NUMBER and TO-NUMBER count from 1.
Negative TO-NUMBER counts tabs from the end of the tab bar.
Argument addressing is absolute in contrast to `tab-bar-move-tab'
where argument addressing is relative.

(fn TO-NUMBER &optional FROM-NUMBER)
(defalias 'tab-bar-move-tab-to #[513 " \206\n\301!T\211S8\203\302!\202\303\211\304W\203'GT\\\202(\211\304SGS^]\305\"\262\211\304X\203W\211\233\306\"\203M\211\202PB\262\262\202s\211S\233\233\306\"\203l\211\202oB\262\241\210\307!\210\310 \207" [tab-bar-tabs-function tab-bar--current-tab-index prefix-numeric-value 1 0 delq memql tab-bar-tabs-set force-mode-line-update] 13 (#$ . 41731) "P"])
#@316 Move the current tab ARG positions to the right.
Interactively, ARG is the prefix numeric argument and defaults to 1.
If ARG is negative, move the current tab ARG positions to the left.
Argument addressing is relative in contrast to `tab-bar-move-tab-to',
where argument addressing is absolute.

(fn &optional ARG)
(defalias 'tab-bar-move-tab #[256 " \301!\206	\302\303\\G\"\304TT\"\207" [tab-bar-tabs-function tab-bar--current-tab-index 0 mod tab-bar-move-tab-to] 7 (#$ . 42534) "p"])
#@200 Move the current tab ARG positions to the left.
Interactively, ARG is the prefix numeric argument and defaults to 1.
Like `tab-bar-move-tab', but moves in the opposite direction.

(fn &optional ARG)
(defalias 'tab-bar-move-tab-backward #[256 "\300\206\301[!\207" [tab-bar-move-tab 1] 3 (#$ . 43035) "p"])
#@470 Move tab from FROM-NUMBER position to new position at TO-NUMBER.
FROM-NUMBER defaults to the current tab number.
FROM-NUMBER and TO-NUMBER count from 1.
FROM-FRAME specifies the source frame and defaults to the selected frame.
TO-FRAME specifies the target frame and defaults the next frame.
Interactively, ARG selects the ARGth next frame on the same terminal,
to which to move the tab; ARG defaults to 1.

(fn ARG &optional FROM-FRAME FROM-NUMBER TO-FRAME TO-NUMBER)
(defalias 'tab-bar-move-tab-to-frame #[1281 "\204\304 \262\204&\305!\306\211W\203$\307\310!\262\210\211T\262\202\266=?\205\276!\2068\311!T\211S8!\306\206E\312SGS^]\313\314@\315=\203[\316!\202\\\"\306X\203|\233\317\"\203q\211\202tB\262\262\210\202\226S\233\233\317\"\203\216\211\202\221B\262\241\266\304 p\320\321#\216\322\323\"\210\324\325\307\326!\210,\266\327\"\210\330\324!\266\205\207" [tab-bar-tabs-function tab-bar-closed-tabs tab-bar-close-last-tab-choice inhibit-message selected-frame prefix-numeric-value 0 nil next-frame tab-bar--current-tab-index 1 assq-delete-all wc current-tab tab-bar--tab memql make-closure #[0 "\302\300!\203\303\300\304\"\210\305\301!\205\301q\207" [V0 V1 frame-live-p select-frame norecord buffer-live-p] 3] select-frame norecord t delete-frame tab-bar-close-tab tab-bar-tabs-set force-mode-line-update] 16 (#$ . 43350) "P"])
#@144 Move tab number FROM-NUMBER to a new frame.
FROM-NUMBER defaults to the current tab (which happens interactively).

(fn &optional FROM-NUMBER)
(defalias 'tab-bar-detach-tab #[256 " \206\n\301!TS\302\3038\"\304 \305\303BC!\306\307\307%\210\304 p\310\311#\216\312\313\"\210\314 )\207" [tab-bar-tabs-function tab-bar--current-tab-index alist-get name selected-frame make-frame tab-bar-move-tab-to-frame nil make-closure #[0 "\302\300!\203\303\300\304\"\210\305\301!\205\301q\207" [V0 V1 frame-live-p select-frame norecord buffer-live-p] 3] select-frame norecord tab-bar-close-tab] 12 (#$ . 44765) (byte-code "\300 TC\207" [tab-bar--current-tab-index] 1)])
#@190 Move the selected window to a new tab.
This command removes the selected window from the configuration stored
on the current tab, and makes a new tab with that window in its
configuration.
(defalias 'tab-bar-move-window-to-tab #[0 "\301\302 \210)\303 \210\304 \210\303 \207" [tab-bar-new-tab-choice window tab-bar-new-tab tab-bar-switch-to-recent-tab delete-window] 1 (#$ . 45443) nil])
(byte-code "\300\301\302\303\304DD\305\306\307\310\311\312\313&	\210\300\314\302\303\315DD\316\306\317\310\311\312\313&	\207" [custom-declare-variable tab-bar-new-tab-to funcall function #[0 "\300\207" [right] 1 #1=""] "Where to create a new tab.\nIf `leftmost', create as the first tab.\nIf `left', create to the left of the current tab.\nIf `right', create to the right of the current tab.\nIf `rightmost', create as the last tab.\nIf the value is a function, it should return a number as a position\non the tab bar specifying where to add a new tab." :type (choice (const :tag "Add as First" leftmost) (const :tag "Add to Left" left) (const :tag "Add to Right" right) (const :tag "Add as Last" rightmost) (function :tag "Function")) :group tab-bar :version "27.1" tab-bar-tab-post-open-functions #[0 "\300\207" [nil] 1 #1#] "List of functions to call after creating a new tab.\nThe current tab is supplied as an argument.  Any modifications made\nto the tab argument will be applied after all functions are called." (repeat function)] 10)
#@506 Add a new tab at the absolute position TAB-NUMBER.
TAB-NUMBER counts from 1.  If no TAB-NUMBER is specified, then add
a new tab at the position specified by `tab-bar-new-tab-to'.
Negative TAB-NUMBER counts tabs from the end of the tab bar,
and -1 means the new tab will become the last one.
Argument addressing is absolute in contrast to `tab-bar-new-tab',
where argument addressing is relative.
After the tab is created, the hooks in
`tab-bar-tab-post-open-functions' are run.

(fn &optional TAB-NUMBER)
(defalias 'tab-bar-new-tab-to #[256 " \306!\307 	\203K\310 \203\311\310 !\210\312\313 \210)	\314=\204'\315 \210\316 \210\317	!\2032	 \202@	;\205@\320	!\206@\321	!\322!\203J\323!\210\210\203W\233\211\240\266\324\312=\205e\325\326\325\"BC!\205m\327!\211\203\204\211\330W\203GT\\\202\201\211S\206\254\f\331\267\202\244\330\202\254G\202\254\206\254\332\202\254\206\240\330T\202\254\317\f!\205\254\f \330\206\262\330G^]\262\211\330X\203\330\211\233\333\"\203\316\211\202\321B\262\262\202\363\211S\233\233\333\"\203\354\211\202\357B\262\241\210\211\330=\203\376\334!\210\335\3368\"\266
\203\204\337\332!\210\202\340 \210\341 \210?\205'\342\343\f\"\207" [tab-bar-tabs-function tab-bar-new-tab-choice ignore-window-parameters tab-bar-new-tab-group tab-bar-new-tab-to tab-bar-show tab-bar--current-tab-index tab-bar--tab minibuffer-selected-window select-window t delete-other-windows window split-window delete-window functionp get-buffer find-file-noselect buffer-live-p switch-to-buffer tab-bar--current-tab-make group alist-get prefix-numeric-value 0 #s(hash-table size 4 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (leftmost 138 rightmost 142 left 147 right 155)) 1 memql tab-bar-tabs-set run-hook-with-args tab-bar-tab-post-open-functions tab-bar-mode tab-bar--update-tab-bar-lines force-mode-line-update message "Added new tab at %s"] 12 (#$ . 46880) "P"])
#@473 Create a new tab ARG positions to the right.
If a negative ARG, create a new tab ARG positions to the left.
If ARG is zero, create a new tab in place of the current tab.
If no ARG is specified, then add a new tab at the position
specified by `tab-bar-new-tab-to'.
Argument addressing is relative in contrast to `tab-bar-new-tab-to',
where argument addressing is absolute.
If FROM-NUMBER is a tab number, a new tab is created from that tab.

(fn &optional ARG FROM-NUMBER)
(defalias 'tab-bar-new-tab #[512 "\211\203\302\303!\210)\203\"	 \304!\206\305\211\306!\\\307T!\207\307 \207" [inhibit-message tab-bar-tabs-function t tab-bar-select-tab tab-bar--current-tab-index 0 prefix-numeric-value tab-bar-new-tab-to] 7 (#$ . 48858) "P"])
#@153 Clone the current tab to ARG positions to the right.
ARG and FROM-NUMBER have the same meaning as in `tab-bar-new-tab'.

(fn &optional ARG FROM-NUMBER)
(defalias 'tab-bar-duplicate-tab #[512 "\302\303\304\"*\207" [tab-bar-new-tab-group tab-bar-new-tab-choice nil t tab-bar-new-tab] 5 (#$ . 49608) "P"])
#@57 A list of closed tabs to be able to undo their closing.
(defvar tab-bar-closed-tabs nil (#$ . 49921))
(byte-code "\300\301\302\303\304DD\305\306\307\310\311\312\313&	\210\300\314\302\303\315DD\316\306\317\310\311\312\313&	\210\300\320\302\303\321DD\322\306\323\310\311\312\313&	\210\300\324\302\303\325DD\326\306\327\310\311\312\313&	\207" [custom-declare-variable tab-bar-close-tab-select funcall function #[0 "\300\207" [recent] 1 #1=""] "Which tab to make current after closing the specified tab.\nIf `left', select the adjacent left tab.\nIf `right', select the adjacent right tab.\nIf `recent', select the most recently visited tab." :type (choice (const :tag "Select left tab" left) (const :tag "Select right tab" right) (const :tag "Select recent tab" recent)) :group tab-bar :version "27.1" tab-bar-close-last-tab-choice #[0 "\300\207" [nil] 1 #1#] "What to do when the last tab is closed.\nIf nil, do nothing and show a message, like closing the last window or frame.\nIf `delete-frame', delete the containing frame, as a web browser would do.\nIf `tab-bar-mode-disable', disable `tab-bar-mode' so that tabs no longer show\nin the frame.\nIf the value is a function, call that function with the tab to be closed\nas an argument." (choice (const :tag "Do nothing and show message" nil) (const :tag "Close the containing frame" delete-frame) (const :tag "Disable tab-bar-mode" tab-bar-mode-disable) (function :tag "Function")) tab-bar-tab-prevent-close-functions #[0 "\300\207" [nil] 1 #1#] "List of functions to call to determine whether to close a tab.\nThe tab to be closed and a boolean indicating whether or not it\nis the only tab in the frame are supplied as arguments.  If any\nfunction returns a non-nil value, the tab will not be closed." (repeat function) tab-bar-tab-pre-close-functions #[0 "\300\207" [nil] 1 #1#] "List of functions to call before closing a tab.\nEach function is called with two arguments: the tab to be closed\nand a boolean indicating whether or not it is the only tab on its frame." (repeat function)] 10)
#@837 Close the tab specified by its absolute position TAB-NUMBER.
If no TAB-NUMBER is specified, then close the current tab and switch
to the tab specified by `tab-bar-close-tab-select'.
Interactively, TAB-NUMBER is the prefix numeric argument, and defaults to 1.
TAB-NUMBER counts from 1.
Optional TO-NUMBER could be specified to override the value of
`tab-bar-close-tab-select' programmatically with a position
of an existing tab to select after closing the current tab.
TO-NUMBER counts from 1.

The functions in `tab-bar-tab-prevent-close-functions' will be
run to determine whether or not to close the tab.
Just before the tab is closed, the functions in
`tab-bar-tab-pre-close-functions' will be run.  The base behavior
for the last tab on a frame is determined by
`tab-bar-close-last-tab-choice'.

(fn &optional TAB-NUMBER TO-NUMBER)
(defalias 'tab-bar-close-tab #[512 " \306!\250\203S\202\211G\307U\310\3118#\211?\205\331\312\3138#\210\203J	\314\267\202?\315\316!\207\317 \207\305\320!\207\321	!\205\331	\322 !\207=\203\244\203YS\206\211\n\323\267\202\210\307W\203i\324\202jS\202\211GTV\203{T\202\211S\202\211\325\307\"\202\211\326\327\206\217\327GS^]\262\330\331T!\210) \262\2108\332\333 B\334B\335@\336=\203\273\322 \202\274BE\fB\337\340\"!\266\341 \210\342 \210
?\205\331\343\344\n\"\207" [tab-bar-tabs-function tab-bar-close-last-tab-choice tab-bar-close-tab-select inhibit-message tab-bar-closed-tabs tab-bar-mode tab-bar--current-tab-index 1 run-hook-with-args-until-success tab-bar-tab-prevent-close-functions run-hook-with-args tab-bar-tab-pre-close-functions #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (nil 52 delete-frame 56 tab-bar-mode-disable 59)) user-error "Attempt to delete the sole tab in a frame" delete-frame -1 functionp tab-bar--tab #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (left 95 right 110 recent 128)) 2 tab-bar--tab-index-recent nil 0 t tab-bar-select-tab frame selected-frame index tab current-tab tab-bar-tabs-set delq tab-bar--update-tab-bar-lines force-mode-line-update message "Deleted tab and switched to %s"] 13 (#$ . 51975) "P"])
#@74 Close the tab given its NAME.
Interactively, prompt for NAME.

(fn NAME)
(defalias 'tab-bar-close-tab-by-name #[257 "\300\301!T!\207" [tab-bar-close-tab tab-bar--tab-index-by-name] 4 (#$ . 54202) (byte-code "\301\302\303\304 \"\"C\207" [tab-bar-tabs-function completing-read "Close tab by name: " mapcar #[257 "\300\301\"\207" [alist-get name] 4 "\n\n(fn TAB)"]] 5)])
#@181 Close all tabs on the selected frame, except the tab TAB-NUMBER.
TAB-NUMBER counts from 1 and defaults to the current tab (which
happens interactively).

(fn &optional TAB-NUMBER)
(defalias 'tab-bar-close-other-tabs #[256 " \303!\250\203\304G^]S\202\211\3058\205y=\204+\306T!\210 \262\211\203f\211@=\204[\307\310\311#\204[\312\313 B\314B\315BE	B\316\317\311#\210\320\"\262T\262A\266\202\202,\210\321!\210\322 \210\323 \210\n?\205y\324\325!\207" [tab-bar-tabs-function tab-bar-closed-tabs tab-bar-mode tab-bar--current-tab-index 1 0 tab-bar-select-tab run-hook-with-args-until-success tab-bar-tab-prevent-close-functions nil frame selected-frame index tab run-hook-with-args tab-bar-tab-pre-close-functions delq tab-bar-tabs-set tab-bar--update-tab-bar-lines force-mode-line-update message "Deleted all other tabs"] 11 (#$ . 54580) nil])
#@39 Restore the most recently closed tab.
(defalias 'tab-bar-undo-close-tab #[0 "\203\302\303\304@\"!\204\210A\211\204\203\207\211A\242\303\304\"\303\305\"\303\306\"\307 =\2047\310!\210	 \311G^]\262\311X\203_\233\312\"\203U\211\202XB\262\262\202xS\233\233\312\"\203q\211\202tB\262\241\210\311=\203\202\313!\210\314T!\207\315\316!\207" [tab-bar-closed-tabs tab-bar-tabs-function frame-live-p alist-get frame index tab selected-frame select-frame-set-input-focus 0 memql tab-bar-tabs-set tab-bar-select-tab message "No more closed tabs to undo"] 11 (#$ . 55462) nil])
#@416 Give the tab specified by its absolute position TAB-NUMBER a new NAME.
If no TAB-NUMBER is specified, then rename the current tab.
Interactively, TAB-NUMBER is the prefix numeric argument, and defaults
to the current tab.
TAB-NUMBER counts from 1.
Interactively, prompt for the new NAME.
If NAME is the empty string, then use the automatic name
function `tab-bar-tab-name-function'.

(fn NAME &optional TAB-NUMBER)
(defalias 'tab-bar-rename-tab #[513 " \250\203\303G^]S\202\304!\2118G\303V\211\203#\202%	 \305\236\211\2034\211\241\266\202?\305B\211\262B\262\210\306\236\211\203N\211\241\266\202Y\306B\211\262B\262\210\307 \210\n?\205e\310\311\"\207" [tab-bar-tabs-function tab-bar-tab-name-function tab-bar-mode 0 tab-bar--current-tab-index name explicit-name force-mode-line-update message "Renamed tab to '%s'"] 10 (#$ . 56083) (byte-code " 	\206\n\302!T\303\304S8\"\305\306\307\211\211\211&	D\207" [tab-bar-tabs-function current-prefix-arg tab-bar--current-tab-index alist-get name read-from-minibuffer "New name for tab (leave blank for automatic naming): " nil] 10)])
#@216 Rename the tab named TAB-NAME to NEW-NAME.
Interactively, prompt for TAB-NAME and NEW-NAME.
If NEW-NAME is the empty string, then use the automatic name
function `tab-bar-tab-name-function'.

(fn TAB-NAME NEW-NAME)
(defalias 'tab-bar-rename-tab-by-name #[514 "\300\301!T\"\207" [tab-bar-rename-tab tab-bar--tab-index-by-name] 6 (#$ . 57205) (byte-code "\301\302\303\304 \"\"\211\305\306\307\211\211\211&D\207" [tab-bar-tabs-function completing-read "Rename tab by name: " mapcar #[257 "\300\301\"\207" [alist-get name] 4 "\n\n(fn TAB)"] read-from-minibuffer "New name for tab (leave blank for automatic naming): " nil] 9)])
#@85 Relocate TAB (by default, the current tab) closer to its group.

(fn &optional TAB)
(defalias 'tab-bar-move-tab-to-group #[256 " \206	\301!\302!\303\304\"\305\306\307\"#\211\205%\305\233\310#\205Y\211\203?Y\203?\\X\203?\311\202Y\211\203R\\V\203R\\T\202YW\205Y\211\205c\312T\"\207" [tab-bar-tabs-function tab-bar--current-tab-find tab-bar--tab-index alist-get group seq-position make-closure #[514 "\300=?\205
\301\302\"\232\207" [V0 alist-get group] 5 "\n\n(fn TB GR)"] #[514 "\300\301\"\232?\207" [alist-get group] 5 "\n\n(fn TB GR)"] nil tab-bar-move-tab-to] 11 (#$ . 57842) nil])
(byte-code "\300\301\302\303\304DD\305\306\307\310\311\312\313\314\315&\207" [custom-declare-variable tab-bar-tab-post-change-group-functions funcall function #[0 "\300\207" [nil] 1 ""] "List of functions to call after changing a tab group.\nThe current tab is supplied as an argument." :type hook :options (tab-bar-move-tab-to-group) :group tab-bar :version "28.1"] 12)
#@546 Add the tab specified by its absolute position TAB-NUMBER to GROUP-NAME.
If no TAB-NUMBER is specified, then set the GROUP-NAME for the current tab.
Interactively, TAB-NUMBER is the prefix numeric argument, and the command
prompts for GROUP-NAME.
TAB-NUMBER counts from 1.
If GROUP-NAME is the empty string, then remove the tab from any group.
While using this command, you might also want to replace
`tab-bar-format-tabs' with `tab-bar-format-tabs-groups' in
`tab-bar-format' to group tabs on the tab bar.

(fn GROUP-NAME &optional TAB-NUMBER)
(defalias 'tab-bar-change-tab-group #[513 " \203\302G^]S\202\303!\2118\304\236G\302V\205!\203,\241\210\2023\304BC\244\210\305\306\"\210\307 \210	?\205D\310\311\"\207" [tab-bar-tabs-function tab-bar-mode 0 tab-bar--current-tab-index group run-hook-with-args tab-bar-tab-post-change-group-functions force-mode-line-update message "Set tab group to '%s'"] 10 (#$ . 58852) (byte-code " 	\206\n\303!T\nS8!\304\305\306\307\310\311\312 \"B\"!\"	D\207" [tab-bar-tabs-function current-prefix-arg tab-bar-tab-group-function tab-bar--current-tab-index completing-read "Group name for tab (leave blank to remove group): " delete-dups delq nil mapcar #[257 "!\207" [tab-bar-tab-group-function] 3 "\n\n(fn TAB)"]] 12)])
#@120 Close all tabs that belong to GROUP-NAME on the selected frame.
Interactively, prompt for GROUP-NAME.

(fn GROUP-NAME)
(defalias 'tab-bar-close-group-tabs #[257 "\211G\302V\205\211\303\304\"B\305 \210	\306 !\232\205\307 )\207" [tab-bar-tab-prevent-close-functions tab-bar-tab-group-function 0 make-closure #[514 "	!\300\232?\207" [V0 tab-bar-tab-group-function] 4 "\n\n(fn TAB LAST-TAB-P)"] tab-bar-close-other-tabs tab-bar--current-tab-find tab-bar-close-tab] 5 (#$ . 60143) (byte-code "\302 !\303\304\305\306\307\310\311	 \"B\"!\"C\207" [tab-bar-tab-group-function tab-bar-tabs-function tab-bar--current-tab-find completing-read "Close all tabs with group name: " delete-dups delq nil mapcar #[257 "!\207" [tab-bar-tab-group-function] 3 "\n\n(fn TAB)"]] 10)])
#@41 The number of history elements to keep.
(defvar tab-bar-history-limit 10 (#$ . 60924))
#@75 When non-nil, omit window-configuration changes from the current command.
(defvar tab-bar-history-omit nil (#$ . 61017))
#@49 History of back changes in every tab per frame.
(defvar tab-bar-history-back (make-hash-table) (#$ . 61144))
#@52 History of forward changes in every tab per frame.
(defvar tab-bar-history-forward (make-hash-table) (#$ . 61259))
#@50 Window configuration before the current command.
(defvar tab-bar-history-old nil (#$ . 61380))
#@46 Minibuffer depth before the current command.
(defvar tab-bar-history-old-minibuffer-depth 0 (#$ . 61481))
(defalias 'tab-bar--history-pre-change #[0 "\302 \211\303U\205\304\305 B\306\307 BD\211\207" [tab-bar-history-old-minibuffer-depth tab-bar-history-old minibuffer-depth 0 wc current-window-configuration wc-point point-marker] 4])
(defalias 'tab-bar--history-change #[0 "\204	\203\n\305U\203\306\307 \310	\311\307 \"B\f\"#\210\205%\312\211\207" [tab-bar-history-omit tab-bar-history-old tab-bar-history-old-minibuffer-depth tab-bar-history-back tab-bar-history-limit 0 puthash selected-frame seq-take gethash nil] 7])
#@127 Restore a previous window configuration used in the current tab.
This navigates back in the history of window configurations.
(defalias 'tab-bar-history-back #[0 "\304\305 	\306\"\211\307A#\210\266\203\242\310\311\"\310\312\"\313!\203B\307\305 \n\306\305 \"B#\210\314!\210\315!\205E\316!\205E\211b\207\317\320!\207" [tab-bar-history-omit tab-bar-history-back tab-bar-history-old tab-bar-history-forward t selected-frame gethash puthash alist-get wc wc-point window-configuration-p set-window-configuration markerp marker-buffer message "No more tab back history"] 9 (#$ . 62126) nil])
#@122 Cancel restoration of the previous window configuration.
This navigates forward in the history of window configurations.
(defalias 'tab-bar-history-forward #[0 "\304\305 	\306\"\211\307A#\210\266\203\242\310\311\"\310\312\"\313!\203B\307\305 \n\306\305 \"B#\210\314!\210\315!\205E\316!\205E\211b\207\317\320!\207" [tab-bar-history-omit tab-bar-history-forward tab-bar-history-old tab-bar-history-back t selected-frame gethash puthash alist-get wc wc-point window-configuration-p set-window-configuration markerp marker-buffer message "No more tab forward history"] 9 (#$ . 62735) nil])
(byte-code "\300\301\302\303\304DD\305\306\307\310\311\312\313\314\315&\207" [custom-declare-variable tab-bar-history-mode funcall function #[0 "\300\207" [nil] 1 ""] "Non-nil if Tab-Bar-History mode is enabled.\nSee the `tab-bar-history-mode' command\nfor a description of this minor mode.\nSetting this variable directly does not take effect;\neither customize it (see the info node `Easy Customization')\nor call the function `tab-bar-history-mode'." :set custom-set-minor-mode :initialize custom-initialize-default :type boolean :group tab-bar] 12)
#@716 Toggle tab history mode for the tab bar.
Tab history mode remembers window configurations used in every tab,
and can restore them.

This is a minor mode.  If called interactively, toggle the
`Tab-Bar-History mode' mode.  If the prefix argument is positive,
enable the mode, and if it is zero or negative, disable the mode.

If called from Lisp, toggle the mode if ARG is `toggle'.  Enable the
mode if ARG is nil, omitted, or is a positive number.  Disable the
mode if ARG is a negative number.

To check whether the minor mode is enabled in the current buffer,
evaluate `(default-value \='tab-bar-history-mode)'.

The mode's hook is called both when the mode is enabled and when it is
disabled.

(fn &optional ARG)
(defalias 'tab-bar-history-mode #[256 "\306 \307\301\310=\203\311\301!?\202!\247\203 \312W\203 \313\202!\314\"\210\315\300!\2038\316\301\"\311\301!\2038\301B	\203\221\n\203`\317\320\321#\204`\322\320G\321\323\324\325\326\327\330\f\331BBBBBBBD$\210\n\203\204\317\320\321
#\204\204\322\320
G\321\323\324\325\326\332\330\f\333BBBBBBBD
$\210\334\335\336\"\210\334\337\340\"\210\202\233\341\335\336\"\210\341\337\340\"\210\342\343\311\301!\203\247\344\202\250\345\"\210\346\347!\203\320\350\301!\210\306 \203\300\211\306 \232\203\320\351\352\311\301!\203\314\353\202\315\354\355#\210\210\356 \210\311\301!\207" [global-minor-modes tab-bar-history-mode tab-bar-mode tab-bar-back-button tab-bar-button-margin tab-bar-forward-button current-message set-default toggle default-value 1 nil t boundp delq get-text-property 0 display add-text-properties image :type xpm :file "tabs/left-arrow.xpm" :margin (:ascent center) "tabs/right-arrow.xpm" (:ascent center) add-hook pre-command-hook tab-bar--history-pre-change window-configuration-change-hook tab-bar--history-change remove-hook run-hooks tab-bar-history-mode-hook tab-bar-history-mode-on-hook tab-bar-history-mode-off-hook called-interactively-p any customize-mark-as-set message "Tab-Bar-History mode %sabled%s" "en" "dis" "" force-mode-line-update] 14 (#$ . 63899) (byte-code "\203\n\301!\202\302C\207" [current-prefix-arg prefix-numeric-value toggle] 2)])
(defvar tab-bar-history-mode-hook nil)
(byte-code "\301\302N\204\f\303\301\302\304#\210\303\301\305\306#\210\303\301\307\310C#\210\311\312\310\313\300!\205#\310\211%\207" [tab-bar-history-mode-map tab-bar-history-mode-hook variable-documentation put "Hook run after entering or leaving `tab-bar-history-mode'.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" custom-type hook standard-value nil add-minor-mode tab-bar-history-mode boundp] 6)
#@509 Display a list of named window configurations.
The list is displayed in the buffer `*Tabs*'.
It's placed in the center of the frame to resemble a window list
displayed by a window switcher in some window managers on Alt+Tab.

In this list of window configurations you can delete or select them.
Type ? after invocation to get help on commands available.
Type q to remove the list of window configurations from the display.

The first column shows `D' for a window configuration you have
marked for deletion.
(defalias 'tab-switcher #[0 "\304\305\306 \210*\305\307\310 !\210)\311\312!\207" [default-directory tab-bar-show tab-bar-new-tab-choice switch-to-buffer-preserve-window-point t nil tab-bar-new-tab switch-to-buffer tab-switcher-noselect message "Commands: d, x; RET; q to quit; ? for help."] 3 (#$ . 66586) nil])
#@172 Create and return a buffer with a list of window configurations.
The list is displayed in a buffer named `*Tabs*'.

For more information, see the function `tab-switcher'.
(defalias 'tab-switcher-noselect #[0 "\303\304 \"\305\306\"r\307\310\311\312\313\314\"\206\312\313\315\"\"!q\210\313\316 \210\317 \210\320\321\322 GZS\323\245\"\210\324 \323\245\325Z\211\211\203]\211@\326\310\327\330\n\331\"\326\332\315\"\333\334\335\336%#\337#c\210A\266\202\2028\210eb\210\340`\337\"\206ieb\210\211G\341V\203u\342 \210\343\n!\210\344\313!\210\345p)\207" [tab-bar-tabs-function buffer-read-only tab-switcher-column seq-remove #[257 "\211@\300=\207" [current-tab] 3 "\n\n(fn TAB)"] sort #[514 "\300\301\"\300\301\"W\207" [alist-get time] 6 "\n\n(fn A B)"] get-buffer-create format " *Tabs*<%s>" frame-parameter nil window-id name erase-buffer tab-switcher-mode insert-char 10 frame-height 2 frame-width 15 propertize "%s %s\n" make-string 32 alist-get mouse-face highlight help-echo "mouse-2: select this window configuration" tab next-single-property-change 1 tab-switcher-next-line move-to-column set-buffer-modified-p t] 14 (#$ . 67418)])
(defvar tab-switcher-column 3 nil)
(make-variable-buffer-local 'tab-switcher-column)
#@47 Local keymap for `tab-switcher-mode' buffers.
(defvar tab-switcher-mode-map (byte-code "\300 \301\302\"\210\303\304\305#\210\303\306\307#\210\303\310\311#\210\303\312\311#\210\303\313\314#\210\303\315\311#\210\303\316\317#\210\303\320\321#\210\303\322\321#\210\303\323\324#\210\303\325\326#\210\303\327\330#\210\303\331\332#\210\303\333\334#\210\303\335\336#\210\207" [make-keymap suppress-keymap t define-key "q" quit-window "
" tab-switcher-select "d" tab-switcher-delete "k" "" tab-switcher-delete-backwards "" "x" tab-switcher-execute " " tab-switcher-next-line "n" "p" tab-switcher-prev-line "" tab-switcher-backup-unmark "?" describe-mode "u" tab-switcher-unmark [mouse-2] tab-switcher-mouse-select [follow-link] mouse-face] 5) (#$ . 68656))
(defvar tab-switcher-mode-hook nil)
(byte-code "\300\301N\204\f\302\300\301\303#\210\304\305!\204\302\305\306\307#\210\300\207" [tab-switcher-mode-hook variable-documentation put "Hook run after entering Window Configurations mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" boundp tab-switcher-mode-map definition-name tab-switcher-mode] 4)
(defvar tab-switcher-mode-map (make-sparse-keymap))
(byte-code "\301\302N\204\303\301\302\304\305!#\210\306\307!\204\303\307\310\311#\210\312\313 !\210\307\302N\204-\303\307\302\304\314!#\210\306\300!\204B\303\300\310\311#\210\315\316\300\317\"\210!\210\300\302N\204P\303\300\302\304\320!#\210\303\311\321\317#\207" [tab-switcher-mode-abbrev-table tab-switcher-mode-map variable-documentation put purecopy "Keymap for `tab-switcher-mode'." boundp tab-switcher-mode-syntax-table definition-name tab-switcher-mode (lambda (#1=#:def-tmp-var) (defvar tab-switcher-mode-syntax-table #1#)) make-syntax-table "Syntax table for `tab-switcher-mode'." (lambda (#1#) (defvar tab-switcher-mode-abbrev-table #1#)) define-abbrev-table nil "Abbrev table for `tab-switcher-mode'." derived-mode-parent] 5)
#@873 Major mode for selecting a window configuration.
Each line describes one window configuration in Emacs.
Letters do not insert themselves; instead, they are commands.
\<tab-switcher-mode-map>
\[tab-switcher-mouse-select] -- select window configuration you click on.
\[tab-switcher-select] -- select current line's window configuration.
\[tab-switcher-delete] -- mark that window configuration to be deleted, and move down.
\[tab-switcher-delete-backwards] -- mark that window configuration to be deleted, and move up.
\[tab-switcher-execute] -- delete marked window configurations.
\[tab-switcher-unmark] -- remove all kinds of marks from current line.
  With prefix argument, also move up one line.
\[tab-switcher-backup-unmark] -- back up a line and remove marks.

This mode runs the hook `tab-switcher-mode-hook', as the final or
penultimate step during initialization.
(defalias 'tab-switcher-mode #[0 "\306\300!\210\307\310 \210\311\312\313!\210\314\f!\210
\307)\315\316!\207" [delay-mode-hooks major-mode mode-name tab-switcher-mode-map tab-switcher-mode-syntax-table tab-switcher-mode-abbrev-table make-local-variable t kill-all-local-variables tab-switcher-mode "Window Configurations" use-local-map set-syntax-table run-mode-hooks tab-switcher-mode-hook local-abbrev-table truncate-lines] 2 (#$ . 70657) nil])
#@95 Return window configuration described by this line of the list.

(fn ERROR-IF-NON-EXISTENT-P)
(defalias 'tab-switcher-current-tab #[257 "\212\301 \210\302`\\\\)m?\205\303\304\"\211\206\205\305\306!\207" [tab-switcher-column beginning-of-line 2 get-text-property tab user-error "No window configuration on this line"] 5 (#$ . 71989)])
#@135 Move to ARGth next line in the list of tabs.
Interactively, ARG is the prefix numeric argument and defaults to 1.

(fn &optional ARG)
(defalias 'tab-switcher-next-line #[256 "\211y\210\301 \210\302!\207" [tab-switcher-column beginning-of-line move-to-column] 3 (#$ . 72339) "p"])
#@139 Move to ARGth previous line in the list of tabs.
Interactively, ARG is the prefix numeric argument and defaults to 1.

(fn &optional ARG)
(defalias 'tab-switcher-prev-line #[256 "\211[y\210\301 \210\302!\207" [tab-switcher-column beginning-of-line move-to-column] 3 (#$ . 72627) "p"])
#@138 Cancel requested operations on window configuration on this line and move down.
With prefix arg, move up instead.

(fn &optional BACKUP)
(defalias 'tab-switcher-unmark #[256 "\302 \210\303!\210\304\305\306!\210\307c\210)\211\203\310\202\306y\210\303!\207" [tab-switcher-column buffer-read-only beginning-of-line move-to-column nil delete-char 1 " " -1] 3 (#$ . 72920) "P"])
#@81 Move up one line and cancel requested operations on window configuration there.
(defalias 'tab-switcher-backup-unmark #[0 "\301y\210\302 \210\301y\210\303!\207" [tab-switcher-column -1 tab-switcher-unmark move-to-column] 2 (#$ . 73307) nil])
#@229 Mark window configuration on this line to be deleted by \<tab-switcher-mode-map>\[tab-switcher-execute] command.
Prefix arg says how many window configurations to delete.
Negative arg means delete backwards.

(fn &optional ARG)
(defalias 'tab-switcher-delete #[256 "\302\211\203\f\211\303U\203\304\262\211\303V\203&\305\304!\210\306c\210\304y\210\211S\262\202\211\303W\203=\305\304!\210\306c\210\307y\210\211T\262\202&\310	!)\207" [buffer-read-only tab-switcher-column nil 0 1 delete-char 68 -1 move-to-column] 3 (#$ . 73557) "p"])
#@197 Mark window configuration on this line to be deleted by \<tab-switcher-mode-map>\[tab-switcher-execute] command.
Then move up one line.  Prefix arg means move that many lines.

(fn &optional ARG)
(defalias 'tab-switcher-delete-backwards #[256 "\300\206\301[!\207" [tab-switcher-delete 1] 3 (#$ . 74108) "p"])
#@66 Delete the window configuration from the list of tabs.

(fn TAB)
(defalias 'tab-switcher-delete-from-list #[257 "\302\303 B\304\305!B\306BEB\307\310	 \"!\207" [tab-bar-closed-tabs tab-bar-tabs-function frame selected-frame index tab-bar--tab-index tab tab-bar-tabs-set delq] 5 (#$ . 74426)])
#@99 Delete window configurations marked with \<tab-switcher-mode-map>\[tab-switcher-delete] commands.
(defalias 'tab-switcher-execute #[0 "\212eb\210\302\303\304\305\306	\307\"\"\302\310#\2030\311u\210\312\302!\211\203,\313!\210\314 \210`\315y\210`|\210\210\202*\314 \210\316	!\210\317 \207" [buffer-read-only tab-switcher-column nil re-search-forward format "^%sD" make-string 32 t -1 tab-switcher-current-tab tab-switcher-delete-from-list beginning-of-line 1 move-to-column force-mode-line-update] 6 (#$ . 74729) nil])
#@170 Select this line's window configuration.
This command replaces all the existing windows in the selected frame
with those specified by the selected window configuration.
(defalias 'tab-switcher-select #[0 "\302\303!\304p!\210\303\305\306\305\307!T\"*\207" [tab-bar-closed-tabs inhibit-message tab-switcher-current-tab t kill-buffer nil tab-bar-close-tab tab-bar--tab-index] 5 (#$ . 75259) nil])
#@70 Select the window configuration whose line you click on.

(fn EVENT)
(defalias 'tab-switcher-mouse-select #[257 "\300\301!\211@\262!q\210\302\301!!b\210\303 \207" [window-buffer event-end posn-point tab-switcher-select] 4 (#$ . 75662) "e"])
#@19 

(fn ALL-FRAMES)
(defalias 'tab-bar--reusable-frames #[257 "\211\300\267\202\f\301 \207\302 \207\303!\203\211C\207\304 C\207" [#s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (t 6 visible 9)) frame-list visible-frame-list framep selected-frame] 3 (#$ . 75912)])
#@717 Return the tab that owns the window whose buffer is BUFFER-OR-NAME.
BUFFER-OR-NAME may be a buffer or a buffer name, and defaults to
the current buffer.

The optional argument ALL-FRAMES specifies the frames to consider:

- t means consider all tabs on all existing frames.

- `visible' means consider all tabs on all visible frames.

- A frame means consider all tabs on that frame only.

- Any other value of ALL-FRAMES means consider all tabs on the
selected frame and no others.

When the optional argument IGNORE-CURRENT-TAB is non-nil,
don't take into account the buffers in the currently selected tab.
Otherwise, prefer buffers of the current tab.

(fn BUFFER-OR-NAME &optional ALL-FRAMES IGNORE-CURRENT-TAB)
(defalias 'tab-bar-get-buffer-tab #[769 "\203\n\300!\202p\301!\205\302\303\304#\305!\"\207" [get-buffer bufferp seq-some make-closure #[257 "\303\304\305\301#\n!\306!\307\"\262\300\203\266\202\202!\211B\266\202\"\207" [V0 V1 tab-bar-tabs-function seq-some make-closure #[257 "\211@\302=\203\303\300\301\"\202&\304\305\"\211\205\306!\300>\206$\307\300!\235\266\202\2057\310\311\312\313\301#B\314\301BD\"\207" [V0 V1 current-tab get-buffer-window alist-get ws window-state-buffers buffer-name append index tab-bar--tab-index nil frame] 8 "\n\n(fn TAB)"] tab-bar--current-tab-find remq] 8 "\n\n(fn FRAME)"] tab-bar--reusable-frames] 9 (#$ . 76223)])
#@1426 Display BUFFER in a tab using display actions in ALIST.
ALIST is an association list of action symbols and values.  See
Info node `(elisp) Buffer Display Action Alists' for details of
such alists.

If ALIST contains a `tab-name' entry, it creates a new tab with that name and
displays BUFFER in a new tab.  If a tab with this name already exists, it
switches to that tab before displaying BUFFER.  The `tab-name' entry can be
a function, in which case it is called with two arguments: BUFFER and ALIST,
and should return the tab name.  When a `tab-name' entry is omitted, create
a new tab without an explicit name.

The ALIST entry `tab-group' (string or function) defines the tab group.

If ALIST contains a `reusable-frames' entry, its value determines
which frames to search for a reusable tab:
  nil -- do not reuse any frames;
  a frame  -- just that frame;
  `visible' -- all visible frames;
  0 -- all frames on the current terminal;
  t -- all frames;
  other non-nil values -- use the selected frame.

If ALIST contains a non-nil `ignore-current-tab' entry, then the buffers
of the current tab are skipped when searching for a reusable tab.
Otherwise, prefer buffers of the current tab.

This is an action function for buffer display, see Info
node `(elisp) Buffer Display Action Functions'.  It should be
called only by `display-buffer' or a function directly or
indirectly called by the latter.

(fn BUFFER ALIST)
(defalias 'display-buffer-in-tab #[514 "\300\301\"\300\302\"\205\303#\211\203>\300\304\"\300\305\"\203%\306!\210\211\203.\307T!\210\310\"\205=\311\310\"!\207\300\312\"\313!\203P\211\"\262\211\203u\314!\211\203n\307T!\210\310!\205t\311\310!!\207\315\"\207\315\"\207" [alist-get reusable-frames ignore-current-tab tab-bar-get-buffer-tab frame index select-frame-set-input-focus tab-bar-select-tab get-buffer-window select-window tab-name functionp tab-bar--tab-index-by-name display-buffer-in-new-tab] 11 (#$ . 77629)])
#@959 Display BUFFER in a new tab using display actions in ALIST.
ALIST is an association list of action symbols and values.  See
Info node `(elisp) Buffer Display Action Alists' for details of
such alists.

Like `display-buffer-in-tab', but always creates a new tab unconditionally,
without checking if a suitable tab already exists.

If ALIST contains a `tab-name' entry, it creates a new tab with that name
and displays BUFFER in a new tab.  The `tab-name' entry can be a function,
in which case it is called with two arguments: BUFFER and ALIST, and should
return the tab name.  When a `tab-name' entry is omitted, create a new tab
without an explicit name.

The ALIST entry `tab-group' (string or function) defines the tab group.

This is an action function for buffer display, see Info
node `(elisp) Buffer Display Action Functions'.  It should be
called only by `display-buffer' or a function directly or
indirectly called by the latter.

(fn BUFFER ALIST)
(defalias 'display-buffer-in-new-tab #[514 "\301\302 \210\303\304\"\305!\203\211\"\262\211\203\306!\210\210\303\307\"\305!\203.\211\"\262\211\2036\310!\210\210\311\312 \313$)\207" [tab-bar-new-tab-choice t tab-bar-new-tab alist-get tab-name functionp tab-bar-rename-tab tab-group tab-bar-change-tab-group window--display-buffer selected-window tab] 7 (#$ . 79627)])
#@213 Switch to buffer BUFFER-OR-NAME in another tab.
Like \[switch-to-buffer-other-frame] (which see), but creates a new tab.
Interactively, prompt for the buffer to switch to.

(fn BUFFER-OR-NAME &optional NORECORD)
(defalias 'switch-to-buffer-other-tab #[513 "\300\301!\302\"\207" [display-buffer window-normalize-buffer-to-switch-to ((display-buffer-in-tab) (inhibit-same-window))] 5 (#$ . 80979) (byte-code "\300\301!C\207" [read-buffer-to-switch "Switch to buffer in other tab: "] 2)])
(set-advertised-calling-convention 'switch-to-buffer-other-tab '(buffer-or-name) "28.1")
#@270 Edit file FILENAME, in another tab.
Like \[find-file-other-frame] (which see), but creates a new tab.
Interactively, prompt for FILENAME.
If WILDCARDS is non-nil, FILENAME can include widcards, and all matching
files will be visited.

(fn FILENAME &optional WILDCARDS)
(defalias 'find-file-other-tab #[513 "\300\301\211$\211<\203\211\237\262\302@!\210\303\304A\"\210\207\302!\207" [find-file-noselect nil switch-to-buffer-other-tab mapc switch-to-buffer] 7 (#$ . 81562) (byte-code "\300\301\302 \"\207" [find-file-read-args "Find file in other tab: " confirm-nonexistent-file-or-buffer] 3)])
#@396 Edit file FILENAME, in another tab, but don't allow changes.
Like \[find-file-other-frame] (which see), but creates a new tab.
Like \[find-file-other-tab], but marks buffer as read-only.
Use \[read-only-mode] to permit editing.
Interactively, prompt for FILENAME.
If WILDCARDS is non-nil, FILENAME can include widcards, and all matching
files will be visited.

(fn FILENAME &optional WILDCARDS)
(defalias 'find-file-read-only-other-tab #[513 "\300\301#\207" [find-file--read-only #[514 "\300\301\"!\207" [window-buffer find-file-other-tab] 6 "\n\n(fn FILENAME WILDCARDS)"]] 6 (#$ . 82169) (byte-code "\300\301\302 \"\207" [find-file-read-args "Find file read-only in other tab: " confirm-nonexistent-file-or-buffer] 3)])
#@404 Display the buffer of the next command in a new tab.
The next buffer is the buffer displayed by the next command invoked
immediately after this command (ignoring reading from the minibuffer).
Creates a new tab before displaying the buffer, or switches to the tab
that already contains that buffer.
When `switch-to-buffer-obey-display-actions' is non-nil,
`switch-to-buffer' commands are also supported.
(defalias 'other-tab-prefix #[0 "\300\301\302\303#\210\304\305!\207" [display-buffer-override-next-command #[514 "\300\301\302\"\"\210\303 \304B\207" [display-buffer-in-tab append ((inhibit-same-window)) selected-window tab] 7 "\n\n(fn BUFFER ALIST)"] nil "[other-tab]" message "Display next command buffer in a new tab..."] 4 (#$ . 82901) nil])
(byte-code "\301\302\303\"\210\301\304\305\"\210\301\306\307\"\210\301\310\311\"\210\301\312\313\"\210\301\314\315\"\210\301\316\317\"\210\301\320\321\"\210\301\322\323\"\210\301\324\325\"\210\301\326\327\"\210\301\330\331\"\210\301\332\333\"\210\301\334\335\"\210\301\336\337\"\210\301\340\341\"\210\301\342\343\"\210\301\344\345\"\210\301\346\347\"\210\301\350\351\"\210\352\353\306#\210\352\354\304#\210\352\355\302#\210\352\356\316#\210\352\357\314#\210\352\360\322#\210\352\361\330#\210\352\362\332#\210\352\363\340#\210\352\364\342#\210\352\365\346#\210\352\366\344#\210\352\367\326#\210\352\370\371#\210\352\372\373#\210\352\374\373#\210\352\375\376#\210\352\377\201@#\207" [tab-prefix-map defalias tab-new tab-bar-new-tab tab-new-to tab-bar-new-tab-to tab-duplicate tab-bar-duplicate-tab tab-detach tab-bar-detach-tab tab-window-detach tab-bar-move-window-to-tab tab-close tab-bar-close-tab tab-close-other tab-bar-close-other-tabs tab-close-group tab-bar-close-group-tabs tab-undo tab-bar-undo-close-tab tab-select tab-bar-select-tab tab-switch tab-bar-switch-to-tab tab-next tab-bar-switch-to-next-tab tab-previous tab-bar-switch-to-prev-tab tab-last tab-bar-switch-to-last-tab tab-recent tab-bar-switch-to-recent-tab tab-move tab-bar-move-tab tab-move-to tab-bar-move-tab-to tab-rename tab-bar-rename-tab tab-group tab-bar-change-tab-group tab-list tab-switcher define-key "n" "N" "2" "1" "0" "u" "o" "O" "m" "M" "G" "r" "
" "b" switch-to-buffer-other-tab "f" find-file-other-tab "" "" find-file-read-only-other-tab "t" other-tab-prefix] 4)
#@81 Keymap to repeat tab switch key sequences `C-x t o o O'.
Used in `repeat-mode'.
(defvar tab-bar-switch-repeat-map (byte-code "\300 \301\302\303#\210\301\304\305#\210\207" [make-sparse-keymap define-key "o" tab-next "O" tab-previous] 5) (#$ . 85231))
(byte-code "\300\301\302\303#\210\300\304\302\303#\207" [put tab-next repeat-map tab-bar-switch-repeat-map tab-previous] 4)
#@79 Keymap to repeat tab move key sequences `C-x t m m M'.
Used in `repeat-mode'.
(defvar tab-bar-move-repeat-map (byte-code "\300 \301\302\303#\210\301\304\305#\210\207" [make-sparse-keymap define-key "m" tab-move "M" tab-bar-move-tab-backward] 5) (#$ . 85613))
(byte-code "\300\301\302\303#\210\300\304\302\303#\210\305\306!\207" [put tab-move repeat-map tab-bar-move-repeat-map tab-bar-move-tab-backward provide tab-bar] 4)

Youez - 2016 - github.com/yon3zu
LinuXploit