Add [+] button

This commit is contained in:
Takafumi Arakaki 2012-10-10 00:57:16 +02:00
parent 1fe2c1cb15
commit 1848fc2f6a

View file

@ -40,6 +40,7 @@
(defvar ein:header-line-format '(:eval (ein:header-line)))
(defvar ein:header-line-tab-map (make-sparse-keymap))
(defvar ein:header-line-insert-tab-map (make-sparse-keymap))
(defvar ein:header-line-tab-help
"\
mouse-1 (left click) : switch to this tab
@ -222,26 +223,33 @@ insert-prev insert-next move-prev move-next)"
(get-name (oref tab :get-name)))
(ein:join-str
" "
(loop for i from 1
for elem in list
if (eq elem current)
collect (propertize
(or (ein:and-let* ((name (funcall get-name elem)))
(format "/%d: %s\\" i name))
(format "/%d\\" i))
'ein:worksheet elem
'keymap ein:header-line-tab-map
'help-echo ein:header-line-tab-help
'mouse-face 'highlight
'face 'ein:notification-tab-selected)
else
collect (propertize
(format "/%d\\" i)
'ein:worksheet elem
'keymap ein:header-line-tab-map
'help-echo ein:header-line-tab-help
'mouse-face 'highlight
'face 'ein:notification-tab-normal)))))
(append
(loop for i from 1
for elem in list
if (eq elem current)
collect (propertize
(or (ein:and-let* ((name (funcall get-name elem)))
(format "/%d: %s\\" i name))
(format "/%d\\" i))
'ein:worksheet elem
'keymap ein:header-line-tab-map
'help-echo ein:header-line-tab-help
'mouse-face 'highlight
'face 'ein:notification-tab-selected)
else
collect (propertize
(format "/%d\\" i)
'ein:worksheet elem
'keymap ein:header-line-tab-map
'help-echo ein:header-line-tab-help
'mouse-face 'highlight
'face 'ein:notification-tab-normal))
(list
(propertize "[+]"
'keymap ein:header-line-insert-tab-map
'help-echo "Click (mouse-1) to insert a new tab."
'mouse-face 'highlight
'face 'ein:notification-tab-normal))))))
;;; Header line
@ -255,6 +263,9 @@ insert-prev insert-next move-prev move-next)"
(define-key map [header-line mouse-2] 'ein:header-line-delete-this-tab)
(define-key map [header-line mouse-3] 'ein:header-line-pop-to-this-tab))
(define-key ein:header-line-insert-tab-map
[header-line mouse-1] 'ein:header-line-insert-new-tab)
(defmacro ein:with-destructuring-bind-key-event (key-event &rest body)
(declare (debug (form &rest form))
(indent 1))
@ -312,6 +323,14 @@ Generated by `ein:header-line-define-mouse-commands'" slot)
ein:header-line-move-next-tab :move-next
)
(defun ein:header-line-insert-new-tab (key-event)
"Insert new tab."
(interactive "e")
(ein:header-line-select-window key-event)
(let ((notification (oref ein:%notification% :tab)))
(funcall (oref notification :insert-next)
(car (last (funcall (oref notification :get-list)))))))
(defun ein:header-line ()
(format
"IP[%s]: %s"