【讨论】一种提升英文阅读体验的可能性

啊,连续数天2点才睡就是为了抄你的作业 :rofl: 高手这是改用啥啦

感谢指导,我按这个试试,顺便严重感谢一下分享配置哈

感谢解析,DX能分析原因,新手遇到全无思路不知如何处理

是我没说清楚,我是指这里

执行这个的原因是配置是直接复制的,那想试试第二步是不是没做好(因为 mac 没在手边,用 linux 复现了下):


[WebsocketBridge] Server has start.
[WebsocketBridge] Application dictionary-overlay has start.
You can run the command ‘dictionary-overlay-start’ with M-x d-sta RET
[WebsocketBridge] Application dictionary-overlay has start.
websocket-send: Cannot send message to a closed websocket: #s(websocket-frame text "[\"data\",[\"render\",\";; This buffer is for text that is not saved, and for Lisp evaluation.\\n;; To create a file, visit it with C-x C-f and enter text in its buffer.\\n\\n\",146,\"*scratch*\"]]" nil t)

然后没找到 dictionary-overlay-toggle-start 命令,我用的 dictionary-overlay-restart, 之后 C-c d

websocket-bridge-call-buffer: Symbol’s value as variable is void: websocket-bridge-client-dictionary-overlay

我猜这是不是因为依赖没安装好?于是执行 dictionary-overlay-install, 得到

Defaulting to user installation because normal site-packages is not writeable
ERROR: Could not open requirements file: [Errno 2] No such file or directory: '/home/someone/.emacs.d/straight/build/dictionary-overlay/requirements.txt'

搜索了下,repos下的D-O目录里有这个文件,就把它拷贝过来了,再 dictionary-overlay-install

Requirement already satisfied: websockets==10.4 in ./.local/lib/python3.10/site-packages (from -r /home/sisu/.emacs.d/straight/build/dictionary-overlay/requirements.txt (line 6)) (10.4)

呃,目前就是执行不了 C-c d 了 :melting_face:

DX 换作啥了,我跟着换亦可 :smiley:

我换borg了,学习半自动档的包控制,没必要跟,容易颅内高压溢血。

我的锅,手机码字,码错命令了。对的名称是 dictionary-overlay-start。但我更倾向于用dictionary-overlay-restart。另:上面的 popweb :files 改了下错误的目录,你看一下。

websocket-bridge-call-buffer: Symbol’s value as variable is void: websocket-bridge-client-dictionary-overlay

这个我现在也遇上了,正在排除。我猜更新一下websocket-bridge就好了。

谢谢,那先预习~~不实战

谢谢,我复制到 init.el 里了

