這裏是我的問題: 我使用Emacs,並得到大量的緩衝區是沒什麼用的時候,比如*郵件*或*完井*。殺死緩衝區的名字開始與一個特定的字符串
欲\ C-Y結合以關閉,與開始的所有緩衝區*除了*殼*(和* *殼< K>)緩衝器。
爲了做到這一點,我想補充一些的Emacs Lisp的在我的.emacs文件:
(defun string-prefix s1 s2
(if (> (string-length s1) (string-length s2)) nil
(string=? s1 (substring s2 0 (string-length s1)))))
(defun curry2
(lambda (f)
(lambda (x)
(lambda (y)
(f x y)))))
(defun filter
(lambda (f l)
(if (null? l) '()
(let ((rest (cdr l)))
(if (f (car l)) (cons (car l) rest)
rest)))))
(defun kill-useless (arg)
(interactive "p")
(map 'kill-buffer
(filter
(not ((curry2 string-prefix) "*shell*"))
(list-buffers)
)))
(global-set-key "\C-y" 'kill-useless)
我使用計劃和filter
似乎非常簡單已經測試string-prefix
和curry2
。 可悲的是我不能讓kill-useless
正常工作。
它說filter: Invalid function: (curry2 string-prefix)
。現在
,事情是我種吮吸的Emacs Lisp的,我真的不使用任何的Lisp除了計劃和方案(MIT),這個工程:
(filter ((curry2 string-prefix?) "*shell") '("*shell*" "*sh22" "eel"))
;Value 5: ("*shell*")
我想:
- 辦法解決我的代碼上如何做到這一點以不同的方式
感謝
開頭的'*郵件*'緩衝區是有用的:每次Emacs的告訴你,它讓它在那裏,所以你可以例如複製並粘貼到谷歌找到一個解決方案在谷歌。還要當心,當你可能會使用某種模式(如magit)來以一種有用的方式使用這樣的緩衝區。 – 2011-02-24 09:59:39
是的,我最終還是保留了這個緩衝區。謝謝你的提示! – 2011-02-24 18:30:28