smart-compileの設定
Emacsのsmart-compileの設定でハマったこと
smart-compile
Emacsで書いたRubyのコードをそのまま Emacsから実行できるものです。 Rubyに限らず他の言語も可能です。
手順
1.smart-compile.elを こちらからDLする、あるいはpackage.elでインストール
(~/.emacs.d/elpaに配置されます)
2.smart-compile.elをloat-pathが通っているディレクトリ(~/.emacs.d/elisp等)に置く
3.人によってEmacsのelの管理は違うと思いますが、
私の場合、~/.emcs.d/initsというディレクトリを作り、そこにパッケージごとの
設定ファイル(71-ruby.el等)を配置し、init-loaderで読み込むという方式にしています。
という訳で、設定ファイル(~/.emacs等)に以下の記述を追加します。
(require 'smart-compile) (global-set-key (kbd "C-x c") 'smart-compile) (global-set-key (kbd "C-x C-x") (kbd "C-x c C-m"))
4.smart-compileのデフォルトではRubyのソースをsyntax checkするだけに
なっているので、smart-compile.elを修正します。
64行目あたりの
("\\.rb\\'" . "ruby -cw %f")
を("\\.rb\\'" . "ruby %f")
に修正し、
直接実行できるようにします。
5.以上で設定は完了です。C-x C-x
を実行すると、即実行できます。
のはずだったんですが、C-x C-x
を実行しても、ruby -cw
が実行されてしまい、
syntax checkだけで終わってしまう・・・。
思考錯誤した結果、以下のように設定ファイルを変更しました。
(require 'smart-compile) (setq smart-compile-alist (append '(("\\.rb$" . "ruby %f")) smart-compile-alist)) (global-set-key (kbd "C-x c") 'smart-compile) (global-set-key (kbd "C-x C-x") (kbd "C-x c C-m"))