Skip to content

Instantly share code, notes, and snippets.

@ROCKTAKEY
Created September 5, 2020 06:03
Show Gist options
  • Save ROCKTAKEY/20b6ff0489c40d0b82dbe086550e0a1c to your computer and use it in GitHub Desktop.
Save ROCKTAKEY/20b6ff0489c40d0b82dbe086550e0a1c to your computer and use it in GitHub Desktop.
Get tab text of elscreen.
(defun my:elscreen-text ()
""
(let ((screen-list (sort (elscreen-get-screen-list) '<))
(screen-to-name-alist (elscreen-get-screen-to-name-alist))
(current-screen (elscreen-get-current-screen))
(half-space (propertize
" "
'display '(space :width 0.5)))
(tab-separator (propertize
" "
'face 'elscreen-tab-background-face
'display '(space :width 0.5)))
(control-tab (propertize
"<->"
'face 'elscreen-tab-control-face
'local-map (elscreen-tab-create-keymap
'mouse-1 'elscreen-previous
'mouse-2 'elscreen-create
'mouse-3 'elscreen-next)
'help-echo "mouse-1: previous screen, mouse-2: create new screen, mouse-3: next screen")))
(with-current-buffer (window-buffer (frame-first-window))
(kill-local-variable 'elscreen-tab-format)
(when elscreen-tab-display-control
(setq elscreen-tab-format
(nconc
elscreen-tab-format
(list
control-tab
tab-separator))))
(mapc
(lambda (screen)
(let ((kill-screen
(propertize
"[X]"
'local-map (elscreen-tab-create-keymap
'mouse-1 `(lambda (e)
(interactive "e")
(elscreen-kill ,screen))
'M-mouse-1 `(lambda (e)
(interactive "e")
(elscreen-kill-screen-and-buffers ,screen)))
'help-echo (format "mouse-1: kill screen %d, M-mouse-1: kill screen %d and buffers on it" screen screen))))
(setq elscreen-tab-format
(nconc
elscreen-tab-format
(list
(propertize
(concat
(when (or (eq elscreen-tab-display-kill-screen 'left)
(eq elscreen-tab-display-kill-screen t))
kill-screen)
half-space
(propertize
(format "%d%s%s%s"
screen
(elscreen-status-label screen)
half-space
(elscreen-tab-escape-%
(elscreen-truncate-screen-name
(assoc-default screen screen-to-name-alist)
(elscreen-tab-width) t)))
'help-echo (assoc-default screen screen-to-name-alist)
'local-map (elscreen-tab-create-keymap
'mouse-1 `(lambda (e)
(interactive "e")
(elscreen-goto ,screen))))
(when (eq elscreen-tab-display-kill-screen 'right)
(concat half-space kill-screen)))
'face (if (eq current-screen screen)
'elscreen-tab-current-screen-face
'elscreen-tab-other-screen-face))
tab-separator)))))
screen-list)
(setq elscreen-tab-format
(nconc
elscreen-tab-format
(list
(propertize
(make-string (window-width) ?\ )
'face 'elscreen-tab-background-face
'local-map (elscreen-tab-create-keymap)))))
(format-mode-line elscreen-tab-format)))
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment