更新:深度集成eaf-browser(直接读取数据库高亮网页上存在的单词,点击即可查词,paw-view-note里面加词,paw-view-note里面删词,自动取段落作为笔记,开启paw-annotation-mode
即可启动,暂时每次刷新网页都要重新开启),添加多发声源(paw-say-word-cambridge
paw-say-word-oxford
paw-say-word-jpod101-alternate
paw-edge-tts-say-word
paw-youdao-say-word
paw-say-word-forvo
, 添加了新的按钮),添加文本wordlists(可以当词典用)。eaf-browser需要用我的定制版:GitHub - chenyanming/eaf-browser: A modern, customizable and extensible browser in Emacs (暂时无法上到upstream,因为我做了不少定制)
还可以绑定
(eaf-bind-key insert_or_paw_view_note_in_eaf "s" eaf-browser-keybinding)
选中单词后点击s
就能查词。
划重点:
利用paw添加的单词会实时同步到eaf-browser中作为高亮,eaf-browser添加或者删除的单词也会实时同步到数据库,eaf-browser会直接读取数据库进行高亮,不占用emacs资源。名副其实的eaf-browser单词本插件。
不是简单的取词查词动作,paw会取选中的单词所在段落作为笔记,还会把网页的地址取下来作为单词的原始地址,从而做到查词的同时保存所在的所有有用的上下文信息,所以才需要定制版的eaf-browser。同时,也对网页上所有的段落(html p tag)的句子划分为单词,给每个单词添加click event和鼠标underline标示,从而做到点击就能查词的动作,只要鼠标移动到单词且看到该单词有underline就代表这个单词可以点击,从而减少误操作。
抓取知名英文日文网络词典,添加多发声源,可以调整paw-say-word-functions
来调整发声源优先级。anki部分也会自动下载发声源哦:paw-anki-download-sound-functions
。
2 个赞
更新:现在paw-view-note-in-minibuffer支持eldoc-box了(安装eldoc-box就可以启动),使用csv格式的词典paw-ecdict-wordlist-files查单词(独创新功能,只要是csv或者txt文件都可以当词典用,支持多csv同时查询,wordlists的另一个作用就是上次更新的,用来高亮用户的单词,词组甚至是句子),如果没有就用paw-ecdict-db。
paw-view-note-show-type配置成all,就可以同时使用了弹出(使用wordlist和db)和侧边window(使用go-translate和sdcv)查看了,没有冲突。
3 个赞
paw现在已经支持外部浏览器高亮了,同时支持在浏览器查看和删除单词(暂时支持firefox手机和电脑,chrome正在审核中):
安装
# paw-server
pip install flask
pip install flask-cors
启动
M-x paw-server
因为默认5000在mac里面已经被占用,需要在扩展的配置页面手动修改成5001,Eamcs端默认已经5001(配置paw-server-port).
paw-server是一个独立的非常简单的python http服务器(参考源码中的paw-server.py),用来跟浏览器交换数据,python通过直接读取paw的数据库,然后把所有单词信息传送到浏览器,浏览器在每次刷新页面都会匹配页面的所有单词,然后高亮它们。
开发它是因为,我发现我还是喜欢用外部浏览器和手机firefox看英语材料(新闻什么的),在手机上用firefox配合Emacs也能实现查词和管理单词的效果,同时能将单词的上下文传送到Emacs,用AI翻译,和用gtpel问AI问题,来进一步学习。再加上,我用Emacs nov看epub电子书和阅读Read it later文章(wallabag.el),我需要将一些付费文章加到wallabag中,然后在Eamcs中进一步学习。
市面上的手机、电脑查单词软件,都只能查单词本身,并不能把单词的上下文一起查了,同时添加单词到单词本的时候,也是非常零散的,只能添加单词的本身,而无法把单词的上下文,出处(网页还是电子书),给一并添加到单词本。而学习语言,单词的上下文非常重要,所以,paw尽最大的可能,在所有的阅读场景,将单词的所有相关信息都保存下来(插件不只是查单词本身,还会通过javascript获取单词的上下文发送到Emacs,然后Emacs里面直接进行翻译等),每次阅读的时候就能在高亮的地方看到上次添加的单词所在的场景。如下图所示,paw-server突破了Emacs本身,扩展到浏览器:
发布emacs-paw命令行工具和chome extension:
同时更新了安装部分的文档,介绍所有的依赖:
例子(匹配一段日文文字,在japanese.db和蓝宝书日语文法.csv查词,返回词典里面有的单词,使用japanese.txt过滤不想被查的单词):
paw ja_search /home/damonchan/org/japanese.db MATCH 海外の大企業は「ダイバーシティ(多様性)&インクルージョン (包括的) --tag "" --wordlist /home/damonchan/org/c --known-words-files /home/damonchan/org/japanese.txt
[
{
"kanji": "の",
"waller_definition": "-->蓝宝书日语文法\n-->の\n接続:『动普通形/い形普通形/な形词干+な/名+な』+の\n強[つよ]い 子[こ]どもは 泣[な]かないの。\n坚强的孩子不能哭鼻子。\n説明:表示轻微的命令。“你得……”,“你要……”。\n註意:表示命令,语气较强。\n\n\n\n強い子どもは泣かないの。\n\n-->蓝宝书日语文法\n-->の\n接続:『动普通形/い形普通形/な形词干+な/名+な』+の\n今日[きょう]は 休[やす]みなのよ。\n今天休息。\n説明:表示轻微的断定。“是……的”。\n註意:读降调,还可以使用「のよ」,「のね」的形式。\n\n\n\n今日は 休みなのよ。\n\n-->蓝宝书日语文法\n-->の\n接続:『动普通形/い形普通形/な形词干+な/名+な』+の\n顔色[かおいろ]が 悪[わる]いけど,どうしたの?\n你的脸色不好,怎么啦?\n説 明:表示疑问。“……吗”。\n註意:读升凋,语气比终助词「か」柔和。主要为女性和儿童使用。\n\n\n\n顔色が悪いけど,どうしたの?\n\n-->蓝宝书日语文法\n-->の\n\n空[そら]を 鳥[とり]が 飛[と]んでいるのが 見[み]えます。\n我看到有鸟飞过天空。\n説明:形式体言,在句中通常不翻译出来。\n註意:「〜の」可是代替宾语和主语部分,例文中的是代替主语部分。\n\n\n\n空を鳥が飛んでいるのが見えます。\n\n-->蓝宝书日语文法\n-->の\n接続:名词+の……\n田中[たなか]さんの 来[く]る 日[ひ]は 火曜日[かようび]です。\n田中周二来。\n説明:作 句子的修饰成分。\n註意:此种用法的「の」是由从句中主格助同「が」变过来的。\n\n\n\n田中さんの来る日は火曜日です。\n\n-->蓝宝书日语文法\n-->の\n接続:『い形容词辞书形/な 形容词词干』+な+の\nもうちょっと 安[やす]いのを、 見[み]せてください。\n请让我看看再便宜一些的。\n説明:在句中可以明确名词所指何物的情况下,可以用「の」代替该名词。\n\n\n\n\nもうちょっと安いのを、見せてください。\n\n-->蓝宝书日语文法\n-->の\n接続:名词+の+名词\n日本[にほん]の 古[ふる]い 映画[えいが]を 見[み]ました。\n看了日本的老电影 。\n説明:表示所属、性质、限定、同位语等。\n註意:「の」的此种用法不一定翻译成汉语的“……的”。另外在所属物品相当明确的情况下,「の」可以代替句中省略掉的所属物品。\n\n\n\n日本の古い映画を見ました。"
},
{
"kanji": "は",
"waller_definition": "-->蓝宝书日语文法\n-->は\n接続:名词(+助词に、へ、で、と、から、まで)+は\n山田[やまだ]さんはテニスはしますが、ゴルフはしません\n山田打网球,不过不打高尔夫。\n説明:「〜は〜(が)、〜は〜」句型可以用来进行两种事物的比较。\n註意「は」和「が」的区別: ①提示主题用「は」,提示主语用「が」。 例: 象[ぞう]は 鼻[はな]が 長[なが]いです。/大象鼻子长。\n②对主题进行说明判断时用「は」,陈述眼前看到的、听到的、实际感受到的事情时用「が」。 例1:東北[とうほく] 地方[ちほう]の 雪[ゆ き]は 多[おお]いです。/东北地区雪下得多。 例2: 今[いま]、 雪[ゆき]が 降[ふ]っています。/现在正在下雪。\n③提示已知事物用「は」,未知事物用「が」。 例1: 机[つくえ]の 上[うえ]に 日本語[にほんご]の 教科書[きょうかしょ]があります。それは 王[おう]さんのです。/桌上有本日语教科书,那是小王的。 例2:どの 人[ひと]が 山下[やました]さんですか。/哪位是山下先生(小姐)?\n④「は」的指示范围涉及全句,即关联句末的谓语,可以说是句子的大主语;「が」可指示分句中主语,也可以称作是此类句子的小主语。 例: 母[はは]が 作[つく]るサシドイッチはおいしいです。。/妈妈做的三明治很好吃。\n山田さんはテニスはしますが、ゴルフはしません\n\n-->蓝宝书日语文法\n-->は\n接続:名词(+助词に、へ、で、と、から、まで)+は\n明日[あした]は 雪[ゆき]が 降[ふ]るでしょう。\n明天会下雪吧。\n説明:「〜は〜が〜」句型可以用来说明主题的某种状态。\n註意「は」和「が」的区別: ①提示主题用「は」,提示主语用「が」。 例: 象[ぞう]は 鼻[はな]が 長[なが]いです。/大象鼻子长。\n②对主题进行说明判断时用「は」,陈述眼前看到的、听到的、实际感受到的事情时 用「が」。 例1:東北[とうほく] 地方[ちほう]の 雪[ゆき]は 多[おお]いです。/东北地区雪下得多。 例2: 今[いま]、 雪[ゆき]が 降[ふ]っています。/现在正在下雪。\n③提示已知事物用「は」,未知事物用「が」。 例1: 机[つくえ]の 上[うえ]に 日本語[にほんご]の 教科書[きょうかしょ]があります。それは 王[おう]さんのです。/桌上有本日语教科书,那是小 王的。 例2:どの 人[ひと]が 山下[やました]さんですか。/哪位是山下先生(小姐)?\n④「は」的指示范围涉及全句,即关联句末的谓语,可以说是句子的大主语;「が」可指示分句中主语,也可以称作是此类句子的小主语。 例: 母[はは]が 作[つく]るサシドイッチはおいしいです。。/妈妈做的三明治很好吃。\n明日は雪が降るでしょう。\n\n-->蓝宝书日语文法\n--> は\n接続:名词(+助词に、へ、で、と、から、まで)+は\nわたしの 部屋[へや]はあまりきれいじゃありません。\n我的房间不太整洁。\n説明:「は」用来提示主题,并对主题进行说明 和判断。\n註意「は」和「が」的区別: ①提示主题用「は」,提示主语用「が」。 例: 象[ぞう]は 鼻[はな]が 長[なが]いです。/大象鼻子长。\n②对主题进行说明判断时用「は」,陈述眼前看到的、听到的、实际感受到的事情时用「が」。 例1:東北[とうほく] 地方[ちほう]の 雪[ゆき]は 多[おお]いです。/东北地区雪下得多。 例2: 今[いま]、 雪[ゆき]が 降[ふ]っています。/现在正在下雪。\n③提示已知事物用「は」,未知事物用「が」。 例1: 机[つくえ]の 上[うえ]に 日本語[にほんご]の 教科書[きょうかしょ]があります。それは 王[おう]さんのです。/桌上有本日语教科书,那是小王的。 例2:どの 人[ひと]が 山下[やました]さんですか。/哪位是山下先生(小姐)?\n④「は」的指示范围涉及全句,即关联句末的谓语,可 以说是句子的大主语;「が」可指示分句中主语,也可以称作是此类句子的小主语。 例: 母[はは]が 作[つく]るサシドイッチはおいしいです。。/妈妈做的三明治很好吃。\nわたしの部 屋はあまりきれいじゃありません。"
}
]
匹配一段英文文字:
paw en_search /home/damonchan/org/stardict.db MATCH "The GNU General Public License is a free, copyleft license forsoftware and other kinds of works." --tag "" --wordlists /home/damonchan/org/5000.csv --known-words-files /home/damonchan/org/eudic.csv,/home/damonchan/org/english.txt
[
{
"word": "cop",
"definition": "-->5000\n-->cop\nc1\nhttps://www.oxfordlearnersdictionaries.com/definition/english/cop_1\nhttps://www.oxfordlearnersdictionaries.com/media/english/uk_pron/c/cop/cop__/cop__gb_1.mp3\nhttps://www.oxfordlearnersdictionaries.com/media/english/us_pron/c/cop/cop__/cop__us_1.mp3"
},
{
"word": "license",
"definition": "-->5000\n-->license\nc1\nhttps://www.oxfordlearnersdictionaries.com/definition/english/license_1\nhttps://www.oxfordlearnersdictionaries.com/media/english/uk_pron/l/lic/licen/license__gb_1.mp3\nhttps://www.oxfordlearnersdictionaries.com/media/english/us_pron/l/lic/licen/license__us_1.mp3"
}
]
1 个赞
book
2025 年2 月 3 日 13:48
87
如果将sdcv更新为sdcv-20241227.319(链接Public Git Hosting - sdcv.el.git/summary ) ,打开paw-view-note会出现let*: Symbol’s value as variable is void: sdcv-env-lang? 旧版本的sdcv.el没有问题。
大家好,有空帮帮忙
error in process sentinel: json-read: JSON readtable error: 73
error in process sentinel: JSON readtable error: 73
加了打印也打印不出来,不知道为什么.
(defun paw-sdcv-process-sentinel (proc _event buffer)
(when (eq (process-status proc) 'exit)
(let* ((buffer-content (with-current-buffer (process-buffer proc)
(buffer-string))))
;; Print the JSON content to the message buffer
(message "JSON to parse: %s" buffer-content)
是词典中文名称乱码(懒虫简明英汉词典)。 请问是因为ubuntu service版没安装中文支持吗?有人知道怎么安装吗?
user-error: No resizable window below this oneInvalid face attribute :background nil
Invalid face attribute :background nil [12 times]
user-error: No resizable window below this one [5 times]
user-error: No resizable window below this oneInvalid face attribute :background nil
Invalid face attribute :background nil [191 times]
“Invalid command line arguments: Invalid byte sequence in conversion input\n”
JSON to parse: Invalid command line arguments: Invalid byte sequence in conversion input
buffer-string
改用
buffer-substring-no-properties
会不会,能打印出内容?
(defface paw-click-face
'((((class color) (background light))
:background “green” :height 1.0)
(((class color) (background dark))
:background “green” :height 1.0)
(t :inherit default))
“Face used for click overlay.”
:group 'paw-faces)
安卓这样改有问题吗?
README 更新:
paw-view-note 窗口配置
自动调整窗口 :如果 paw-view-note-window-auto-adjust
为 t
(默认值),则 paw-view-note
窗口将自动调整。
显示位置 :
高度大于宽度时,显示在 paw-view-note-vertical-position
。
否则,显示在 paw-view-note-horizontal-position
。
窗口尺寸 :可以通过 paw-view-note-window-width
和 paw-view-note-window-height
进行配置。
声音引擎
Paw 包含多种用于下载音频文件的声音引擎。可用的声音引擎包括:
paw-say-word-cambridge
paw-say-word-oxford
paw-say-word-jpod101-alternate
paw-edge-tts-say-word
paw-youdao-say-word
paw-say-word-forvo
以及更多
默认情况下,这些声音引擎的使用顺序由 paw-say-word-functions
定义。
同时,发布了我个人的配置:
;;; config.el -*- lexical-binding: t; -*-
(use-package paw
:hook
;; my personal configs
(paw-view-note-mode . paw-view-note-setup)
(paw-annotation-mode . paw-annotation-setup)
:init
(setq paw-db-file (expand-file-name "paw.sqlite" org-directory))
;; ecdict dictionary
(setq paw-ecdict-db (expand-file-name "stardict.db" org-directory))
;; setup ECDICT before using it, and create the files manually if not exist
(setq paw-ecdict-wordlist-files `(
;; ,(expand-file-name "美国当代英语语料库.csv" org-directory) ;; https://www.eapfoundation.com/vocab/academic/other/mawl/
,(expand-file-name "mawl.csv" org-directory) ;; https://www.eapfoundation.com/vocab/academic/other/mawl/
,(expand-file-name "opal.csv" org-directory) ;; https://www.oxfordlearnersdictionaries.com/wordlists/
,(expand-file-name "5000.csv" org-directory) ;; https://www.oxfordlearnersdictionaries.com/wordlists/
,(expand-file-name "极品GRE红宝书.csv" org-directory)
,(expand-file-name "gre.txt" org-directory)
,(expand-file-name "托福绿宝书.csv" org-directory)
This file has been truncated. show original
最近开始频繁在mac和linux之间切换,和开始用竖屏看pdf,由于mac上eaf并不理想,于是重新开始用pdf-tools,优化了对pdf-tools(pdf-view-mode)的支持。
同时,为了实现其他PDF阅读器类似的笔记功能,可以拉选文字后加笔记(M-x paw-add-*
),同时也优化了paw-list-annotations
,在pdf文件下用consult列出当前pdf文件的所有笔记(它也可在paw 里面用)。当然,它也可以在epub和其他任何文件下使用。如果在文件下运行M-x paw,也自动过滤出当前文件的所有笔记。
感谢如此之快地解决了焦点选项
sdcv 能在命令行查词,sdcv.el 也安装了,但是如何让它在 view note 里出现呢
btw: 激活 paw annotation mode 后,鼠标查第一个词后,可以按大写A 来加离线生词 ; 但第二个开始就不行了,得用 C-c A 来加,不知这两次查询差别在哪
注: paw 是直接 clone 的,配置用的 LZ 公开的 config.el
sdcv的配置的确是最头疼的一部分。主要是在于词典的选择和系统编码都会影响。特别是词典的路径要用fullpath不要用~。
如果有error出现,可以看看*sdcv-output*
这个buffer出了什么问题。
默认是需要C-c的,在paw-annotation-mode下,你想用A,就改一下这个map
(defvar paw-annotation-mode-map
(let ((map (make-sparse-keymap)))
(define-key map (kbd "C-c C-f") 'paw-list-annotations)
(define-key map (kbd "C-c C-,") 'paw-add-attachment)
(define-key map (kbd "C-c C-n") 'paw-next-annotation)
(define-key map (kbd "C-c C-p") 'paw-previous-annotation)
(define-key map (kbd "C-c e") 'paw-view-note-in-minibuffer)
(define-key map (kbd "C-c v") 'paw-view-note)
(define-key map (kbd "C-c t") 'paw-view-note-translate)
(define-key map (kbd "C-c T") 'paw-translate)
(define-key map (kbd "C-c h") 'paw-add-highlight)
(define-key map (kbd "C-c a") 'paw-add-online-word)
(define-key map (kbd "C-c A") 'paw-add-offline-word)
(define-key map (kbd "C-c u") 'paw-scroll-down)
(define-key map (kbd "C-c d") 'paw-scroll-up)
(define-key map (kbd "C-c c") 'paw-view-note-current-thing)
(define-key map (kbd "C-c n") 'paw-view-note-next-thing)
(define-key map (kbd "C-c p") 'paw-view-note-prev-thing)
(define-key map (kbd "C-c f") 'focus-mode)
(define-key map (kbd "C-c r") 'paw-view-note-play)
(define-key map (kbd "C-c q") 'paw-view-note-quit)
(define-key map [mouse-1] 'paw-view-note-click)
(define-key map [mouse-2] 'paw-view-note-click) ;; this can replace shr-map and nov-mode-map browse-url
map)
"Keymap for function `paw-annotation-mode'.")
焦点在*paw-view-node*
buffer的时候才可以用A,这时候自动取光标下的word做释义。焦点不在paw-view-node就得用C-c A。
1 个赞
开源我用的词典:
我收集了大多数常用的雅思,托福,剑桥必备,常用词组,常用idiom等,大家可以用来高亮使用,也欢迎提交更多词典。同时更新了对telega-webpage-mode的支持,也优化了eaf-browser的支持。
3 个赞