emacs 26.1 win7里 sdcv无法显示查询结果了,求助高手

 (defun kid-sdcv-to-buffer (&optional input)
      (interactive "P")
      (let ((word (if mark-active
                      (buffer-substring-no-properties (region-beginning) (region-end))
            (current-word nil t))))
        (if input
        (setq word (read-string (format "Search the dictionary for (default %s): " word)
                    nil nil word)))

        (set-buffer (get-buffer-create "*sdcv*"))
        (buffer-disable-undo)
        (erase-buffer)
        (message "searching for %s ..." word)

        (let ((process (start-process  "sdcv" "*sdcv*"  "sdcv" "-n" "--utf8-input" "--utf8-output" word)))
          (set-process-sentinel
           process
           (lambda (process signal)
             (when (memq (process-status process) '(exit signal))
               (unless (string= (buffer-name) "*sdcv*")
                 (setq kid-sdcv-window-configuration (current-window-configuration))
                 (switch-to-buffer-other-window "*sdcv*")
                 (local-set-key (kbd "RET") 'kid-sdcv-to-buffer)
                 (local-set-key (kbd ",") (lambda ()
                                            (interactive)
                        (quit-window t)))) ;; quit-window t 可以关闭窗口并恢复原先窗口布局,但是buffer被kill
               (goto-char (point-min))
           (open-line 1)))))))

我今天早上更新了一版 sdcv.el, 基于 posframe 重构了一下: EmacsWiki: sdcv.el

感谢您的回复,我下了你给的最新的sdcv.el和posframe,并做了以下配置,然后执行sdcv-search-input+,并没有显示结果出来。请帮忙看看哪里出了问题 (require 'sdcv) (setq sdcv-dictionary-complete-list ;; a complete dictionary list '(“KDic11万英汉词典” “懒虫简明英汉词典” “朗道英汉字典5.0” “XDICT英汉辞典” “朗道汉英字典5.0” “XDICT汉英辞典” “懒虫简明汉英词典” “牛津英汉双解美化版” “stardict1.3英汉辞典” “英汉汉英专业词典” “CDICT5英汉辞典” “Jargon” “FOLDOC” “WordNet” ))

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

我的字典目录~/.stardict/dic中有以下字典 image

可以使用 toggle-debug-on-error 命令打开调试模式,再看看执行的时候有没有报错? 我不用windows, 可能没法帮你彻底解决问题

melpa 上也有一个 sdcv,和这个是一样的吗?

Edit:

看了一下是一样的。

您为什么不把包托管到 github 或者 gitlab 上呢?年初 MELPA 把所有 wiki 上的包都下架了,因为有风险。这样 melpa 上就不会更新这个包了。我刚才看了一下还是 2月份的状态。

您是在 Windows 上自己编译的 sdcv 吗?最近想换个词典,因为有道词典在 pdumper 上用不了,所以想考虑一下 sdcv。

@zhixing 我看你也尝试过在 msys2 上编译,怎么样?最后编译成功了吗?

@zijianyue 请务必使用 Markdown 语法,尤其是代码块。

我之前维护过sdcv.el 现在MELPA上的版本应该是我的分支 https://github.com/stardiviner/sdcv.el 也推荐你试试我的另外一个包: https://github.com/stardiviner/goldendict.el

这个 Windows 下也能用吗?

Windows下不知道,这个包需要sdcv命令支持。goldendict也是通过命令支持的。

谢谢,我现在的痛点是 sdcv 或者 goldendict 命令行在 Windows 下没有二进制版本

话说Windows下不是有很多词典程序支持剪贴板取词么?什么有道词典,goldendict在windows下应该也支持剪贴板取词。你直接region取词,然后词典程序快捷键翻译不就行了?

那样的话就不能在emacs 中显示了,也不能 thing-at-point 了

有点小曲折,不过编译成功了。学习到的经验教训就是不可以用 mingw 动态编译 c++ 程序,运行时会出错的。最后用 msys 编译成功。

image

@manateelazycat posframe 很酷,但是sdcv.el查词结果在Windows上显示乱码:

我在命令中加了 -0 参数仍然不行,还是乱码,问题可能出在 start-process 那里。

你直接在emacs里面执行下面的代码 (sdcv-search-witch-dictionary “hacker” sdcv-dictionary-simple-list)

看一看输出是不是乱码?

  1. 如果默认执行就乱码,可能就是你emacs编码配置的问题
  2. 如果不乱码,只是弹出 tooltip 乱码,可能是要设置一下 start-process 的编码

是在msys2里编译的sdcv吗?sdcv版本号是?

是 msys2 编译的,版本0.5.2(最新版),git版本应该也可以编译,我没试

你用不用 mdx 词典?发现有这帖,虽然我没用过。

多谢推荐,我已经搞定 sdcv 了,用起来不错,查词挺快,海量词典。