error: *.el:0:0: error: file-error: (Read error Is a directory /home/someone/.emacs.d/straight/build/popweb/*.el)

我去 straight/build/popweb 目录看了下,*.el 确实是个目录,里面包含了一个 dict 目录 退出时还会问要不要保存 popweb-autoload.el

静候佳音

试了下 git pull 它,无更新;倒是 emacs-websocket 更新了下,目前报错为

websocket-bridge-call-buffer: Symbol’s value as variable is void: websocket-bridge-client-dictionary-overlay

update: 已经切到 el-get 了,又跑起来了 :upside_down_face:

dictionary-overlay-choose-translate 能否提供 company-mode 这种 Buffer 内的下拉列表方式展示,这样不会导致界面布局变来变去?

我现在标记未知单词时依次调用 dictionary-overlay-mark-word-unknown dictionary-overlay-modify-translation(检测到单词只有一种释文时自动跳过 modify)

company-mode 之类的补全插件的 api 我不是很熟悉。逻辑上应该不难。有空我看看。

大佬要是了解有相关代码块,也可以分享一些。

问个使用方法的问题: D-O 在生词上按 n 是可以跳到下一个生词的,按 m 可以标注,但标注为 known 后就不能跳了,如何让它标注的同时也执行一下跳到下一个生词位置呢

在这儿设置一下应该就可以了

1 个赞

https://github.com/VocabCLI/VocabCLI

lz 看看这个有用不,是不是sdcv的好替代

请问,我在 render-buffer 前加了一句 popweb-dict-say-word,为啥不起作用捏

不知道你怎么加的 :grin: (附上具体代码

没有用 use-package 哈

(add-to-list 'load-path "~/.emacs.d/el-get/dictionary-overlay/")
(require 'dictionary-overlay)
(setq dictionary-overlay-inihibit-keymap nil)
(setq dictionary-overlay-just-unknown-words nil)
(setq dictionary-overlay-auto-jump-after
   '(mark-word-known         ; recommended
     ;; mark-word-unknown    ; not recommended
     popweb-dict-say-word    ;I add this but not working
     render-buffer           ; opinionated, but turn it on, why not
     ))

基本上是抄你的

源码里没有对这个选项进行设计,只能从上面三个选项里选择。

say word 后跳转不合常理:say word后也许没听清清,你又想再听一遍。

更新:话说回来,似乎可以改成允许扔进任何命令。但我最近一直都是send-to-closed-websocket错误, 没精力调试,于是一周没用d-o了。后面弄好了应该可以改进一下你说的情况。只是不知道什么时候会修,到时再过来这儿艾特你吧

好的好的,感谢感谢

@manateelazycat

请教下我给popweb-dict-bing-pointer定了个快捷键,让它在D-O里查词,但每次查完后point就移至单词末尾后了,导致不能按n跳下一个生词,请问如何才能让它不变point的位置呢

那是你配置的问题,popweb不会移动你的光标。

;; Chinese-English translation popup
(add-to-list 'load-path "~/.emacs.d/el-get/popweb/extension/dict") ;
(require 'popweb-dict) 

(add-to-list 'load-path "~/.emacs.d/el-get/dictionary-overlay/")
(require 'dictionary-overlay)
(setq dictionary-overlay-inihibit-keymap nil)
(setq dictionary-overlay-just-unknown-words nil)
(setq dictionary-overlay-auto-jump-after
   '(mark-word-known         ; recommended
     ;; mark-word-unknown    ; not recommended
     render-buffer           ; opinionated, but turn it on, why not
     ))

(require 'bind-key)
(bind-key "C-c d" 'dictionary-overlay-render-buffer)
(bind-key "M-i" 'popweb-dict-bing-pointer)
(global-set-key (kbd "M-j") 'dictionary-overlay-jump-next-unknown-word)

这里是相关配置,自己看不出来有啥问题 :melting_face:

大佬给指点下,谢谢,新年快乐~~

popweb 本身是基于 thing-at-point 来获取单词的, 不会移动你的光标

那么你的光标移动可能是 dictionary-overlay 配置引起的, 你为什么不用二分注释法(论坛的回复框就写的有方法)去一行一行的排查是到底哪行配置出错了呢?

注释几次重启几次就可以测试出来到底哪个选项有问题, 为什么不自己尝试却期望别人帮你测试呢?

谢谢

回复框里的内容是看过的,但是这个二分怎么搞法不是很明白

你也指明了方向,我不会再问了,也不是玻璃心,但还是补充下:

我也没指望别人测试,只是他人经验多一些也许能少些弯路(当然仍然可以被归类为自己不努力)

Whenever you feel like criticizing any one, just remember that all the people in this world haven't had the advantages that you've had.

再次抱歉,说些无关的话

二分法就是注释掉一半的相关代码,如果问题还存在,那说明问题在另一半代码里。

继续在那一半有问题的代码里注释掉其中的一半,如此循环,直到定位到具体的某一行代码。

多谢指点!已经尝试分段逐行注释 似乎是这一行

(setq dictionary-overlay-just-unknown-words nil)

不过这句不生效的话 D-O 就不 render 了,我也没能力进一步了

update: 找到个折衷的办法,按ctrl g 退出popweb的查词窗口而不是按ESC,刚光标位置不会变,原理不明