UP | HOME

▼ 本文更新于 [2025-04-21 周一 11:46]

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

然后手动复制粘贴 /ucrt64/bin/ 里的 libxapian-30.dllrunemacs.exe 所在目录

[2025-02-14 周五 09:34]: 注意,通过解压 .msix 方式安装kiennq的Emacs编译版本,会出现解压时的文件名错误,需要手动将解压出的 /bin 路径下所有 %2B 重命名为 +

1.1.1. 手动编译最新xapian

[2025-04-21 周一 11:19]

找到xapian的PKGBUILD文件,下载到msys64的 /home/USRNAME/xapian 中。

手动编辑 PKGBUILD 以下部分:

# 最新版本号为1.4.29
pkgver=1.4.29

# 略去sha256检查
sha256sums=('SKIP'
            'SKIP'
            'SKIP')

运行 pacman -S base-devel mingw-w64-ucrt-x86_64-autotools 安装依赖。这里我用的ucrt64版本emacs所以上面安装的ucrt64。

然后要略去公钥检查,运行 makepkg --skippgpcheck 创建本地安装包。

运行 pacman -U *.pkg.tar.zst 安装。

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

[2025-03-29 周六 09:26]: 如果不想因为 xeft 版本更新而重新编译的话,可以如下操作:

新建一个存放编译好成品文件的路径,这里用的 ~/.emacs.d/bin 。然后添加 load-path

(add-to-list 'load-path "~/.emacs.d/bin")

最后将之前编译的 xapian xeft 相关文件(xapian-lite.dll/xapian-lite.dylib/libxapian-30.dll等)移动至上述目录。

© Published by Emacs 31.0.50 (Org mode 9.8-pre) | RSS 评论