Download
(defconst evil-elscreen-version "0.1")
(eval-when-compile (require 'cl))
(require 'evil)
(require 'elscreen)
(evil-define-command evil-elscreen/tab-new (file)
"Open a new tab page and edit {file}, like with :edit.
If the {file} is nil, create a new tab page with *scratch* buffer, after the current tab page."
:repeat nil
(interactive "<f>")
(if file
(elscreen-find-file file)
(elscreen-create)))
(evil-define-command evil-elscreen/tab-find (file)
"Open a new tab page and edit {file} in 'path', like with :find. "
:repear nil
(interactive "<f>")
(if file
(elscreen-find-file file)
(message "Error: need argument")
))
(evil-define-command evil-elscreen/tab-close ()
"Close current tab page. However the buffer still alive."
:repeat nil
(interactive)
(elscreen-kill))
(evil-define-command evil-elscreen/tab-close-f ()
"Close current tab page. and also kill current buffer."
:repeat nil
(interactive)
(kill-buffer)
(elscreen-kill))
(evil-define-command evil-elscreen/tab-close-other ()
"Close all other tabpages. Do not kill other buffers"
:repeat nil
(interactive)
(elscreen-kill-others))
(evil-define-command evil-elscreen/tab-close-other-f ()
"Close all other tabpages and alos kill other buffers"
:repeat nil
(interactive)
(elscreen-kill-others)
(mapc 'kill-buffer (delq (current-buffer) (buffer-list))))
(evil-define-command evil-elscreen/tab-next (&optional count argument)
""
:repeat nil
(interactive "p")
(if elscreen-display-screen-number
(progn
(if (eq last-command #'evil-beginning-of-line-or-digit-argument)
(setq count 0))
(cond
(argument (elscreen-goto (string-to-number argument)))
(count (elscreen-goto count))
(t (elscreen-next))))
(cond
(argument (dotimes (dummy (string-to-number argument))
(elscreen-next)))
(count (dotimes (dummy count)
(elscreen-next)))
(t (elscreen-next)))))
(evil-define-command evil-elscreen/tab-previous (&optional count argument)
""
:repeat nil
(interactive "p")
(if elscreen-display-screen-number
(progn
(if (eq last-command #'evil-beginning-of-line-or-digit-argument)
(setq count 0))
(cond
(argument (elscreen-goto (string-to-number argument)))
(count (elscreen-goto count))
(t (elscreen-previous))))
(cond
(argument (dotimes (dummy (string-to-number argument))
(elscreen-previous)))
(count (dotimes (dummy count)
(elscreen-previous)))
(t (elscreen-previous)))))
(define-key evil-normal-state-map (kbd "gt") 'evil-elscreen/tab-next)
(define-key evil-normal-state-map (kbd "C-<next>") 'evil-elscreen/tab-next)
(define-key evil-normal-state-map (kbd "gT") 'evil-elscreen/tab-previous)
(define-key evil-normal-state-map (kbd "C-<prior>") 'evil-elscreen/tab-previous)
(define-key evil-insert-state-map (kbd "C-<next>") 'evil-elscreen/tab-next)
(define-key evil-insert-state-map (kbd "C-<prior>") 'evil-elscreen/tab-previous)
(define-key evil-motion-state-map (kbd "gt") 'evil-elscreen/tab-next)
(evil-ex-define-cmd "tabnew" 'evil-elscreen/tab-new)
(evil-ex-define-cmd "tabedit" "tabnew")
(evil-ex-define-cmd "tabe" "tabedit")
(evil-ex-define-cmd "tabfind" 'evil-elscreen/tab-find)
(evil-ex-define-cmd "tabf" "tabfind")
(evil-ex-define-cmd "tabclose" 'evil-elscreen/tab-close)
(evil-ex-define-cmd "tabc" "tabclose")
(evil-ex-define-cmd "tabclose!" 'evil-elscreen/tab-close-f)
(evil-ex-define-cmd "tabc!" "tabclose!")
(evil-ex-define-cmd "tabonly" 'evil-elscreen/tab-close-other)
(evil-ex-define-cmd "tabo" "tabonly")
(evil-ex-define-cmd "tabonly!" 'evil-elscreen/tab-close-other-f)
(evil-ex-define-cmd "tabo!" "tabonly!")
(evil-ex-define-cmd "tabnext" 'evil-elscreen/tab-next)
(evil-ex-define-cmd "tabn" "tabnext")
(evil-ex-define-cmd "tabprevious" 'evil-elscreen/tab-previous)
(evil-ex-define-cmd "tabp" "tabprevious")
(evil-ex-define-cmd "tabNext" "tabprevious")
(evil-ex-define-cmd "tabN" "tabprevious")
(provide 'evil-elscreen)