[求助]关于纯lisp的stardict调用问题

最近发现了emacswiki上的sdcv的纯lisp实现 https://www.emacswiki.org/emacs/stardict.el 这样就可以在服务器没有sdcv软件的情况下使用sdcv了 但是这个el仅提供了(stardict-lookup dict “apple”)接口 我试了很多方法让他能不能在选中区绑定快捷键然后调用这个函数 但是都失败了 好像这个函数有点小问题 大家有没有什么好的方法可以在文本选中区然后正确调用这个函数

region-bounds获取选区边界位置,传给buffer-substring获取选区文本,再把结果传给stardict-lookup应该就差不多了

1 个赞

大佬可以详细一点吗

之前我就是这样,但是一直没有成功 :sob:

(defun stardict-translate-region ()
  (interactive)
  (when (region-active-p)
    (let* ((beg (region-beginning))
          (end (region-end))
          (string (buffer-substring-no-properties beg end)))
      ;; (message string)  
      (stardict-lookup dict string))))

dict这个变量需要提前定义好,先参照文件开头的注释测试下,然后应该就没问题了

谢谢大佬, 但是我试了一下,使用stardict-translate-region没有反应,我的dict变量设置好了,并且直接在lisp模式使用(stardict-lookup dict “apple”)也可以正常弹出minibuffer,但是stardict-translate-region还是没反应

可能是应该先把 stardict-lookup的反回值先保存然后用message输出?

(defun stardict-translate-region ()
  (interactive)
  (when (region-active-p)
    (let* ((beg (region-beginning))
           (end (region-end))
           (string (buffer-substring-no-properties beg end))
           (result (stardict-lookup dict string)))
(message result))))
1 个赞

陈斌大佬的fork可以参考下,弹出一个buffer显示结果 https://github.com/redguardtoo/emacs.d/blob/master/site-lisp/stardict/stardict.el

2 个赞

试了一下,很好用

感谢大佬,您这段代码是我试过唯一成功的 感谢!