summaryrefslogtreecommitdiff
path: root/lisp/tab-bar.el
diff options
context:
space:
mode:
authorJuri Linkov <juri@linkov.net>2019-10-20 23:54:48 +0300
committerJuri Linkov <juri@linkov.net>2019-10-20 23:54:48 +0300
commit5cc1bd5ea1b7e57f36b52b33f2d8b6c42f620d0f (patch)
tree4d1bc919faf6cbddcd6f1d4378577c277754af28 /lisp/tab-bar.el
parent987366065b5809f5707b375ce8000664249b8a4f (diff)
downloademacs-5cc1bd5ea1b7e57f36b52b33f2d8b6c42f620d0f.tar.gz
emacs-5cc1bd5ea1b7e57f36b52b33f2d8b6c42f620d0f.tar.bz2
emacs-5cc1bd5ea1b7e57f36b52b33f2d8b6c42f620d0f.zip
* lisp/tab-bar.el: Use autoloaded seq-position.
* lisp/tab-bar.el (tab-bar--current-tab-index) (tab-bar--tab-index, tab-bar--tab-index-by-name): Use seq-position. (tab-bar-select-tab, tab-bar-new-tab, tab-bar-close-tab) (tab-bar-close-other-tabs, tab-bar-rename-tab) (tab-bar-list-execute): Call force-mode-line-update unconditionally independent from tab-bar-mode. (tab-bar-rename-tab, tab-bar-rename-tab-by-name): Use read-from-minibuffer instead of read-string to be able to enter empty string.
Diffstat (limited to 'lisp/tab-bar.el')
-rw-r--r--lisp/tab-bar.el69
1 files changed, 26 insertions, 43 deletions
diff --git a/lisp/tab-bar.el b/lisp/tab-bar.el
index 113202a3b54..098d7057e54 100644
--- a/lisp/tab-bar.el
+++ b/lisp/tab-bar.el
@@ -445,36 +445,16 @@ Return its existing value or a new value."
(explicit-name . ,tab-explicit-name))))
(defun tab-bar--current-tab-index (&optional tabs)
- ;; FIXME: could be replaced with 1-liner using seq-position
- (let ((tabs (or tabs (funcall tab-bar-tabs-function)))
- (i 0))
- (catch 'done
- (while tabs
- (when (eq (car (car tabs)) 'current-tab)
- (throw 'done i))
- (setq i (1+ i) tabs (cdr tabs))))))
+ (seq-position (or tabs (funcall tab-bar-tabs-function))
+ 'current-tab (lambda (a b) (eq (car a) b))))
(defun tab-bar--tab-index (tab &optional tabs)
- ;; FIXME: could be replaced with 1-liner using seq-position
- (let ((tabs (or tabs (funcall tab-bar-tabs-function)))
- (i 0))
- (catch 'done
- (while tabs
- (when (eq (car tabs) tab)
- (throw 'done i))
- (setq i (1+ i) tabs (cdr tabs))))
- i))
+ (seq-position (or tabs (funcall tab-bar-tabs-function))
+ tab))
(defun tab-bar--tab-index-by-name (name &optional tabs)
- ;; FIXME: could be replaced with 1-liner using seq-position
- (let ((tabs (or tabs (funcall tab-bar-tabs-function)))
- (i 0))
- (catch 'done
- (while tabs
- (when (equal (cdr (assq 'name (car tabs))) name)
- (throw 'done i))
- (setq i (1+ i) tabs (cdr tabs))))
- i))
+ (seq-position (or tabs (funcall tab-bar-tabs-function))
+ name (lambda (a b) (equal (cdr (assq 'name a)) b))))
(defun tab-bar-select-tab (&optional arg)
@@ -513,8 +493,7 @@ to the numeric argument. ARG counts from 1."
(setf (nth from-index tabs) from-tab))
(setf (nth to-index tabs) (tab-bar--current-tab (nth to-index tabs))))
- (when tab-bar-mode
- (force-mode-line-update)))))
+ (force-mode-line-update))))
(defun tab-bar-switch-to-next-tab (&optional arg)
"Switch to ARGth next tab."
@@ -617,8 +596,9 @@ If `rightmost', create as the last tab."
(and (natnump tab-bar-show)
(> (length tabs) tab-bar-show))))
(tab-bar-mode 1))
- (if tab-bar-mode
- (force-mode-line-update)
+
+ (force-mode-line-update)
+ (unless tab-bar-mode
(message "Added new tab at %s" tab-bar-new-tab-to))))
@@ -664,8 +644,9 @@ TO-INDEX counts from 1."
(and (natnump tab-bar-show)
(<= (length tabs) tab-bar-show)))
(tab-bar-mode -1))
- (if tab-bar-mode
- (force-mode-line-update)
+
+ (force-mode-line-update)
+ (unless tab-bar-mode
(message "Deleted tab and switched to %s" tab-bar-close-tab-select))))
(defun tab-bar-close-tab-by-name (name)
@@ -687,8 +668,9 @@ TO-INDEX counts from 1."
(and (natnump tab-bar-show)
(<= 1 tab-bar-show)))
(tab-bar-mode -1))
- (if tab-bar-mode
- (force-mode-line-update)
+
+ (force-mode-line-update)
+ (unless tab-bar-mode
(message "Deleted all other tabs")))))
@@ -702,8 +684,9 @@ function `tab-bar-tab-name-function'."
(let* ((tabs (funcall tab-bar-tabs-function))
(tab-index (or current-prefix-arg (1+ (tab-bar--current-tab-index tabs))))
(tab-name (cdr (assq 'name (nth (1- tab-index) tabs)))))
- (list (read-string "New name for tab (leave blank for automatic naming): "
- nil nil tab-name)
+ (list (read-from-minibuffer
+ "New name for tab (leave blank for automatic naming): "
+ nil nil nil nil tab-name)
current-prefix-arg)))
(let* ((tabs (funcall tab-bar-tabs-function))
(tab-index (if arg
@@ -716,8 +699,9 @@ function `tab-bar-tab-name-function'."
(funcall tab-bar-tab-name-function))))
(setf (cdr (assq 'name tab-to-rename)) tab-new-name
(cdr (assq 'explicit-name tab-to-rename)) tab-explicit-name)
- (if tab-bar-mode
- (force-mode-line-update)
+
+ (force-mode-line-update)
+ (unless tab-bar-mode
(message "Renamed tab to '%s'" tab-new-name))))
(defun tab-bar-rename-tab-by-name (tab-name new-name)
@@ -729,9 +713,9 @@ function `tab-bar-tab-name-function'."
(mapcar (lambda (tab)
(cdr (assq 'name tab)))
(funcall tab-bar-tabs-function)))))
- (list tab-name
- (read-string "New name for tab (leave blank for automatic naming): "
- nil nil tab-name))))
+ (list tab-name (read-from-minibuffer
+ "New name for tab (leave blank for automatic naming): "
+ nil nil nil nil tab-name))))
(tab-bar-rename-tab new-name (1+ (tab-bar--tab-index-by-name tab-name))))
@@ -950,8 +934,7 @@ Then move up one line. Prefix arg means move that many lines."
(delete-region (point) (progn (forward-line 1) (point))))))))
(beginning-of-line)
(move-to-column tab-bar-list-column)
- (when tab-bar-mode
- (force-mode-line-update)))
+ (force-mode-line-update))
(defun tab-bar-list-select ()
"Select this line's window configuration.