有没有办法把 consult 的结果导出为一个 list?

动机是 https://emacs-china.org/t/spacemacs/24268/7的第二个需求.

还是在一个Project里面,我先搜索某些文件,比如CMakeLists.txt ,那么会搜索出来这个项目里面所有的CMakeLists.txt 文件,这个用 Spc p f 可以做到。那么现在我能够 以所有的搜索结果为范围,在这个范围里面继续搜索某个内容,比如 add_library

我想如果能直接能得到 consult 的结果为一个 list 那应该就很容易实现, 我想还是要借助于 embark 的 collect buffer 或者 export buffer, 怎么能把这些的 buffer 的结果导出为一个 list?

比如这是一个 export buffer, 是一些文件名, 我怎么得到 ("emacs.org" "spacemacs.org") 这样一个 list 呢? image

$ emacsq.sh -P cl-lib,ivy --eval "\
(progn
  (global-set-key (kbd \"C-c r\") 'counsel-rg)
  (defun counsel-rg-search-in-result (_)
    (ivy-read \"Search in result: \"
              (cl-copy-list ivy--all-candidates)
              :action #'counsel-grep-action))
  (ivy-add-actions 'counsel-rg '((\"s\" counsel-rg-search-in-result \"Search In result\"))))" -nw

Steps:

  1. 运行上面的最小配置(:point_right:t2: emacsq.sh
  2. C-c r 开始搜索
  3. 输入关键字
  4. M-o 切换到 action 菜单界面
  5. s 执行 Search in result

你实现的功能是不是 ivy 自带的 ivy-restrict-to-matches

不知道是不是,我平时不用 ivy。