你是用的emacs-plus吧?换成emacs-mac就好了
谢谢!已解决,还是 emacs-mac 和 Mac 结合的更好一点
(setq snails-path (expand-file-name ".local/straight/repos/snails" doom-emacs-dir))
(use-package! snails
:load-path snails-path
:init (add-hook 'snails-mode-hook (lambda () (evil-emacs-state)))
:commands snails)
这个应该能用。
网友 方圆 指出另外一种配置方式:
(use-package! snails
:config (evil-set-initial-state 'snails-mode 'emacs))
snails 的 ripgrep 后端不工作:
- snails-backend-rg 不在默认 snails-default-backends 里,但是 snails 界面显示有 “! RG”
- snails-backend-rg-filter-number 默认是 20,超过 20 就把整个结果丢弃了。。。
- snails-backend-rg.el 里 string-truncate-left 函数在 Emacs 27.1 里不存在,由于 snails-core.el 里 snails-create-async-process() 函数里面 ignore-error 掉了,所以不报告任何错误。。。
- 目前要自己加rg后端到启动列表,没有加所有后端。
- 只是一次显示20个最佳匹配,不是丢弃结果,主要为了提高实时性能。
- 这个github提一下issue吧
发了个补丁供参考。 最好还能再改进下,在按 ! 时自动加载 backend-rg。
但这个 backend 的可用性还是不如 +default/search-project-for-symbol-at-point,这个也是用 rg,但似乎没有限制最大条目数(也可能是默认限制比较大)。
另外那个 ignore errors 是不是往 Messages 里输出点东西比较好?
要用rg,可以用color-rg.el
感谢补丁已经合并
如果专业用 rg, 建议用 color-rg.el 没有任何限制, snails之所以用限制的原因是两个:
- 实时搜索,同时启动进程太多,不限制会影响性能
- 多个后端,不限制会影响性能
所以建议深度用rg,可以用我写的 color-rg.el
ignore-errors 本质是抑制中间搜索进程报错的问题,还没想到怎么抑制错误同时输出错误的方法,有时间研究下。
按!的时候自动加载 background 的想法感觉不错,我回头看看
Snails最新版增加了 candidate-insert 自定义函数。
当搜索后端提供 candidate-insert 函数,snails-candiate-insert 会调用后端的插入函数插入内容,如果后端没有提供 candidate-insert 函数,Snails会直接插入搜索出来的文本内容。
使用场景举例,JavaScript项目中经常会有一些重复的小片段需要到处粘贴复用,原来的Snails版本需要4个步骤:
- 启动Snails,输入 ! 搜索前缀,Snails会自动调用 rg 命令在文件所属的项目目录下进行全局搜索
- 搜索到内容后直接按快捷键 Ctrl + m 跳转到对应文件的位置
- 执行行拷贝操作
- 切换到当前文件,执行粘贴操作
最新版本Snails可以用下面的步骤来快速搜索插入:
- 启动Snails,输入 ! 搜索前缀,Snails会自动调用 rg 命令在文件所属的项目目录下进行全局搜索
- 搜索到内容后直接按快捷键 Ctrl + h 插入搜索的内容到当前文件中
新版的Snails避免了文件定位 -> 代码拷贝 -> 代码粘贴的重复步骤,大大减少了编程时的心智负担。
可以设置为不弹窗的模式,看一下readme
感谢懒猫大大解答,确实是自己粗心了,没有好好读readme,抱歉打扰大家时间了。
多敲几个字符试试呢?
试过了,还是出不来。。。很奇怪,从trace-function中看得到,敲四个字符之后就已经调用rg执行搜索了(上面的截图),但是就是没有回显 我鼓捣快一天了
可以发一个目录压缩包和重新步骤到github issue
今天配置了doom emacs + snails,不能用,有点问题?
- package.el
(package! snails :recipe (:host github :repo “manateelazycat/snails”)) - config.el
(use-package! snails)
M-x snails
提示如下错误
snails-search: Symbol’s function definition is void: string-replacesnails-search: Symbol’s function definition is void: string-replace
是不是还需要其他配置?
(with-eval-after-load "snails"
(fset 'string-replace 'replace-regexp-in-string))
先这样hack一下吧,我也遇到了。你可以到github提个issue?