Org-roam(v2) 以及 org-roam-ui 的使用姿势(已支持Emacs 29 内置的 sqlite)

我的配置就一行,简单的打开consult-org-roam-mode,它就会自动激活预览,别的也没配置什么……

请问这句话的含义是 Emacs 29 已经不需要依赖系统的 sqlite 了吗?

我在安装 emacsql-sqlite-builtin 发现它似乎找不到内置的 sqlite, 依然需要手动安装. 比如:

(use-package emacsql-sqlite-builtin
  :init
  (require 'emacsql)
  (require 'emacsql-sqlite))

;; Error (use-package): emacsql-sqlite-builtin/:init: Cannot open load file: No such file or directory, emacsql

依然需要手动安装 emacs-sqlemacsql-sqlite 二者, 如

(use-package emacsql-sqlite-builtin
  :init
  (use-package emacsql)
  (use-package emacsql-sqlite))

就没有任何报错. 但这样似乎显得多余.

P.S.

emacs-version:

GNU Emacs 29.0.50 (build 1, aarch64-apple-darwin22.1.0, NS appkit-2282.14 Version 13.0 (Build 22A5342f)) of 2022-09-20

OS: macOS; 安装方式:

brew install emacs-plus@29 --with-native-comp

我的理解是 Emacs 29 内置了对 sqlite3的绑定,不需要通过动态模块来实现对 sqlite3的支持。 你系统中还是要安装 sqlite3 这个程序的。

按理说你只要安装好 emacsql-sqlite-builtin以及他的相关依赖就可以了,你是用过什么方式安装包?(比如:package.el, straight.el, Borg)

用 package.el 通过 melpa 安装的话,这样应该就可以了:

(use-package emacsql-sqlite-builtin :ensure t)
1 个赞

使用的是 straight.el. 非常感谢, 这个提醒了我, 目前问题已经解决. 原因大致是 emacsql 和 emacsql-sqlite 这两个包应该隶属于 org-roam, 而按照 straight.el 的逻辑, 这两个包在加载 org-roam 前都不能被调用. 于是把 (use-package emacsql-sqlite-builtin) 这一行放在 (use-package org-roam) 后面加载就没有出错了.

在 emacs 29 刚安装了 emacsql-sqlite-builtin 然后设置 (setq org-roam-database-connector 'sqlite-builtin) ,load org-roam 报错如下

Lisp error: (invalid-slot-type emacsql-sqlite-builtin-connection process process #<sqlite db=0x... name=/path/to/roam-db.db>)

单独使用 (emacsql-sqlite-builtin "/path/to/roam-db.db") 试了一下报同样的错误。emacsql emacsql-sqlite emacsql-sqlite-builtin都安装的melpa最新的版本。

网上搜了一下没有搜到,有碰到同样问题的吗?

目前 emacsql 的维护者正在准备把 emacsql-sqlite-builtin 合并到 emacsql 中。我用的还是原来的版本,没问题。可能是新版本引入的问题。

melpa 的emacsql-sqlite-builtin是从这个分支拉的: https://github.com/magit/emacsql/tree/next

最近有一个 fixup,也许可以解决你的问题。

谢谢,原来是这样。

我刚看了一下,用的已经是最新的了,等稳定些再看吧。

@sdycjsj emacsql-sqlite-builtin 已经合并到 emacsql了,以后不用单独安装 emacsql-sqlite-builtin 了。

我已经换过来了,没问题。

1 个赞

你是用的自带包管理还是其他?我更新了 melpa 上面的 emacsql 和 emacsql-sqlite,里面都没有 emacsql-sqlite-builtin,还是要单独安装?

melpa 上面已经更新了

我用的是 magit 作者开发的 Borg 包管理器,直接从 emacsql 安装的。MELPA 更新有点慢的。

谢谢!已用上,问题也已解决。

如果使用 melpa 安装 emacsql,还是要单独安装 emacsql-sqlite-builtin,因为它在melpa 上是单独分发的。

如果直接使用 github 从 emacsql 的源码仓库安装就不需要单独安装 emacsql-sqlite-builtin。 比如我使用的是 Borg 安装就不需要。

我是Mac电脑。emacs plus 升级到29之后,也遇到了 emacsql 相关问题。汇总一下这个关于 Emacs 29,org-roam-database-connector 的问题。

C-h org-roam-database-connector 我们可以得到以下信息:

  1. Emacs 29 版本,推荐的 connector是 sqlite-builtin
  2. Emacs 29以下,推荐的 connector是 sqlite-module

就像 @ aqua0210 所说的 emacsql-sqlite-builtin 已经合并到 emacsql,无需再额外安装。如果你尝试安装 emacsql-sqlite-builtin 会失败,因为它的github仓库已经404(见 MELPA)。

我是使用 use-package管理package。请注意 : use-pakcage下载下来的 emacsql 不是最新的,会缺少 emacsql-sqlite-builtin.el 等文件。所以我采用以下步骤来解决问题

  1. M-x staight-pull-package, 输入emacsql, 将包含 emacsql-sqlite-builtin.el 等最新的文件更新下来(staight/repo/emacsql文件夹)
  2. M-x straight-rebuild-package, 输入emacsql。build到 straight/build/emacsql文件夹。 但是请注意 build 文件夹下还是会缺少 缺少 emacsql-sqlite-builtin.el 等文件
  3. 我将 staight/repo/emacsql下所有el文件拷贝到 straight/build/emacsql下。

经历了以上三个步骤,Org-roam 现在可以正常使用。不过只能作为临时方案。如果论坛里的人们有更好的解决办法,欢迎留言告知一下。

1 个赞

请问,Org 文件里写上了多个标签,为什么 org ui 的 web 页面上只显示了一个?

org 文件:

:PROPERTIES:
:ID:       ee27e65a-5686-4833-9736-3c5c3baeea0d
:END:
#+title: 标签测试
#+filetags: :标签2:标签1:

最近正好在发愁所有的org file都加进去会比较慢,就看到这个帖子了,正好来学习一下!

在mac最新的emacsql-20240903.1144 已经包含了emacsql-sqlite-builtin.el但是在打开org-roam 文件时还是会出现File mode specification error: (error Selecting deleted buffer) ? org-9.7.10, org-roam-20240715.1750, [email protected]

兄弟你这个问题解决了没,我也有和你一样的情况。

哦,微信群里大佬帮忙解决了。

    (setq org-roam-database-connector 'sqlite)

什么还有微信群。求拉