UP | HOME

+emacs+编译xeft库

[2024-12-25 周三 22:00]

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.dlllibxapian-30.dllrunemacs.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-dirxeft-* 文件夹中。

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))))

▲ 编辑于 [2024-12-31 周二 15:31] | © Published by Emacs 31.0.50 (Org mode 9.7.18) on [2025-01-02 周四 15:00] | RSS