我是怎么用Emacs学习英文的?

请问有人在windows 10 下成功在emacs中使用星际译王吗?我安装了一个编译好的版本,但emacs发现不了这个翻译软件。

可以看看我的 在emacs中用星际词霸学习英文 。windows的命令行参数和linux的有点不一样,改改老王的sdcv.el。

4 个赞

多谢@geogealbert,我按照你的方法可以在Mingw64 中成功编译sdcv.exe ,添加到系统Path后, CMD下也可以发现sdcv --version 的版本号。但是在Emacs中使用时还是没找到sdcv,老是提示Operatable program or batch file 。 配置是用的猫哥的配置,在mac 和linux都是正常的。

把sdcv.el里面的命令拿到命令行试试。

不知道如何在命令行执行这些命令,能否分享下你的sdcv.el 是怎么设置的? 我进行了以下设置,在emacs中执行sdcv-search-input 后,Messages buffer会提示 Reached last dictionary.

(setq sdcv-program "d:\\Dev_Tools\\emacs-28.0.50\\bin\\sdcv.exe")
(setq sdcv-dictionary-data-dir "c:\\home\\Lazycat-emacs\\site-lisp\\sdcv-dict")

难道是没法识别字典?

(shell-command-to-string "E:\\emacs\\bin\\sdcv.exe -n --data-dir=\"e:\\home\\albert\\stardict\" \"test\"") 类似这样,在emacs里试试,调调参数,看看报错吗。

diff了一下我改的地方。

1 个赞

按照你的方法修改sdcv.el 可以正常工作了,感谢。 :+1:

还有一点要注意:windows下无法识别mac和linux的词库,不知道是什么原因?重新下的字典才能识别。

没有mac。没在linux下用过星际词霸。以后有时间试试。

我也遇到了

我终端是st

在所有company补全中文都有这个问题

我觉得不是终端的毛病,是Emacs 终端版本的毛病

sdcv.el 的代码其实是没有问题的。问题似乎在于 sdcv 命令行参数不把 '~‘ 理解为家目录,如果变量 sdcv-dictionary-data-dir 的值包含 '~’ 的话,得这么干

(setq sdcv-dictionary-data-dir (file-truename “~/.stardict/dic”))

我测试过了,如果不按照楼上修改sdcv.el 就没法找到字典。 我是用的绝对路径,并没有使用“~” 这样的相对路径。你这边可以正常使用?

经测试:(setq sdcv-dictionary-data-dir (file-truename “~/.stardict/dic”)) 确实是解决了路径问题,这样就不用绝对路径了。 但是还是解决不了无法识别字典的问题

1 个赞

楼主的这些插件真的是天秀。

windows10整了半天也没搞懂为啥识别不了词典,不过使用的话下面加一个advice就行了,默认用sdcv-dictionary-simple-list的一个字典(参考@georgealbert的方法),比源码新增的-0 -1 两个flag是强制uft8输出,如果有乱码的话可以试试加上。

(defun +sdcv-translate-result (word dictionary-list)
  "Call sdcv to search word in dictionary list, return filtered
string of results."
  (sdcv-filter
   (shell-command-to-string
    (format "env LANG=%s %s -n %s -0 -1 --data-dir=%s --use-dict=%s"
            sdcv-env-lang
            sdcv-program
            (format "\"%s\"" word)
            sdcv-dictionary-data-dir
			(car sdcv-dictionary-simple-list)))))

(advice-add #'sdcv-translate-result :override #'+sdcv-translate-result)
1 个赞

sdcv.el 的这个PR,好像初步解决了windows上乱码的问题。建议使用的时候设置好 default-process-coding-system,例如

 (setq default-process-coding-system '(chinese-gbk . chinese-gbk)) ;;windows中文locale
 (setq default-process-coding-system '(utf-8 . utf-8)) ;;Mac 或Linux

请问下载的字典是否要解压后在放入目录?

需要解压后放入目录

请问我是哪里出错了?就是找不到在字典。

你把词典解压拷贝到目录 /usr/share/stardict/dict 并安装 sdcv 了吗?

安装了,从你git下载安装的,你看那个check命令都能运行起来。