+emacs+编译xeft库
xeft
是一个以xapian为后端的全文搜索插件,和ripgrep的区别在于支持AND与OR的关键词搜索。
首先在Emacs中安装 xeft
包,然后开始编译库:
1. Windows
1.1. 安装依赖
根据你Emacs编译用的环境不同,选择不同的软件包。我用的ucrt自编译版本,所以这里选安装 mingw-w64-ucrt-x86_64-xapian-core
包:
pacman -S mingw-w64-ucrt-x86_64-xapian-core target=/d/cemacs cp /ucrt64/bin/*.dll $target/
然后手动复制粘贴 /d/cemacs
里的 libx265-215.dll
和 libxapian-30.dll
到 runemacs.exe
所在目录。
1.2. 编译dll
git clone https://github.moeyy.xyz/https://github.com/casouri/xeft.git --depth 1
cd xeft
make
然后将 xeft
文件夹内生成的 xapian-lite.dll
复制到Emacs的变量 package-user-dir
的 xeft-*
文件夹中。
2. MacOS
作者提供的预编译文件没有ARM架构的MacBook,需要自己编译。这里我用Homebrew安装的Emacs-plus@31。
2.1. 安装依赖
brew install xapian
2.2. 编译dylib
从命令行启动emacs,输入 -M-x xeft
进入xeft界面,会提示你没找到动态库。
输入 c
开始编译,然后在前缀界面输入 /opt/homebrew
,稍等片刻即可自动编译完成。
3. 其他配置
记得配置 xeft-directory
的路径,否则进入 xeft
界面之后默认会是一片空白。
如果想让 xeft
创建文件的功能与 org-roam
集成,可以参考这个方法:
(defun fap/ignore-errors-advice (orig-fun &rest args) (ignore-errors (apply orig-fun args))) (advice-add 'xeft-create-note :around #'fap/ignore-errors-advice) (setq xeft-filename-fn (lambda (search-phrase) (org-roam-capture- :node (org-roam-node-create :title search-phrase))))