Hatena::ブログ(Diary)

hchbaw記

2009-11-19

S式評価のためのちっちゃい拡張を集めた eval-sexp-fu.el というのを創りました。評価している式をキラッとさせたりします。

主に、impromptu のように、評価している式をキラッとさせたくって作成しました。こちらで書いた、 eval-last-sexp のバリエーションが欲しい - hchbaw記 eval-last-sexp コマンドのバリエーションも入れちゃいました。

動いている感じはこんなです。(アニメーションgifです)

http://cloud.github.com/downloads/hchbaw/eval-sexp-fu.el/evalsexpfu-mini.gif

ソースコードはこちら

http://github.com/hchbaw/eval-sexp-fu.el

http://www.emacswiki.org/emacs/eval-sexp-fu.el

インストールと設定です。

あらかじめ、 highlight.el が必要となります。

(Emacs 上で)
M-x install-elisp-from-emacs-wiki highlight.el
M-x install-elisp-from-emacs-wiki eval-sexp-fu.el

読み込みと、設定です。

(require 'eval-sexp-fu)
(turn-on-eval-sexp-fu-flash-mode) ;; キラっとさせます。


;; 以下では、`eval-last-sexp' に対するバリエーションとなるようなコマンドに
;; キーバインドを割り当てています。
(define-key lisp-interaction-mode-map (kbd "s-c s-e") 'eval-sexp-fu-eval-sexp-inner-list)
(define-key lisp-interaction-mode-map (kbd "s-c s-c s-e") 'eval-sexp-fu-eval-sexp-inner-sexp)
(define-key emacs-lisp-mode-map (kbd "s-c s-e") 'eval-sexp-fu-eval-sexp-inner-list)
(define-key emacs-lisp-mode-map (kbd "s-c s-c s-e") 'eval-sexp-fu-eval-sexp-inner-sexp)

`eval-sexp-fu-flash-error-face' で指定されるフェイスはエラーがあった時用です。nil の場合にはエラーの時にエラー用にキラッとしないようになります。

使えるようになるインタラクティブコマンド

  • `eval-sexp-fu-flash-mode' (キラッとさせるマイナーモードをトグルします。有効になっていると `eval-last-sexp' のようなコマンドを実行すると、評価の対象となっている式をキラッとさせます。具体的には `eval-last-sexp'、 `eval-defun' そして `eek-eval-last-sexp' 等です。)
  • `turn-on-eval-sexp-fu-flash-mode' (陽にキラッとさせるマイナーモードをオンにします)
  • `eval-sexp-fu-eval-sexp-inner-list' (ポイント位置のリストを S 式として評価します。emacs-lisp 用コマンドです)
  • `eval-sexp-fu-eval-sexp-inner-sexp' (ポイント位置の S 式を評価します。emacs-lisp 用コマンドです)

動作例

長〜い実行例はこちらです。(130 秒くらい)

http://wiki.github.com/hchbaw/eval-sexp-fu.el/longversionofthedemo

`-inner-' がつくコマンドでは、自分でもいったいどこを評価したがっているの?という気持になっちゃった。そんな向きに、目をこらしてじっくりご覧いただくとわかりやすいのかもしれません (^^;


さて、

Emacs Lisp の醍醐味の一つに、動的な開発実行環境を挙げることができると思います。動的というのは no title 等ですね。(こちらは scheme ベースのようです。) コーディング風景自体がアートしちゃっています。すごい☆

試してみると、キーバインド "^ " がカーソル付近の式をリスナーに送るコマンドに割り当てられているようで、実行してみるとその式をわかりやすくキラッとハイライトしてくれます。

似たようなフィーリングは Emacs にあってもいいんじゃないかな、正直羨ましいなっ、と思って書いてみました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/hchbaw/20091119/1258641758
Connection: close