Emacsでの非同期処理は大変 これまでEmacsのGUIアプリをいくつか書いてみて、非同期の処理を何とかしたいと思ったことが deferred.el を書こうと思った動機です。 Emacs Lisp上でコマンドを非同期で処理しようと思うと、コールバックをつなげたり、正しくエラー処理を行うために、かなり長いコードを書く必要があります。また、最近はWebにアクセスする機会も多いのですが、これも非同期で処理するとなるとまた面倒です。非同期をやめて、ブロックする(Emacs全体が固まる)コードで書けば楽なのですが、それではユーザー体験としてマイナスになってしまいます。 特に大変だったのが cacoo.el を作っているときでした。 cacoo.el では、以下のような流れで画像を表示します。 Webから画像取得(wget) 画像サイズ取得(identify) 画像リサイズ(convert) 表示