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

麻烦大佬再帮忙观察一下。我现在使用的就是 macOS 词典,但好像没什么问题。 你在macOS 的词典里直接查一下单词看看是什么格式的。可能是我的正则表达式查询有坑。哪里出错了。

我没有自定义词典,原生的。系统还停留在Big Sur就是了,不知道词典内核有没有变化。我只知道以前我能用osx-dictionary.el,现在不能用了。

我更新到PR#57后,性能一下子就下来了。刚才退回原来版本好一些。

我再对比看看。

真是一个悲伤的消息。麻烦大佬对比出哪里出了问题。

性能是有问题,mark以后经常要很久才会render

python 那边我帮不上啊…

这个“很久”的描述很准确。

@zqso

奇怪了。我自测了一阵子。 只要能够在sdcv 和 mac 本地词典里搜索到的词语,都相当的快。

我准备花点时间学学 python,另一半没参与,真是木得灵魂啊。:shrug:

急需大佬的助攻。

我发现我这边查词还挺快的,但是mark-word-known 比较慢。

现在 mark-word-unknown 后, render overlay 非常慢, 第一版是秒出, 现在基本上要2秒才能 render overlay

@ginqi7 dictionary.json机制的引入,后续渲染真是越来越快秒出。妙啊。

另外:python小白请教一下.py里 info[1][0] 两个方括号各代表了啥么? 以及sentence是字面意义是的句子,还是整个 buffer 的内容?

# dispatch message received from Emacs.
async def on_message(message):
    info = json.loads(message)
    cmd = info[1][0].strip()
    if cmd == "render":
        sentence = info[1][1]         # what's sentence? Square brackets stand for?
        buffer_name = info[1][3]
        await render(sentence, buffer_name)
        await run_and_log("(dictionary-overlay-refresh-overlays)")
    elif cmd == "jump_next_unknown_word":

info 是一个二维list,info[1][0] 表示第二行第一个元素。

sentence 直接表示的是整个buffer,最开始的设计里是按照行来渲染的。所以用了 sentence 这个命名方式。

我发现新版更新的代码有个bug,漏了return 导致 dictionary.json 没有生效。 :rofl: :rofl:

我后来又观察了一下,确实有点儿迷,感觉有些已经加载过了,但又没加载。 好在查过的词都进了.json文件了,后面修复了还是可以直接用的。

嗯,这两个地方看懂了,明白一些了。我看了好几个教程,没有见到两个并用的,于是没看懂。# 主要是我太菜。

更新一下,修复了 dictionary.json 没有生效 的问题。

但在生词较多的情况下,还是比较慢。

优秀啊。

话说:我们要不要先把macOS字典的pr放回分支,然后看看怎么优化?我今天一直checkout 在之前的commit才能好好使用。

你先试试最新的这个提交。

我研究一下怎么优化。

在试了。意外发现mark之后重渲染速度没问题了。 :partying_face:

发了个小修复,主要 recenter功能少了个 “i”。

@ginqi7

使用了一小时,修复后的 dictionary.json 网络查询词累积到一定量后,快到令人颤抖。

看了一眼,dictionary.json里有六千多行。后面一万行后我再来更新一下。

image

更新:其实这个dictonary.json文件可以用作复习材料,尤其是高级词汇,以及很多地名、人名的绝佳材料。

对接类anki的工具,学习复习好帮手。