hitode909の日記

以前はプログラミング日記でしたが、今は子育て日記です

非同期に辞書を引く.el

カーソル位置の単語を辞書で引くemacs lispを使っていたのだけど,辞書を呼ぶPythonのスクリプトが遅くて,辞書を引いてる間Emacsがブロックして,不快だった.
deferred.elを使ってスクリプトを呼ぶようにした.
いろいろ機能が減って,実行が非同期になった.

;; 非同期に辞書を引く
;;
;; (+ "http://d.hatena.ne.jp/a666666/20100529/1275138722"
;;    "http://sakito.jp/mac/dictionary.html"
;;    "http://d.hatena.ne.jp/tomoya/20091218/1261138091"
;;    "http://d.hatena.ne.jp/tomoya/20100103/1262482873")

(require 'cl)
(require 'deferred)

(defvar dict-bin "~/bin/dict.py"
  "dict 実行ファイルのパス")

(defun my-dictionary ()
  (interactive)
  (lexical-let ((current-word (thing-at-point 'word)))
    (when current-word
        (deferred:$
          (deferred:process dict-bin current-word)
          (deferred:nextc it
            (lambda (res) (popup-tip (concat current-word "\n" res))))))))


非同期に辞書を引く — Gist