ivy-occur (C-c C-o) 为什么导出的不是 ivy--all-candidates?

ivy 的二次过滤功能我觉得非常有用. counsel-grep 和 counsel-rg 我都用得非常多. 它们可以多次过滤,但 ivy-occur 导出的不是最后一次 counsel 的 candiates (保存在 ivy–all-candidates) 中, 而是最开始没过滤过的内容. 我就想知道, 为什么 ivy-occur 为什么导出的不是 ivy–all-candidates? 同理还有 ivy-resume, 同样不会使用最后一次过滤的结果. 有没有哪个命令使用的是 ivy-all-candidates?

补充: counsel-etags-find-tag 在多次过滤后, ivy-last 也是初始内容, 而不是多次过滤后的 candidates,但 ivy-occur 导出的行为就是多次过滤后的结果, 而 counsel-rg 和 counsel-grep 就不行, 这是为什么?

可能实现不一样吧, counsel-etags-tag-occur-api中有(cands (ivy--filter ivy-text items)).

items存储调用命令行程序获得的候选项. 注意我命令行只调用一次, 后续二次过滤用lisp实现,用户输入的二次过滤关键字存储在ivy-text中.

1 个赞