Emacs helm:向helm-mini添加新源

4

Helm内置了helm-mini命令,其中包括buffersrecentf作为其源。

(setq helm-source-buffers-list
      (helm-make-source "Buffers" 'helm-source-buffers)))
(helm :sources helm-mini-default-sources
      :buffer "*helm mini*"
      :truncate-lines t)

还有一个名为helm recent dirs的包,提供了针对recentd的helm接口。它使用'(helm-source-dired-recent-dirs)作为数据源。

我正在尝试将这两个功能结合起来,所以我在helm-mini中添加了这个功能。

(append helm-mini-default-sources '(helm-source-dired-recent-dirs))

但是它不起作用。我有什么遗漏吗?
1个回答

5
append形式不会改变helm-mini-default-sources的值,因此M-x helm-mini无法工作。 您可以将setqappend组合使用,或者只使用add-to-list:
(setq helm-mini-default-sources
      (append helm-mini-default-sources'(helm-source-dired-recent-dirs)))
;; or
(add-to-list 'helm-mini-default-sources 'helm-source-dired-recent-dirs 'append)

但更灵活的方法是仅使用普通的 setq,因为您可以选择源和它们的顺序:

(setq helm-mini-default-sources '(helm-source-buffers-list
                                  helm-source-dired-recent-dirs
                                  helm-source-recentf
                                  helm-source-buffer-not-found))

无需编写自己的 helm-mini 函数,使用内置函数即可。


1
最初,如果 helm-source-dired-recent-dirs 为空,则 helm-mini 会抛出错误吗? - Chillar Anand
2
在使用helm-mini之前,使用(require 'helm-dired-recent-dirs)引入变量helm-source-dired-recent-dirs,你应该将其添加到你的Emacs配置中。 - xuchunyang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接