具有多个来源的Emacs掌舵

时间:2020-09-28 22:48:37

标签: emacs emacs-helm

我将Emacs的头盔用于多种来源,想知道如何提取用户用Ctrl + Space标记的所有条目的列表。例如,在您的*scratch*缓冲区中执行以下命令

(require 'helm)

(defun helm-test-action (candidate)
  "Test."
  (interactive)
  (message (concat "candidate = " (prin1-to-string candidate) 
                   "\n, helm-marked-candidates = " (prin1-to-string (helm-marked-candidates)))))

(defun helm-test-case ()
  "Test."
  (interactive)
  (helm :sources (list (helm-build-sync-source "First Source"
                        :candidates '("one" "two" "three")
                        :action #'helm-test-action)
                       (helm-build-sync-source "Second Source"
                        :candidates '("four" "five")
                        :action #'helm-test-action))))

然后是M-x helm-test-case

用Ctrl + Space标记时,说“一个”和“四个”,然后按Enter键,如何从动作中检索两个标记的条目?似乎candidate始终是光标所在的行,并且(helm-marked-candidates)产生 current 源的标记条目列表。如何获得所有来源中已标记条目的列表?

感谢您的帮助,

HPF

1 个答案:

答案 0 :(得分:0)

答案是使用(helm-marked-candidates :all-sources t)。这将返回所有已标记条目的列表,或者如果未标记,则返回当您按下Enter键时光标下方的条目。

当然,只有当您的所有来源都包含相同形式的候选者并且所有来源的默认操作都相同时,这才有意义。似乎该要求没有得到执行。

此致

HPF