过年有时间,折腾了好几天 sdcv ,目的是想在 windows 上用 ecdict
未果,困难重重。论坛的贴子,搜索引擎的文章,能看的都看了,还是败下阵来,发个贴看看有没有人解决成功过
环境 : windows 11
一通浏览下来,这篇 blog 比较接近目的:
但是文中的编译好的 sdcv 的链接已经失效,所以我尝试着按网上的文章在 cygwin 下编译,非常不顺利,各种包安装重试了N回,就是通不过
然后没办法又找到了一个 msys2 下已经编译好的 sdcv 版本
https://packages.msys2.org/base/mingw-w64-sdcv
这回 windows cmd 能跑了,但是输出时中文释义都是空的,类似
Enter word or phrase: test
Found 1 items, similar to test.
–>€
–>test
*[test] -K5
n. , , , €, €,
vt. , ,
vi. ,
[€] tested, testing, tests
( 575/627)
ecdict 也放到 .startdic/dic 目录下了
有这么4个文件
stardict-ecdict-2.4.2.dict
stardict-ecdict-2.4.2.idx
stardict-ecdict-2.4.2.idx.oft
stardict-ecdict-2.4.2.ifo
但是 sdcv -l 列出的结果是个空行
脑子有点不转了,请指教
问题:
1、 有没有不借助 cygwin msys2 就能原生在 windows 下运行的 sdcv
理论它是 c++ 写的? 那为什么没见到直接在 windows 下编译的例子呢
2、sdcv 直接指定查询字典的目录的语法是怎样的,按 help 里 = 号后跟个目录没成功
3、sdcv.el 能直接去读取查询 stardict 的词典库吗,这样就能跳过 sdcv 编译的问题,看这个贴子的意思是可以?
4、paw.el 应用到了 ecdict 的 sql 库,要是有高手能写一个直接查询 ecdict sql库的插件就好了,返回查词结果
感谢大佬指路
又折腾了一天,终于在假期末尾用上了
设置了朗道和ecdict,朗道查不到词时没反馈(经常查不到),查到时它的弹窗也不好看(如图),还会报个错
uncompressing langdao-ec-gb.dict.dz...done
You can’t save this buffer because compression program is not defined
因此我用了两下就不用了,只用 ecdict
谢谢!节前论坛有人问过年玩什么,别人不知道,我是就干了这么一件事儿
弹窗可以改用别的插件的.我因为一直在terminal下用emacs.所以用了个对terminal支持比较好的弹窗.
以下代码你把最后一行(popup-tip def)
改成用其他弹窗就可以了,
(defun my-dict-simple-definition ()
"Show dictionary lookup in popup."
(interactive)
(let* ((word (my-dict-prompt-input))
(def (my-dict-search-detail word my-dict-simple my-dict-simple-cache)))
(when def
(popup-tip def))))
感谢感谢,搜索时有点不得要领,问了ai 说
popup.el:这是一个简单的弹窗库,提供了基本的弹窗功能,适用于菜单、提示和选择等场景。
helm:虽然 Helm 主要是一个增强的选择和搜索框,但它也提供了弹窗功能,可以在弹窗中显示候选项并进行选择。
ivy:类似于 Helm,Ivy 是一个用于增强选择和搜索的框架,提供了弹窗式的界面,用户可以在其中快速选择。
company-mode:这是一个用于代码补全的包,提供了弹窗式的补全建议,适用于多种编程语言。
which-key:这个包在你按下键盘组合时会弹出一个窗口,显示可用的键绑定,帮助用户记忆和使用快捷键。
popup-echo:这是一个简单的弹窗库,专注于在回显区域显示信息
看介绍第1个应该就是这个popup吧,反而其他的用于选择或补全的,popup-echo没在melpa看到,不知是不是AI编的
能想到的是懒猫的popweb,但似乎它是弹出网页的,这种纯字符的结果不知如何设置
BTW:大佬的 mybigword 好用
update: 找到一个有希望的
也许posframe? 我没用过,不过reddit上很多人用.
嗯嗯,这个我也搜索到了,然后显示也挺好,就是有个问题,不知道怎么退出这个弹窗,研究中
(defvar my-dict-posframe-buffer " *Dictionary Definition*"
"Buffer name for displaying dictionary definitions in posframe.")
(defun my-dict-simple-definition ()
"Show dictionary lookup in posframe."
(interactive)
(let* ((word (my-dict-prompt-input))
(def (my-dict-search-detail word my-dict-simple my-dict-simple-cache)))
(when def
(with-current-buffer (get-buffer-create my-dict-posframe-buffer)
(erase-buffer) ;; 清空缓冲区
(insert def)) ;; 插入定义内容
(when (posframe-workable-p)
(posframe-show my-dict-posframe-buffer
:position (point)
:font "Monospace-18"
)))))
gpt改了几轮都是按q退出时,q输入到原buffer了,而不是在弹窗处响应,搜索办法中