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-format '(:eval (ein:header-line)))
(defvar ein:header-line-tab-map (make-sparse-keymap)) (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 (defvar ein:header-line-tab-help
"\ "\
mouse-1 (left click) : switch to this tab 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))) (get-name (oref tab :get-name)))
(ein:join-str (ein:join-str
" " " "
(loop for i from 1 (append
for elem in list (loop for i from 1
if (eq elem current) for elem in list
collect (propertize if (eq elem current)
(or (ein:and-let* ((name (funcall get-name elem))) collect (propertize
(format "/%d: %s\\" i name)) (or (ein:and-let* ((name (funcall get-name elem)))
(format "/%d\\" i)) (format "/%d: %s\\" i name))
'ein:worksheet elem (format "/%d\\" i))
'keymap ein:header-line-tab-map 'ein:worksheet elem
'help-echo ein:header-line-tab-help 'keymap ein:header-line-tab-map
'mouse-face 'highlight 'help-echo ein:header-line-tab-help
'face 'ein:notification-tab-selected) 'mouse-face 'highlight
else 'face 'ein:notification-tab-selected)
collect (propertize else
(format "/%d\\" i) collect (propertize
'ein:worksheet elem (format "/%d\\" i)
'keymap ein:header-line-tab-map 'ein:worksheet elem
'help-echo ein:header-line-tab-help 'keymap ein:header-line-tab-map
'mouse-face 'highlight 'help-echo ein:header-line-tab-help
'face 'ein:notification-tab-normal))))) '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 ;;; 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-2] 'ein:header-line-delete-this-tab)
(define-key map [header-line mouse-3] 'ein:header-line-pop-to-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) (defmacro ein:with-destructuring-bind-key-event (key-event &rest body)
(declare (debug (form &rest form)) (declare (debug (form &rest form))
(indent 1)) (indent 1))
@ -312,6 +323,14 @@ Generated by `ein:header-line-define-mouse-commands'" slot)
ein:header-line-move-next-tab :move-next 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 () (defun ein:header-line ()
(format (format
"IP[%s]: %s" "IP[%s]: %s"