(未完成) spacemacs 使用 sdcv
env
wsl
step
总结
此文与 https://eiu.app/emacs-handbook/post/lazycat-emacs.html 配合着看
backgroud
https://github.com/manateelazycat/sdcv
然后,配置后,出了问题,提 issue
https://github.com/manateelazycat/sdcv/issues/7
作者说可能是 popup window 的问题(事后证明不是这个问题),关键,我现在对这个 popup window 不熟悉呀.
后来 按 https://github.com/manateelazycat/lazycat-emacs 来安装成功后, 依然, 也是出现了框框,没有结果.
这就说明, 一定要先在 lazycat-emacs 下解决掉, 才有机会, 迁移到 spacemacs 上来.
那就回头去弄 lazycat-emacs 吧.
(可跳过)可能的问题点:
- ubuntu 在 wsl 中, 所以 mobaxterm xserver 的 x server 会不会过滤掉了信息.
- 在windows下启动 lazycat-emacs 会有效果么?(因为文件路经的问题,后来没有继续尝试)
(可跳过)mobaxterm xserver
windows上完美的X-server服务器软件:MobaXterm
设置成 xserver remote access : full 也没有达到效果.
说明问题不在这里.
去除 load-file */sdcv.el
这种方式, 居然, M-x sdcv-search-pointer+
可以得到 结果.
说明:
- 与 popup window 无关
- 与 load-file */sdcv.el 相关
去 sdcv.el 文件中 debug
通过基本的 (message ***)
去 debug, 依次找到
- sdcv-search-pointer+
- sdcv-search-simple
- sdcv-search-with-dictionary
- sdcv-translate-result
- shell-command-to-string
- format
- sdcv-filter
最后,知道,原理,就是 format 成 string, 把 string 传给 shell-command-to-string 返回 shell 下执行 sdcv 命令的结果.
重点则放在检查 sdcv-translate-result 这个函数上.
因为,之前,我们知道, 如果不加载 load-file */sdcv.el 则有结果,那么,找到 这个情况下的 sdcv.el 文件.
直接去比较这2个 sdcv.el 文件的差异就应该能知道了.
+ (message "sdcv-translate-result word is %s" word)
+ (message "sdcv-translate-result dictionary-list is %s" dictionary-list)
(sdcv-filter
(shell-command-to-string
;; Set LANG environment variable, make sure `shell-command-to-string' can handle CJK character correctly.
- (format "LANG=en_US.UTF-8 %s -x -n %s %s --data-dir=%s"
+ ;; (format "LANG=en_US.UTF-8 %s -x -n %s %s --data-dir=%s"
+ (format "LANG=en_US.UTF-8 %s -n %s %s --data-dir=%s"
最后找到了原因了.
(format "LANG=en_US.UTF-8 %s -x -n %s %s --data-dir=%s"
变成
(format "LANG=en_US.UTF-8 %s -n %s %s --data-dir=%s"
结果就出来了.
其中这个 format 的输出类似于:
LANG=en_US.UTF-8 sdcv -n -u "懒虫简明英汉词典" -u "懒虫简明汉英词典" -u "KDic11万英汉词典" hero --data-dir=~/.stardict/dic
或
LANG=en_US.UTF-8 sdcv -n -u "懒虫简明英汉词典" -u "懒虫简明汉英词典" -u "KDic11万英汉词典" hero --data-dir=/mnt/c/Users/a/wsl/home/v/lazycat-emacs/site-lisp/sdcv-dict
按理说, 上面这些语句,直接放在 bash 下, 是可执行,且有返回的.
(可跳过)emacs下lazycat-emacs 尝试
既然我们在spacemacs中成功了,那么emacs下,也应该可以
这部分,可参看 https://eiu.app/emacs-handbook/post/lazycat-emacs.html
FAQ(已经解决)
启动时,报,文件夹错误
如果说报,文件夹错误: 问题错误地使用文件名而不是ifo文件里的bookname. 正确做法, 在 配置中使用 ifo文件里的bookname
FAQ(未解决)
sdcv 发音
(setq sdcv-say-word t)
- 直接 ssh 运行远程 Emacs 放弃治疗。
- tramp 或者反向穿透回来(讨论:关于远程文件编辑的方式选择 4),用的还是本地电脑的播放系统。