diff options
| author | Juri Linkov | 2019-09-03 01:29:07 +0300 |
|---|---|---|
| committer | Juri Linkov | 2019-09-03 01:29:07 +0300 |
| commit | c2ab5e8cf3654e3e13083fb2203502d5d5f49dc6 (patch) | |
| tree | 9d006c8911af424f0a720bcede451f33cf8f1837 | |
| parent | f458ca28cb12de302de774b5bc9b43ad474745e5 (diff) | |
| download | emacs-c2ab5e8cf3654e3e13083fb2203502d5d5f49dc6.tar.gz emacs-c2ab5e8cf3654e3e13083fb2203502d5d5f49dc6.zip | |
* lisp/tab-line.el: Limit the number of window tabs to tab-line-tabs-limit.
| -rw-r--r-- | lisp/tab-line.el | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/lisp/tab-line.el b/lisp/tab-line.el index 235cff19d97..da85925ff55 100644 --- a/lisp/tab-line.el +++ b/lisp/tab-line.el | |||
| @@ -130,26 +130,45 @@ Reduce tab width proportionally to space taken by other tabs." | |||
| 130 | (substring tab-name (- limit))) | 130 | (substring tab-name (- limit))) |
| 131 | 'help-echo tab-name)))) | 131 | 'help-echo tab-name)))) |
| 132 | 132 | ||
| 133 | (defun tab-line-format () | 133 | (defvar tab-line-tabs-limit 15 |
| 134 | "Template for displaying tab line for selected window." | 134 | "Maximum number of buffer tabs displayed in the window tab-line.") |
| 135 | (let* ((window (selected-window)) | 135 | |
| 136 | (buffer (window-buffer window)) | 136 | (defun tab-line-tabs (&optional window) |
| 137 | (let* ((buffer (window-buffer window)) | ||
| 137 | (next-buffers (seq-remove (lambda (b) (eq b buffer)) | 138 | (next-buffers (seq-remove (lambda (b) (eq b buffer)) |
| 138 | (window-next-buffers window))) | 139 | (window-next-buffers window))) |
| 140 | (next-buffers (seq-filter #'buffer-live-p next-buffers)) | ||
| 139 | (prev-buffers (seq-remove (lambda (b) (eq b buffer)) | 141 | (prev-buffers (seq-remove (lambda (b) (eq b buffer)) |
| 140 | (mapcar #'car (window-prev-buffers window)))) | 142 | (mapcar #'car (window-prev-buffers window)))) |
| 143 | (prev-buffers (seq-filter #'buffer-live-p prev-buffers)) | ||
| 141 | ;; Remove next-buffers from prev-buffers | 144 | ;; Remove next-buffers from prev-buffers |
| 142 | (prev-buffers (seq-difference prev-buffers next-buffers)) | 145 | (prev-buffers (seq-difference prev-buffers next-buffers)) |
| 143 | (buffers (append (reverse prev-buffers) | 146 | (half-limit (/ tab-line-tabs-limit 2)) |
| 144 | (list buffer) | 147 | (prev-buffers-limit |
| 145 | next-buffers)) | 148 | (if (> (length prev-buffers) half-limit) |
| 146 | (buffers (seq-filter #'buffer-live-p buffers))) | 149 | (if (> (length next-buffers) half-limit) |
| 150 | half-limit | ||
| 151 | (+ half-limit (- half-limit (length next-buffers)))) | ||
| 152 | (length prev-buffers))) | ||
| 153 | (next-buffers-limit | ||
| 154 | (- tab-line-tabs-limit prev-buffers-limit)) | ||
| 155 | (buffer-tabs | ||
| 156 | (append (reverse (seq-take prev-buffers prev-buffers-limit)) | ||
| 157 | (list buffer) | ||
| 158 | (seq-take next-buffers next-buffers-limit)))) | ||
| 159 | buffer-tabs)) | ||
| 160 | |||
| 161 | (defun tab-line-format () | ||
| 162 | "Template for displaying tab line for selected window." | ||
| 163 | (let* ((window (selected-window)) | ||
| 164 | (buffer (window-buffer window)) | ||
| 165 | (buffer-tabs (tab-line-tabs window))) | ||
| 147 | (append | 166 | (append |
| 148 | (mapcar | 167 | (mapcar |
| 149 | (lambda (b) | 168 | (lambda (b) |
| 150 | (format "%s%s%s" | 169 | (format "%s%s%s" |
| 151 | tab-line-separator | 170 | tab-line-separator |
| 152 | (apply 'propertize (tab-line-tab-name b buffers) | 171 | (apply 'propertize (tab-line-tab-name b buffer-tabs) |
| 153 | `( | 172 | `( |
| 154 | buffer ,b | 173 | buffer ,b |
| 155 | face ,(if (eq b buffer) | 174 | face ,(if (eq b buffer) |
| @@ -166,7 +185,7 @@ Reduce tab width proportionally to space taken by other tabs." | |||
| 166 | 'tab-line-tab-inactive) | 185 | 'tab-line-tab-inactive) |
| 167 | mouse-face tab-line-close-highlight | 186 | mouse-face tab-line-close-highlight |
| 168 | keymap ,tab-line-tab-close-map)))) | 187 | keymap ,tab-line-tab-close-map)))) |
| 169 | buffers) | 188 | buffer-tabs) |
| 170 | (list (format "%s%s" | 189 | (list (format "%s%s" |
| 171 | tab-line-separator | 190 | tab-line-separator |
| 172 | (apply 'propertize tab-line-tab-name-add | 191 | (apply 'propertize tab-line-tab-name-add |