2012-04-02 57 views
0

我用下面的代码,打开ANSI长期缓冲区的列表。我发现这个hereEmacs和ANSI-项:elisp的遍历

(require 'term) 
(defun visit-ansi-term() 
    "If the current buffer is: 
    1) a running ansi-term named *ansi-term*, rename it. 
    2) a stopped ansi-term, kill it and create a new one. 
    3) a non ansi-term, go to an already running ansi-term 
     or start a new one while killing a defunt one" 
    (interactive) 
    (let ((is-term (string= "term-mode" major-mode)) 
     (is-running (term-check-proc (buffer-name))) 
     (term-cmd "/usr/local/bin/bash") 
     (anon-term (get-buffer "*ansi-term*"))) 
    (if is-term 
     (if is-running 
      (if (string= "*ansi-term*" (buffer-name)) 
       (call-interactively 'rename-buffer) 
       (if anon-term 
        (switch-to-buffer "*ansi-term*") 
       (ansi-term term-cmd))) 
      (kill-buffer (buffer-name)) 
      (ansi-term term-cmd)) 
     (if anon-term 
      (if (term-check-proc "*ansi-term*") 
       (switch-to-buffer "*ansi-term*") 
      (kill-buffer "*ansi-term*") 
      (ansi-term term-cmd)) 
     (ansi-term term-cmd))))) 

(global-set-key (kbd "<f2>") 'visit-ansi-term)

现在我想修改此,使得重命名缓冲区后它会记住它的名字,当我使用键盘快捷键通过更名缓存列表进行迭代。

所以如果我按[F2],并发现ANSI-长期运行时,它问我,如果我想将其重命名。我将它重命名为BUILD。我想要一个函数并绑定到Say [F3]来遍历打开的ansi-terms列表。

我是一个elisp的文盲。会很高兴有人指出这可能会帮助我做到这一点。

谢谢。

回答

3

通过其主要模式是term-mode所有缓冲区下面的代码/装订周期:

(global-set-key (kbd "<f3>") 'cycle-ansi-term) 
(defun cycle-ansi-term() 
    "cycle through buffers whose major mode is term-mode" 
    (interactive) 
    (when (string= "term-mode" major-mode) 
    (bury-buffer)) 
    (let ((buffers (cdr (buffer-list)))) 
    (while buffers 
     (when (with-current-buffer (car buffers) (string= "term-mode" major-mode)) 
     (switch-to-buffer (car buffers)) 
     (setq buffers nil)) 
     (setq buffers (cdr buffers))))) 
+0

@Tery杰克逊:谢谢,正是我一直在寻找。 – asp5 2012-04-02 23:44:43

+0

@Tery Jackson:嗨,当我第一次尝试这个时,我尝试了只有两个术语,它可以很好地工作......但是用这样的多个术语:。 *另外20项:焦炭运行 *等20个期限:焦炭运行 *约有19期限:CHAR运行这个循环遍历只有最近打开的缓冲区的2 ...我如何删除这个限制?谢谢。 – asp5 2012-04-03 22:38:52

+0

@ ASP5固定.... – 2012-04-03 23:39:40