maeshimaの日記

メモ書きです

lisp

キーバインドを設定する関数 define-key と global-set-key の違い

define-key global-map global-set-key global-set-keyは単にdefind-keyをラップしているとのこと。この二つに大きな差はないらしい。何がグローバルセットキー`の違いは`と`を定義キーのグローバルマップは、`Emacsで

elispの関数

やさしいEmacs-Lisp講座の第三章に出てくる関数をざっとまとめたメモ。 移動境界の検査 bobp ポイントがバッファ先頭にあればt,なければnilを返す eobp ポイントがバッファ末尾にあればt,なければnilを返す bolp ポイントが行頭にあればt,なければnilを返す …

マーク

C-SPCで付ける印。GNU Emacsマニュアル: マークとリージョン mark-active マークがactiveなら(置いてあったらってことかな?) nil 以外を返す

call-interactively

interactiveな関数を呼ぶ関数 (call-interactively 'rgrep)

関数の定義を調べたいときには

M-x apropos としてから関数名を入れる。忘れがちなのでメモ

ナローイング

一つのバッファの移動可能な領域を制限する機能。 narrow-to-region 編集可能領域を位置1から位置2の間の領域に制限する。 (narrow-to-region 位置1 位置2) widen narrow-to-regionで設定したナローイングを解除する。 save-restriction 現在設定されている…

M-:

作成した関数を呼び出して、その戻り値を知りたいときに使う。 (hoge) のようにS式で実行する

if

想像してたのと少し挙動が違ったのでメモ。式がnil以外で合った場合にform1、nilでない場合にはform2〜formnを全て評価する。ifの値は最後に評価したformの値になる。 (if 式 form1 form2 form3 ... formn)

match-beginning, match-end

re-search-forward等の検索関数を使った後に、マッチしたポイントに移動するときに使う。 (match-beginning グループ番号) (match-end グループ番号) グループ番号には、\(\)でくくった何個目かという数値を指定する。 マッチするモノがない場合は nil 0 を…

re-search-forward

バッファ内の文字列を正規表現を使って検索する関数 (re-search-forward 正規表現 &optional 限界 エラー回避 回数) 限界は、指定しない場合はバッファの終わりまで エラー回避にtを与えると、正規表現にマッチしなかったときにエラーを出さずにnilを返すよ…

make-keymap

下記のようなシンボルとベクタのリストを返す関数だそうな。 (keymap [nil nil ... nil]) ベクタは一次元の配列のこと。

S式の実行方法その2

S式の実行方法 - maeshimaの日記に追加。ファイルのS式を実行する方法。 M-x load-file バッファを開いて M-x eval-current-buffer

S式の実行方法

超初歩の復習。 C-j 直前のS式を実行してバッファ中に結果を表示 C-x C-e カーソル直前の括弧で囲まれたS式を評価してミニバッファに結果を表示 C-M-x カーソル位置か、それ以前にある行頭で始まるS式を評価して、ミニバッファに結果を表示 C-x C-eはあんま…

rinariコードリーディング rinari-rake

一年弱ぶりに再開。interactiveの引数"P"が気になったので調べた。 (defun rinari-rake (&optional task edit-cmd-args) "Tab completion selection of a rake task to execute with the output dumped to a compilation buffer allowing jumping between er…

defgroupとdefcustom

GNU Emacs Lispリファレンスマニュアル: カスタマイズ定義の書き方「M-x customize とかでカスタマイズできる値を、defcustomで定義して、複数のdefcustomをdefgroupでまとめる」という理解をした。

defadvice

特定の関数の実行前、実行後に呼ばれるコールバックを定義する関数。 ad-do-it 関数の元定義を実行する場所を示すための特別なシンボル ad-return-value 関数の戻り値を表す変数 activate functionに対するアドバイスをただちに活性にする

make-local-variable

バッファローカルな変数を定義するのに使う。バッファローカルな変数は、該当バッファがカレントバッファな時だけ バッファローカルな束縛を作る普通の方法は、 make-loca-variableです。メジャーモードのコマンドは典型的にこれを使います。これはカレント…

rinariコードリーディング rinari-root

143-151行。default-directory(カレントディレクトリ?)から始めてconfig/environment.rbが見つかるまでディレクトリを上に上がって調べてる。 (defun rinari-root (&optional dir home) (or dir (setq dir default-directory)) (if (file-exists-p (expand-…

quote

(quote hoge) と 'hoge は一緒。記号型を返す。hogeだけだとhogeを評価した結果がかえってしまうので、(set hoge 1)とかはうまく実行されない。

nil

lispのnilには nilという名前のシンボル falseの代わり 空リスト の三つの意味がある。そういえばlispには真を表すtはあったけどfalse的なものは無かった気がする。

rinariコードリーディング 1 - 100行くらい

elispの勉強と、railsコーディングの効率化を目的としてrinariのコードを読んでいきたいと思います。rinari.el自体は728行とたいしたボリュームではないのですが、lisp超初心者なので全部読むには時間がかかると思います。一日三十分くらいでできれば毎日少…

letとlet*の違い

(setq foo 1) (let ((foo 2) (bar foo)) ...) この時のbarは1 (setq foo 1) (let* ((foo 2) (bar foo)) ...) この時は2。初期値設定時に直前の定義が使えるか使えないかがletとlet*の違い

defvarとdefconstの違い

defvarとdefconstは基本的に同じだが、変数を初期化するときにその変数に既に値が設定されていた場合の挙動が違う。その場合、defvarは設定せずにdefconstは設定する。GNU Emacs Lispリファレンスマニュアル: Defining Variables defvarとsetqの違い - maesh…