分享:跳转并翻译,结合 avy 和有道翻译

分享一个简单但是有用的函数:

(defun et/avy-youdao-dictionary ()
  "用有道翻译指定位置的词,并返回。跳转由 avy 实现。"
  (interactive)
  (save-excursion
    (call-interactively #'avy-goto-char)
    (youdao-dictionary-search-at-point-tooltip)))

需要 youdao-dictionary 以及 avy

美中不足的是需要按任意键返回。

1 个赞

youdao-dictionary--pos-tip 需要按任意一个键来关闭 tooltip,背后的理由我已经不记得了,可以试试直接用 pos-tip-show

(defun et/avy-youdao-dictionary ()
  "用有道翻译指定位置的词,并返回。跳转由 avy 实现。"
  (interactive)
  (save-excursion
    (call-interactively #'avy-goto-char)
    (--when-let (word-at-point)
      (pos-tip-show (youdao-dictionary--format-result it)))))
1 个赞

在 org-mode 中测试不成功,可以看到 minibuffer 中的提示是调用了查词,但是 pos-tip 不显示。

我这边没问题。

(emacs-version)
     => "GNU Emacs 25.2.1 (x86_64-apple-darwin16.7.0, Carbon Version 157 AppKit 1504.83)
 of 2017-08-11"

org-version
     => "9.0.9"
1 个赞

我之前用 pos-tip 就有这个问题,后来加上 unwind-protect 后好了,现在还是这个问题,可能是 spacemacs 的 Org layer 加载了太多东西。导致 pos-tip 显示后立马删除了,看起来就好像没有显示一样。

对于我来说是鱼与熊掌不可兼得了,不想额外按键,pos-tip 就闪退;pos-tip 不闪退,就得额外按键。 :joy:

不过也没有什么大不了的,多按一个键也没什么,强迫症害死人。

多谢 @xuchunyang

我这里tooltip显示5秒后自动消失,不需要按键。