load-fileのキーバインド作った
キーバインドで一発再読み込みができるものがどこかにあるだろうと思ったらどこにもなかったから作ってみた。load-fileだから使う人がいるのか微妙。eval-bufferバージョンはエラーが出るから、いつかはエラーを解決して作りたいと思う。たまに動いてくれないときがあるかも。
やり方(その1)
↓のコードをinit.elとか、.emacsなどの貼りたい場所に貼る。
(define-key global-map (kbd "C-8") (lambda () (interactive) (save-buffer) (load-file buffer-file-name) (message "load %S succeeded!" (current-buffer))))
貼りつけた後は、C-x C-sで保存 (← 「Ctrl+x を押して、 Ctrl+sを押す」)
↓
M-x load-file RET RET (←「RET」 は エンターキーのこと。 )
何かエラーが出ずに読み込めればctrl+8で使用することができます。
load-fileはバッファのファイル名を入れない場合(「エンターキーを2回)だとカレントバッファを読み込みます。現在、選択中のバッファがカレントバッファです。読み込みたいバッファをクリックで選択しておかないとエンターキー二回で読み込めません。
キーバインドは「Ctrl+8」とやってますが、これはどこに設定すればいいかわからなかったためとりあえずこうしてます(汗)これに至るまでにcurrent-bufferとかeval-bufferとかやったけどうまくいかなかった。
save-bufferを入れなくてもいいけど、毎回保存したほうが終了するとき「保存しますか?」と聞かれずに済むと思ったので入れた。
やり方(その2)
diskで作ったほうが、対応できる状況が多いからそっちを導入すると幸せになれるかも。
install-elispが入っている前提で書くと、
M-x install-elisp-from-emacswiki RET
↓
disk と入力してdisk.elをクリック
↓
(disk.elバッファ内で)C-c C-C
↓
インストール完了後、↓のコードをinit.elとか、.emacsとか貼りたい場所に貼る。
(require 'disk) (define-key global-map (kbd "C-8") (lambda () (interactive) (disk) (load-file buffer-file-name) (message "load %S succeeded!" (current-buffer))))
保存しようとしたらいろいろ聞いてくるのがめんどくさいので,入れないほうがいいと思う。
調べた関数
save-buffer; buffer-file-nameがなくてもカレントバッファをセーブしてくれる様子。
disk; これはファイルを開く/保存/読み込み直しを現在のファイルの状況に応じて選択してくれるありがたい機能を持った関数。 install-elisp-from-emacswikiから使えるやつで
・現在のファイルが編集中→保存
・保存されたファイルが変更された→読み込み直し
・ファイルを編集中で保存されたファイルも変更された→警告
・ファイルバッファ以外→ファイルを開く
ということができます。
eval-buffer; これが入ったキーバインド作って実行したら、Invalid functionが出てキーバインドの中に組み込めない。どういうことなの?
buffer-file-name 何も設定しなければカレントバッファの絶対パスを返してくれる。
message; エコー領域に文字列を表示してくれます。引数がformat関数の「~S」と違い、「%S」などで引数を取ります。
load-path; current-bufferでバッファの名前入れたらダメだった。これはバッファのパスじゃないと悪いみたいだ。
参考リンク
38.3 エコー領域
http://www.geocities.co.jp/SiliconValley-Bay/9285/ELISP-JA/elisp_622.html
11.8 関数セルの内容の参照
http://www.geocities.co.jp/SiliconValley-Bay/9285/ELISP-JA/elisp_167.html
リージョンがアクティブであればeval-region、アクティブでなければeval-buffe
http://d.hatena.ne.jp/MYS/20091119/1258640222
gan2 の Ruby 勉強日記-.emacs を再読み込みする方法-
http://d.hatena.ne.jp/gan2/20070704/1183522644
英語とプログラミング気まぐれ日記 -.emacs を再読み込みする方法-
http://d.hatena.ne.jp/BigFatCat/20070724/1185258568
24.2 バッファの保存 -save-bufferについて-
http://www.fan.gr.jp/~ring/doc/elisp_20/elisp_25.html#SEC372
26.2 カレントバッファ
http://www.geocities.co.jp/SiliconValley-Bay/9285/ELISP-JA/elisp_404.html
26.4 バッファファイル名 -buffer-file-nameについて-
http://www.geocities.co.jp/SiliconValley-Bay/9285/ELISP-JA/elisp_406.html
24.1.4 ファイルを開く/保存/読み込み直しを簡単に ― disk (2003/09/21)
http://www.bookshelf.jp/soft/meadow_24.html#SEC257