読者です 読者をやめる 読者になる 読者になる

ポクポク

ポクッとしてツナッ

rubyでreplace-regionするelisp(4)

前のrubyでreplace-regionするやつを修正して、ちょこちょこ変更してるからgistからふつうのrepositoryに移動させた。

https://github.com/pokutuna/replace-region-by-ruby.el

日本語使えなかったのでmagick comment入れて使えるようにしたり、rubyのコードにエラーがあった場合はリージョンそのままにしてエラーメッセージ出したり使い勝手を向上させた。 (なんか僕のEmacs 24.2.1だとコマンド実行後にリージョンのハイライトは消えるけどリージョン自体は残ってるから続けてM-x rrbrubyしたらすぐやりなおせる、ハイライト付け直すみたいな方法しりたい)

Emacs内でリージョンを tr('あ-ん', 'ア-ン') とかできたりしてめっちゃ便利だと思う。


Lisp、ぜんぜん悟りが降ってこないけどおもしろい。特にelispはダイナミックスコープになってる。(schemeとかはレキシカルらしい)

(defun hoge (func)
  (let ((str "in hoge")) ; strに代入しても意味無さそうに見えるけど…
    (funcall func)))

(let ((str "in let"))
  (funcall (lambda () str))   ; => "in let"
  (hoge (lambda () str)))     ; => "in hoge"

みたいな感じになっててハマる原因になりそうだけど、組み込みの関数が参照してる変数と同名のローカル変数を作ればそのスコープだけ値すり替えたりするのが簡単にできる。エディタをいじる用途にはかなりアリな感じでおもしろい。