仅用于循环打开目录的函数

时间:2013-08-02 22:43:33

标签: emacs elisp

我想实现一个让我只通过打开的目录缓冲区循环的函数,并跳过文件或暂存缓冲区。 我该怎么做呢?

4 个答案:

答案 0 :(得分:1)

查看tabbar模式 - 您可以将组定义为您想要的任何内容(例如dired),并在具有tabbar-backward-grouptabbar-forward-group的组之间循环:

http://www.emacswiki.org/emacs/TabBarMode

tabbar-buffer-list-function可用于进一步定义是否显示(或隐藏)某些文件。

tabbar-buffer-groups是默认组,可以使用setq修改为您想要的任何内容。如果要创建其他分组方法,可以使用tabbar-buffer-groups-function

如果dired是一个群组,那么您可以使用(setq tabbar-cycle-scope 'tabs) tabbar-backwardtabbar-forward来切换这些缓冲区。

答案 1 :(得分:0)

如果您想要实施某些内容, 看看Buffer-menu-mode。它已经有了一个切换 T 仅显示文件。 然后,只需要了解它如何构建列表 并用

过滤它
(eq major-mode 'dired-mode)

奇怪的是665行的来源非常小。

答案 2 :(得分:0)

我使用缓冲区堆栈。

我编写了两个使用该包的不同函数:一个用于在dired缓冲区之间切换,另一个用于在相同模式的缓冲区之间切换。我强烈地使用它们。我就是这样做的:

;; For shorter keybindings
(defmacro command (&rest body)
  `(lambda ()
     (interactive)
     ,@body))

(defvar buffer-stack-mode)

(defun buffer-op-by-mode (op &optional mode)
  (let ((buffer-stack-filter 'buffer-stack-filter-by-mode)
        (buffer-stack-mode (or mode major-mode)))
    (funcall op)))

(defun buffer-stack-filter-by-mode (buffer)
  (with-current-buffer buffer
    (equal major-mode buffer-stack-mode)))

(global-set-key [(meta kp-7)]
                (command (buffer-op-by-mode 'buffer-stack-up)))
(global-set-key [(meta kp-9)]
                (command (buffer-op-by-mode 'buffer-stack-down)))
(global-set-key [(meta kp-3)]
                (command (buffer-op-by-mode 'buffer-stack-down 'dired-mode)))
(global-set-key [(meta kp-1)]
                (command (buffer-op-by-mode 'buffer-stack-up 'dired-mode)))

修改

我包含用于命令键绑定的宏

答案 3 :(得分:0)

Icicles 提供了几种方法。

  • 从Dired缓冲区开始,然后执行C-0 C-x b TAB

  • C-x b,然后C-x m +,然后输入dired-mode(使用完成),然后TAB

那些只为您提供Dired缓冲区作为可用候选项,然后您可以按名称进行匹配。 您可以使用箭头键(C-upC-down)在与输入匹配的缓冲区之间循环。使用RETC-g结束。

  • 前缀arg 0表示候选者是与当前缓冲区处于相同模式的缓冲区 - 因此是上面的第一个选项。

  • 完成后,C-x C-m +会提示您输入某个模式,然后过滤掉所有模式与您输入的模式不同或派生的候选人(在本例中为dired-mode) ---因此是上面的第二个选项。

C-x bIcicle模式绑定到icicle-buffer。如果要在不同窗口中打开缓冲区,请使用C-x 4 bicicle-buffer-other-window)。

有关详细信息,请参阅http://www.emacswiki.org/emacs/Icicles_-_Buffer-Name_Input