麻烦大佬再帮忙观察一下。我现在使用的就是 macOS 词典,但好像没什么问题。 你在macOS 的词典里直接查一下单词看看是什么格式的。可能是我的正则表达式查询有坑。哪里出错了。
我没有自定义词典,原生的。系统还停留在Big Sur就是了,不知道词典内核有没有变化。我只知道以前我能用osx-dictionary.el,现在不能用了。
我更新到PR#57后,性能一下子就下来了。刚才退回原来版本好一些。
我再对比看看。
真是一个悲伤的消息。麻烦大佬对比出哪里出了问题。
性能是有问题,mark以后经常要很久才会render
python 那边我帮不上啊…
这个“很久”的描述很准确。
我准备花点时间学学 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 没有生效。
我后来又观察了一下,确实有点儿迷,感觉有些已经加载过了,但又没加载。 好在查过的词都进了.json文件了,后面修复了还是可以直接用的。
嗯,这两个地方看懂了,明白一些了。我看了好几个教程,没有见到两个并用的,于是没看懂。# 主要是我太菜。
更新一下,修复了 dictionary.json 没有生效 的问题。
但在生词较多的情况下,还是比较慢。
优秀啊。
话说:我们要不要先把macOS字典的pr放回分支,然后看看怎么优化?我今天一直checkout 在之前的commit才能好好使用。
你先试试最新的这个提交。
我研究一下怎么优化。
在试了。意外发现mark之后重渲染速度没问题了。
发了个小修复,主要 recenter功能少了个 “i”。
使用了一小时,修复后的 dictionary.json 网络查询词累积到一定量后,快到令人颤抖。
看了一眼,dictionary.json里有六千多行。后面一万行后我再来更新一下。
更新:其实这个dictonary.json文件可以用作复习材料,尤其是高级词汇,以及很多地名、人名的绝佳材料。
对接类anki的工具,学习复习好帮手。