term cycling
This commit is contained in:
parent
5c7bd61668
commit
12ed7dd08b
@ -675,13 +675,27 @@ buffer is not visiting a file."
|
|||||||
(term-set-escape-char ?\C-x)))
|
(term-set-escape-char ?\C-x)))
|
||||||
buffer))
|
buffer))
|
||||||
|
|
||||||
(defun imalison:term-buffer (directory)
|
(defun imalison:term-get-next-buffer-index (buffers &optional delta)
|
||||||
|
(unless delta (setq delta 1))
|
||||||
|
(let* ((the-current-buffer (current-buffer))
|
||||||
|
(current-index (--find-index (eq it the-current-buffer) buffers)))
|
||||||
|
(if current-index (mod (+ current-index delta) (length buffers)) 0)))
|
||||||
|
|
||||||
|
(defun imalison:term-purge-dead-buffers (directory-symbol)
|
||||||
|
(cl-loop for buffer in (im-index-get imalison:buffer-index directory-symbol)
|
||||||
|
when (not (buffer-live-p buffer)) do
|
||||||
|
(im-delete imalison:buffer-index buffer)))
|
||||||
|
|
||||||
|
(defun imalison:term-buffer (&optional directory delta)
|
||||||
|
(interactive)
|
||||||
|
(unless directory (setq directory default-directory))
|
||||||
(let* ((directory-symbol (imalison:term-sym directory))
|
(let* ((directory-symbol (imalison:term-sym directory))
|
||||||
(buffer (im-index-get-one imalison:buffer-index directory-symbol)))
|
(buffers (progn
|
||||||
(while (and buffer (not (buffer-live-p buffer)))
|
(imalison:term-purge-dead-buffers directory-symbol)
|
||||||
(im-delete imalison:buffer-index buffer)
|
(im-index-get imalison:buffer-index directory-symbol)))
|
||||||
(setq buffer (im-index-get-one imalison:buffer-index directory-symbol)))
|
(next-buffer-index (imalison:term-get-next-buffer-index buffers delta)))
|
||||||
(or buffer (imalison:build-term directory))))
|
(if buffers (nth next-buffer-index buffers)
|
||||||
|
(imalison:build-term directory))))
|
||||||
|
|
||||||
(defun imalison:projectile-term ()
|
(defun imalison:projectile-term ()
|
||||||
(interactive)
|
(interactive)
|
||||||
@ -695,6 +709,20 @@ buffer is not visiting a file."
|
|||||||
(interactive)
|
(interactive)
|
||||||
(switch-to-buffer (imalison:build-term default-directory)))
|
(switch-to-buffer (imalison:build-term default-directory)))
|
||||||
|
|
||||||
|
(defun imalison:term-delta (&optional delta)
|
||||||
|
(interactive)
|
||||||
|
(switch-to-buffer (imalison:term-buffer nil delta)))
|
||||||
|
|
||||||
|
(defun imalison:term-previous ()
|
||||||
|
(interactive)
|
||||||
|
(imalison:term-delta -1))
|
||||||
|
|
||||||
|
(defhydra imalison:term-hydra (global-map "C-c 7")
|
||||||
|
"term"
|
||||||
|
("n" imalison:term-delta)
|
||||||
|
("p" imalison:term-previous)
|
||||||
|
("f" imalison:force-new-term))
|
||||||
|
|
||||||
(imalison:prefix-alternatives imalison:term imalison:projectile-term
|
(imalison:prefix-alternatives imalison:term imalison:projectile-term
|
||||||
imalison:dir-term imalison:force-new-term))
|
imalison:dir-term imalison:force-new-term))
|
||||||
:config
|
:config
|
||||||
@ -2420,7 +2448,6 @@ items follow a style that is consistent with other prog-modes."
|
|||||||
(bind-key "M-|" 'imalison:shell-command-on-region)
|
(bind-key "M-|" 'imalison:shell-command-on-region)
|
||||||
(bind-key "C--" 'undo)
|
(bind-key "C--" 'undo)
|
||||||
(bind-key "C-c 8" 'imalison:term)
|
(bind-key "C-c 8" 'imalison:term)
|
||||||
(bind-key "C-c 7" 'imalison:force-new-term)
|
|
||||||
(bind-key "C-x 9" 'previous-buffer)
|
(bind-key "C-x 9" 'previous-buffer)
|
||||||
(bind-key "s-v" 'clipboard-yank)
|
(bind-key "s-v" 'clipboard-yank)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user