欢迎试用 blink-search
blink-search 的设计:
像 lsp-bridge 那样混合不同的后端,而不是 helm 那样后端堆叠, 提高切换不同后端的效率
像 helm 那样, 在左边混合多个搜索源, 一个按键搜索全部
像 ivy 那样针对 rg、find 的情况,在右边列出当前后端所有匹配项, 方便边搜边看的情形
像 vertico 那样对通用的 read-completion 接口提供支持, 这样很多地方即使插件没有提供搜索界面, 都会统一模糊搜索 (规划中, 未来实现)
像 helm/ivy 那样针对模糊匹配的地方, 进行精致的匹配高亮
模糊算法和精确高亮匹配在 python 做, Emacs只做渲染和命令执行, 这样性能会提高到极致 (helm,ivy都会遇到返回结构太多触发 GC 导致Emacs卡顿)
目前已经支持 Buffer List、Find File、Recent File、EAF Browser History、Current Buffer、Grep File、Elisp Symbol、Google Suggest等搜索后端,每个搜索后端都运行在Python线程中, 同时, 不管搜索有多少结果(比如几万条), Emacs都只渲染可视区域内的选项。
从实测结果看, blink-search 具备 helm 的能力, 同时搜索和选择性能比 ivy 还快。
目前架构设计和性能已经达到预期, 还有很多小细节需要完善, 开发完成以后, snails 将不再维护。
欢迎大家试用, 反馈, 提交PR。
33 个赞
文档可能需要注明赖 requests
Traceback (most recent call last):
File "/home/xinyifly/.config/emacs/site-lisp/blink-search/blink_search.py", line 34, in <module>
from backend.search_google_suggestion import SearchGoogleSuggestion
File "/home/xinyifly/.config/emacs/site-lisp/blink-search/backend/search_google_suggestion.py", line 23, in <module>
import requests
ModuleNotFoundError: No module named 'requests'
Snails 里面80%我感兴趣的功能已经被 blink-search 实现了, 我已经完全切换到 blink-search 了, 速度快的我心情都变好了。
3 个赞
还在用着 color-rg呢,又有新东西了。大佬牛啊
color-rg 非常适合代码重构的场景, 整个设计更加固定, 方便批量操作, ivy/helm/blink-search 这种增量式的 rg 过滤其实适合探索代码, 因为太不稳定了, 没有 color-rg 重构那么有生产力。
我平常两个都用, blink-search 是因为 lsp-bridge 启发, 可以做到性能最快的搜索框架。
2 个赞
我实现了一个 common directory 的搜索后端, 可以对常用目录快速搜索来打开子目录, 比如打开 HOME 下或者 projects 目录下的子目录
1 个赞
ripgrep 这个工具还是很强大, 直接可以输出 json 格式, 做搜索匹配就很简单了。
pomelo
2022 年11 月 3 日 10:02
14
大佬请问一下,我在windows试用了 blink-search,在执行blink-search-do的时候直接跳转到了相应的文件,没有出现您上面回复中截图里那种文本匹配的效果。使用emacs -Q 进行排查结果一样,想请问一下这是我这边python配置的问题吗?
pomelo
2022 年11 月 3 日 11:26
19
请问一下 acm-enable-icons 这个变量是其他包定义的吗?本地找不到这个变量的定义,现在运行blink-search的时候不显示信息了。
哈哈哈, icon代码是从 lsp-bridge 拷贝出来的, 已经修复了。