今天早上新加了一个补丁 , 发布了 Snails 最新版本 6.0
按前缀来搜索不同的内容
Snails 6.0 的主要更新是支持像VSCode那样根据前缀来搜索不同的后端内容。
Snails启动后,默认在标签分组、缓存列表、最近访问文件、书签这些最高频的后端中进行搜索,以快速切换正在使用的文件
当输入中包含前缀 > 时,Snails搜索所有可以执行的命令
当输入中包含前缀 @ 时,Snails只在函数或变量定义中进行搜索,方便快速进行定义跳转
当输入中包含前缀 # 时,Snails使用 ripgrep 搜索当前文件的内容
当输入中包含前缀 ! 时,Snails使用 ripgrep 搜索当前项目里所有文件的内容
当输入中包含前缀 ? 时,Snails使用 fd、projectile、mdfind、everything 等后端进行全局文件名搜索,以快速找到并打开磁盘中的文件
这样设计的作用是,Snails默认只搜索打开的文件,符合99%的默认使用习惯,当用户需要特殊搜索,比如函数定义的时候,可以在输入的内容加上前缀 ,使得Snails只在用户指定的后端中进行定向搜索。
通过这样的设计,可以同时满足绝大多数用户的使用习惯,又不会因为默认加入太多的后端导致搜索信息过多的问题,最终提升用户的搜索效率。
自定义搜索后端
当然,如果你不喜欢前缀的方案,可以通过自定义后端列表的方式进行自定义搜索:
(snails '(snails-backend-buffer snails-backend-current-buffer))
比如按照上面的示例,Snails只会在缓存列表和当前文件内容这两个后端中进行搜索,并且忽略用户输入的任何前缀,这种自定义后端的搜索体验和Helm的体验保持一致。
如果你只自定义一种后端,搜索体验将和Ivy保持一致。
That’s all, enjoy!
17 个赞
committed 02:50PM - 26 Aug 19 UTC
这个补丁可以在命令后面显示快捷键,你搜索快捷键的时候,往往是你忘记快捷键的时候,多搜索几次命令,就记住按键了。
1 个赞
今天加了一个补丁 Make rg backend support customize search directory. · manateelazycat/snails@b99a6d2 · GitHub
现在 Snails的 snails-backend-rg 后端可以支持自定义目录了。
举个例子:
大部分时候我们只用搜索当前项目的文件内容,所以直接前缀 ! 加上你要搜索的内容就可以了
但是有时候偶尔想搜索一下 org 文件的笔记,可以输入 !keyword@/Users/andy/org 就可以在 /Users/andy/org 目录中搜索 keyword 了。
imenu 的搜索没有详细的上下文的? 只有一些 Functions, Section 这样的提示。
样本就是 snails-backend-imenu.el
emacs -Q对比测试一下,看看是不是你自己的配置有问题。
如果 emacs -Q 都有问题,请写下详细的重现步骤,我这边没法重现你说的问题。
m杠x imenu杠list 显示的是什么 你改过imenu的配置吗 还是别人替你改了 你不知道
1 个赞
emacs -Q 没问题,看来又是 doom 的问题。我仔细查了下,找到问题了, doom 偷偷给 emacs-lisp mode 加了一个 hook, 里面设置了 imenu-generic-expression 。去掉就好了。。。
系统:linux mint19
emacs:26.3
readme是不是少了点什么啊,我这样配置后一个选项都出不来:
(add-to-list 'load-path "~/src/emacs-packages/snails")
(require 'snails)
;;执行这个,弹出了snails窗口,但是一个选项都木有! M-x snails也是一样
(snails '(snails-backend-buffer snails-backend-recentf) t)
readme看了n遍都没看到有什么区别,翻了代码随便加了句
(require 'snails-backend-buffer)
然后snails才有了buffer列表,哦,原来还要require一下,不require也没给报错什么的。。。
然后我又加一句
(require 'snails-backend-recentf)
snails还是只显示buffer列表,而没有最近文件,recentf我确定是require了的,counsel-recentf都有列表。
然后,emacs -q启动,执行以下
(add-to-list 'load-path "~/src/emacs-packages/snails")
(require 'snails-backend-buffer)
(require 'snails-backend-directory-files)
(require 'snails)
(snails) ;; 已经打开了几个文件,snails又变成空了
是哪里姿势不对吗,还是说必须要安装rust和fuz.el才可以出列表??(正在安装中。。。)
上回在windows下,也是这样,snails是空的,就没用了,不知道是哪里不对。
以前还试过一个one-key的插件,也是不知道怎么个用法。。。
按键绑定这个命令 (snails '(snails-backend-buffer snails-backend-recentf) t)
不要在配置文件启动这个命令
安装了clang,编译了fuz的so,按文档复制并重命名so到fuz的el同目录下,
使用按键绑定snails,执行后,
f4报错:Symbol’s function definition is void: fuz-calc-score-skim
f5报错:Error running timer: (void-function fuz-calc-score-skim)
(add-to-list 'load-path "/home/owen/src/emacs-packages/snails")
(add-to-list 'load-path "/home/owen/src/emacs-packages/fuz") ;;fuz-core.so
(require 'snails)
(require 'fuz)
(global-set-key (kbd "<f4>") 'snails)
(global-set-key (kbd "<f5>") '(lambda ()
(interactive)
(snails '(snails-backend-buffer snails-backend-recentf) t)))
fuz要安装动态库,readme有写怎么装fuz得动态库
之前就是手动cargo build --release,得到的so,现在用(fuz-build-and-load-dymod)编译了,又安装了llvm,还是不行。
Debugger entered--Lisp error: (void-function fuz-calc-score-skim)
fuz-calc-score-skim("" "*Messages*")
#f(compiled-function (it) #<bytecode 0x232c365>)((#(" *Messages*" 0 1 (face (:family "FontAwesome" :height 1.2) font-lock-face (:family "FontAwesome" :height 1.2) display (raise -0.12) rear-nonsticky t)) "*Messages*"))
mapcar(#f(compiled-function (it) #<bytecode 0x232c365>) ((#(" *Messages*" 0 1 (face (:family "FontAwesome" :height 1.2) font-lock-face (:family "FontAwesome" :height 1.2) display (raise -0.12) rear-nonsticky t)) "*Messages*") (#(" *scratch*" 0 1 (face (:family "file-icons" :height 1.2 :inherit all-the-icons-orange) font-lock-face (:family "file-icons" :height 1.2 :inherit all-the-icons-orange) display (raise -0.12) rear-nonsticky t)) "*scratch*") (#(" test.el" 0 1 (face (:family "file-icons" :height 1.2 :inherit all-the-icons-dgreen) font-lock-face (:family "file-icons" :height 1.2 :inherit all-the-icons-dgreen) display (raise 0.0) rear-nonsticky t)) "test.el")))
snails-sort-candidates("" ((#(" test.el" 0 1 (face (:family "file-icons" :height 1.2 :inherit all-the-icons-dgreen) font-lock-face (:family "file-icons" :height 1.2 :inherit all-the-icons-dgreen) display (raise 0.0) rear-nonsticky t)) "test.el") (#(" *scratch*" 0 1 (face (:family "file-icons" :height 1.2 :inherit all-the-icons-orange) font-lock-face (:family "file-icons" :height 1.2 :inherit all-the-icons-orange) display (raise -0.12) rear-nonsticky t)) "*scratch*") (#(" *Messages*" 0 1 (face (:family "FontAwesome" :height 1.2) font-lock-face (:family "FontAwesome" :height 1.2) display (raise -0.12) rear-nonsticky t)) "*Messages*")) 1 1)
snails-backend-buffer-search("" 1 snails-update-callback)
snails-input-search("")
snails-search("")
snails()
funcall-interactively(snails)
call-interactively(snails nil nil)
command-execute(snails)
执行
(unless (require 'fuz-core nil t)
(fuz-build-and-load-dymod))
显示了
warning: custom registry support via the `registry.index` configuration is being removed, this functionality will not work in the future
Updating `https://mirrors.ustc.edu.cn/crates.io-index/` index
Compiling fuz v0.1.0 (/mnt/windows/space/home/msys/src/emacs-packages/fuz)
Finished release [optimized] target(s) in 14.71s
cireu
2019 年10 月 30 日 08:52
20
(fboundp 'module-load)
返回t吗