谢谢反馈,但是,暂时看不出问题,目测可能解析SQL结果方面还是有Bug,能运行一下:
(calibredb-candidate "2")
,然后给我看看结果吗?
@stardiviner
对了,你好像还是 Master 分支,你要切换 Develop 分支,之前我改了一些东西,Master 分支没有及时更新,因为又要审核Melpa,所以我最近的更新都在 Develop 分支,等 Melpa 上了之后,我才合并到 Master里面。
我切换到 develop branch 了。 配置如下:
(use-package calibredb
:quelpa (calibredb :fetcher github :repo "chenyanming/calibredb.el" :branch "develop")
:defer t
:commands (calibredb-dispatch calibredb-list)
:custom ((calibredb-root-dir (expand-file-name "~/Calibre Library"))))
运行结果:
Debugger entered--Lisp error: (wrong-number-of-arguments (0 . 0) 1)
calibredb-candidates("2")
eval((calibredb-candidates "2") t)
eval-expression((calibredb-candidates "2") nil nil 127)
funcall-interactively(eval-expression (calibredb-candidates "2") nil nil 127)
call-interactively(eval-expression nil nil)
command-execute(eval-expression)
我看了源代码,然后尝试 (calibredb-candidates)
还是一样的报错。应该是解析的问题。就像我上面截图里那个,line
变量的值是有的,但是edebug下一步就报错了。
由于现在 Melpa
审核通过了,我继续用 master
分支开发了,master
最新Commit
应该修复了这个问题,我不再用 \n
作为SQL换行,改成 \2
了。
更新测试了, (calibredb-candidates)
返回的是 nil
.
感谢测试,但是我没有data复现不了,能把你的metadata.db发给我吗?或者如果太多的话,你可以新建一个新的metadata.db然后只放id 等于 2的书。。看你的图,好像就是id 等于2的有问题。
可以用以下配置吗?calibredb-db-dir
如果不配置的话,也有可能用了默认的值,导致读取不了数据库。
(require 'calibredb)
(setq sql-sqlite-program "/usr/bin/sqlite3")
(setq calibredb-root-dir "~/OneDrive/Doc/Calibre")
(setq calibredb-db-dir (expand-file-name "metadata.db" calibredb-root-dir))
(setq calibredb-program "/Applications/calibre.app/Contents/MacOS/calibredb")
(setq calibredb-library-alist '(("~/OneDrive/Doc/Calibre")
("/Users/damonchan/Documents/Books Library")
("/Users/damonchan/Documents/HELLO")
("/Users/damonchan/Documents/Books")
("/Users/damonchan/Documents/World")))
我的配置如下,我上面也贴过的。
(use-package calibredb
:quelpa ((calibredb :fetcher github :repo "chenyanming/calibredb.el") :upgrade t)
:defer t
:commands (calibredb-dispatch calibredb-list)
:custom ((calibredb-root-dir (expand-file-name "~/Calibre Library"))))
我上传了 metadata.db
https://send.firefox.com/download/b439d2834a2e1105/#hvr9zR-LVgP58M5P6uLHvQ
能贴你之前发的图的那本书的数据库吗?
另外不是 (calibredb-candidates "2")
而是 (calibredb-candidate "2")
,没有s的。
我给你看一下我这边的调试过程和结果。(录了以下视频,比较方便你看)
https://send.firefox.com/download/4a0d6026655aec33/#4QUnx47hh0pmmtaIp_gAYA
歪个楼,好奇下,你用的这个firefox 很溜啊。有什么相关推荐介绍么?
我在 emacs -q
上测试,也是一样的问题。难道和系统平台有关系?我看你是macOS,而我这边是 Arch Linux
谢谢,但是,链接过期了,可以再发一次吗?
我用 ubuntu 16.04 spacemcs 下测试了,也没有问题。你是一本书都显示不了吗?你可以尝试只安装 calibredb
,不添加任何配置项,然后 (require 'calibredb)
,最后使用 calibredb-switch-library
选择 library 吗?我在 Ubuntu 上,是可以的。
是的,我开发在 macOS 上。
可以的,我想不到这些人都去点了。。。。这个firefox send 有次数限制和时间限制的。我再发一次传到百度网盘吧
链接: https://pan.baidu.com/s/12BuCHxpcl37e4_GRa5y-pw 提取码: x4w7
录制了一个 emacs -q
的视频。
链接: https://pan.baidu.com/s/1J7tIHvR8lOOkib3sZ2mM-g 提取码: v749 复制这段内容后打开百度网盘手机App,操作更方便哦
谢谢你的视频,拍得很好,我看到问题了。我看了你的图片和视频发现,你系统的字符^A
无法打印出来,但是 ^B
是可以打印出来的,请看下面的图(我在docker上跑arch linux,也是正常的),因为sqlite3
要靠字符\1
也就是^A
来代替了原本的|
作为表格的separator
,而\2
则用来做 newline
。因为找不到\1
,所以 SQL 返回的字符串解析不了,返回nil
。我不太清楚为什么你的emacs打印不了\1
,但是,我现在默认用\3
作为seperator
,而且弄成了可配置项。
如果\3
也不行的话,你可以试试别的字符串,例如 用一些很难出现的字符串,例如::::::::
。
(setq calibredb-sql-separator "::::::::")
另外,你也可以更新一下sqlite3
。
melpa可能还没那么快更新,你可以用最新的master commits再试试。
不知道为什么论坛上不了图,你可以我网上贴的图: https://imgur.com/a/6EtGcsw