2012-04-02 53 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