paw.el外语学习,高亮笔记,单词本,等一体的新插件(Emacs的蒙哥阅读器、LingQ)

造福大众 :+1:

btw 我想看看成功的 sdcv ecdict 在 paw-view-note 里的效果

1 个赞

我的sdcv用的是懒虫简明,例如这个elevator pitch,也不一定有,还需要配合外部词典。

这个好棒,搞得我想买个安卓手机了 :joy:。安卓emacs客户端,现在支持屏幕滑动吗?

支持啊,不过滑动是有点慢,没那么顺滑,所以我加了tool-bar映射了按钮。

1 个赞

现在paw支持yomitan啦!

  • 可以配置paw-dictionary-function,然后直接用paw-view-note-in-dictionary
  • 也可以直接用paw-yomitan-search-details-firefox或者paw-yomitan-search-details-chrome
  • 也可以先paw-view-note,再在*paw-view-note* buffer调用以上函数。

看到又有新功能,更新了下,报

Symbol's function definition is void: defvar-1
Debugger entered--Lisp error: (void-function defvar-1)
  defvar-1(sdcv-mode-syntax-table #^[nil #^[(0) nil syntax-table 
#^^[3 0 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] #^^[1 0 #^^[2 0 
#^^[3 0 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] 
#^^[3 128 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] ... ... ... 
#^^[3 640 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] ... 
#^^[3 896 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] ... ... ... 
#^^[3 1408 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] ... ... ... ... ... ... ... ...] #^^[2 4096 ... ... ... ... ... ... 
#^^[3 4864 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] ... ... ... ... ... ... ... ... ... ... ... ... ...] #^^[2 8192 
#^^[3 8192 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] 
#^^[3 8320 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] 
#^^[3 8448 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] 
#^^[3 8576 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] ... ... 
#^^[3 8960 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] 
#^^[3 9088 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] 
#^^[3 9216 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] 
#^^[3 9344 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] 
#^^[3 9472 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] 
#^^[3 9600 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] 
#^^[3 9728 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] ... 
#^^[3 9984 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] 
#^^[3 10112 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] ... ... ... ...] #^^[2 12288 
#^^[3 12288 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] 
#^^[3 12416 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] ... ... 
#^^[3 12800 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] ... ... 
#^^[3 13184 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] ... ... ... ... ... ... ... ... ... ... ... ...] ... ... ... ... ... ... #^^[2 40960 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...] ... ... ... ... #^^[2 61440 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...]] #^^[1 65536 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... #^^[2 126976 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...]] (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) ...] syntax-table nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil ...])
  byte-code("\301\302N\204\f\0\303\301\302\304#\210\305\306!\204(\0\303\306\307\310#\210\311\306\305\306!\203$\0\312\202&\0\313 \"\210\306\302N\2044\0\303\306\302\314..." [sdcv-mode-abbrev-table sdcv-mode-map variable-documentation put "Keymap for `sdcv-mode'." boundp sdcv-mode-syntax-table definition-name sdcv-mode defvar-1 nil make-syntax-table "Syntax table for `sdcv-mode'." define-abbrev-table "Abbrev table for `sdcv-mode'." fboundp derived-mode-set-parent derived-mode-parent] 5)
  require(sdcv nil t)

看不出来什么问题,这个sdcv部分没动。

不过刚发现了config.el的小问题,已解决。

嗯,我换了台机器,也是删除后重新克隆的paw,报


Debugger entered--Lisp error: (void-function emacsql-sqlite)
  emacsql-sqlite("/home/admin/.emacs.d/.cache/paw.sqlite")

感觉是没找到paw.sqlite这个文件,这个能手工创建吗

貌似别的群友也有过这个问题,数据库会自动创建的,现在是缺失了emacsql-sqlite的问题,这个不知道为啥缺失了,你先试试手动装上它看看。

这emacsql明明有在里面的 ;; Package-Requires: ((emacs “25.1”) (request “0.3.3”) (emacsql “3.0.0”) (s “1.12.0”) (dash “2.17.0”) (go-translate “3.0.5”) (gptel “0.8.6”) (focus “1.0.1”) (svg-lib “0.3”) (anki-editor “0.3.3”) (esxml “0.3.7”))

emacsql package updated. No emacsql-sqlite.el available. · Issue #2485 · org-roam/org-roam · GitHub 里面提到了melpa版本旧,更新即可

目前尝试了: 先卸载 emacsql ,再用package-install 装上

用use-package 安装 github 上的 emacsql

拷贝 ~/org 目录下的 paw.sqlite 到 .emacs.d/.cache 下

这个报错仍然出现

而 /.emacs.d/elpa/emacsql-20250301.1637 目录下是有 emacsql-sqlite.el 这个文件的;这个文件末尾是 (provide 'emacsql-sqlite),但它应该提供的不是一个function吧,想不明白

我刚直接删除了require emacs-sqlite这一句发现没有什么问题(emscs 29以上使用builtin sql好像不需要这个了),pull后再看看

1 个赞

对于emacsql 4.2.0 刚参考了这个PR换成了用emacs-sqlite-open。

1 个赞

感谢感谢,完美解决,报错已经消失!强!

剩下就是 sdcv 的错了

没有发现解释也... 
用更多的词典查询一下吧! ^_^

这里就应该是 sdcv 出释义的地方对吧

若执行 paw-sdcv-search-at-point ,则

Debugger entered--Lisp error: (void-function sdcv-search-with-dictionary)
  (sdcv-search-with-dictionary word sdcv-dictionary-complete-list)

今天脑子已经不转了,明天继续,再次感谢

因为很多群友反映sdcv问题了,在于不知道出了什么错误无法出单词释义和配置上的问题(例如无法辨认~的问题)。

由于懒猫的sdcv采用的是同步查词,已经不符合本项目的性能需求。于是本项目彻底不再依赖懒猫的sdcv,只保留配置上的同步。以下配置既同步了懒猫的sdcv的配置,同时也配置了paw自己的配置。

建议大家增加以下配置,如果想同步sdcv的配置:

(with-eval-after-load 'sdcv
        (setq paw-sdcv-env-lang sdcv-env-lang)
        (setq paw-sdcv-program sdcv-program)
        (setq paw-sdcv-only-data-dir sdcv-only-data-dir)
        (setq paw-sdcv-dictionary-data-dir sdcv-dictionary-data-dir)
        (setq paw-sdcv-fail-notify-string sdcv-fail-notify-string)
        (setq paw-sdcv-dictionary-list sdcv-dictionary-simple-list))

或者直接配置paw:

(cond ((eq system-type 'darwin)
         (setq paw-sdcv-program "/opt/homebrew/bin/sdcv" )
         (setq paw-sdcv-dictionary-data-dir (expand-file-name "dict" doom-private-dir)))
        ((eq system-type 'windows-nt)
         (setq paw-sdcv-program (expand-file-name "~/.doom.d/modules/sdcv/sdcv.exe"))
         (setq paw-sdcv-dictionary-data-dir (expand-file-name "dict" doom-private-dir)))
        ((eq system-type 'gnu/linux)
         (setq paw-sdcv-env-lang (getenv "LANG"))
         (setq paw-sdcv-dictionary-data-dir (expand-file-name "dict" doom-private-dir)))
        ((string-equal system-type "android")
         (setq paw-sdcv-env-lang (getenv "LANG"))
         (setq paw-sdcv-dictionary-data-dir (expand-file-name ".doom.d/dict" termux-home-dir))))
  (setq paw-sdcv-dictionary-list    ;setup dictionary list for simple search
        '(
          "懒虫简明英汉词典"
          "Collins Cobuild English Dictionary"
          "小学馆-日中词典"
          "日汉双解词典"
          "EJ-EDict" "JE-EDICT_Kanji"
          "日汉词典" "jmdict-ja-en" "KANJIDIC2" "新明解国語辞典"
          "小学館中日辞典EB版" "広辞苑 第六版" "EJ-GENE95"
          "jmdict-en-ja"
          "JCEDict" "EDICT"
          ;; "Engligh Idioms (eng-eng)"
          "JEDict" "ENAMDICT" "EJDic" "DrEye日汉词典" "DrEye4in1词典"
          ;; "Longman Language Activator 2nd Ed. (En-En)"
          ;; "简明英汉字典增强版"
          ;; "Cambridge Advanced Learners Dictionary 3th Ed. (En-En)"
          ;; "新世纪汉英科技大词典" "Longman Dictionary of Contemporary English" "Merriam-Webster's Collegiate 11th Ed. (En-En)" "Longman Dictionary of Common Errors (En-En)" "WordNet" "牛津现代英汉双解词典" "新世纪英汉科技大词典" "Merriam-Webster's Collegiate Thesaurus (En-En)"
          ;; "21世纪双语科技词典" "KDic11万英汉词典"
          ;; "Collins Cobuild English Dictionary" "Longman Dictionary of Contemporary English 5th Ed. (En-En)"
          ;; "Merriam-Webster's Advanced Learner's Dictionary (En-En)"
          ))

本项目使用的异步查询sdcv函数:paw-sdcv-search-with-dictionary-async

如果出现问题,排查*sdcv-output*sdcv-error*这两个buffer,看看什么error,正常是这样的:

1 个赞

paw 要求 sdcv 程序和 sdcv.el 对吧 linux系统下 sdcv 正常查词,在emacs 里用 sdcv-search-at-point 也能正常查词出结果 但是 paw-view-note 里却出不来

感谢给出的 paw sdcv 设置,为了简化,我去掉了判断操作系统的部分,设置如下

(require 'sdcv)
(setq paw-sdcv-env-lang (getenv "LANG"))
(setq paw-sdcv-dictionary-data-dir (expand-file-name "~/.stardict/dic"))
(setq paw-sdcv-dictionary-list    ; setup dictionary list for simple search
      '(
	"朗道英汉字典5.0"
	"简明英汉字典增强版"
	))

执行 paw-sdcv-search-at-point 会返回

Debugger entered--Lisp error: (void-function sdcv-search-with-dictionary)
  (sdcv-search-with-dictionary word sdcv-dictionary-complete-list)
  (insert (sdcv-search-with-dictionary word sdcv-dictionary-complete-list))
...

看来它要的是complete-list ? 看前面配置示例是管 simple search的?是不是这个原因呢,如何修改加上 sdcv-dictionary-complete-list 到 paw-sdcv-dictionary-list 中呢

btw: 因为没有执行成功,似乎没出现 sdcv-output sdcv-error 的 buffer, 但有一个 SDCV 的,内容为空

1 个赞

新修改的版本去掉了sdcv.el的依赖(其实以前也是一直只是用了sdcv.el的配置而已,方便用户不用两边都配置,现在分开了配置了,正如我上面提供的配置一样),你可以将sdcv.el删除了(你也可以保留,sdcv.el和paw互不冲突),但是sdcv命令行需要保留。sdcv-search-with-dictionary是sdcv.el的函数,不再需要了。为什么会出这个error,可能是因为你还没更新到最新,因为paw-sdcv-search-at-point也删除了,现在查词,直接用paw-view-note。 将sdcv-dictionary-complete-list内容复制到paw-sdcv-dictionary-list就可以了,paw不分simple和complete。

总结,你的配置没有问题,只要更新paw,最后用paw-view-note查词(别用paw-sdcv-search-at-point了,已经没有这个函数了),就能看到sdcv-output和sdcv-error两个buffer了。

1 个赞

内牛满面,更新后完美解决,sdcv的结果也出来啦!一万个感谢 !

and

如果有可能的话,可否为发音的部分加一个配置音量大小的参数;目前默认的单词发音挺响亮的,晚上开视频网页的合适的音量,切到 paw 查词时的自动发音经常吓我一跳 :rofl:

1 个赞

音量不太可行,因为要支持不同的播放器不太通用。不过你可以临时关闭自动播放。M-x paw进入界面后,在header上,页数的右边,有个喇叭icon,点击一下就会临时关闭自动发音,再点一下恢复。