1

我在 Emacs 中使用 helm 和几个来源,想知道如何提取用户用 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)产生当前源的标记条目列表。如何获取所有来源的标记条目列表?

谢谢你的帮助,

高功率滤波器

4

1 回答 1

1

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

当然,只有当您的所有来源都包含相同形式的候选并且所有来源的默认操作都相同时,它才有意义。不过,似乎没有强制执行此要求。

问候,

高功率滤波器

于 2020-09-29T21:22:13.137 回答