編集中のバッファ中のGroovyコードをGroovyServで実行するコマンド。
(defvar groovy-command "groovyclient %f" "groovy or compatible command. %f means buffer-file") (setq groovy-command-line nil) (defun groovy-execute-argument() (if (null groovy-command-line) (setq groovy-command-line groovy-command)) (setq groovy-command-line (read-string "Groovy command: " groovy-command-line)) (list groovy-command-line)) (defun groovy-execute-buffer-file (arg) "Execute the groovy code of this buffer." (interactive (groovy-execute-argument)) (save-some-buffers) (shell-command (if (string-match "%f" groovy-command-line) (replace-match (buffer-file-name) t t groovy-command-line nil) groovy-command-line))) (add-hook 'groovy-mode-hook (lambda () (define-key groovy-mode-map "\C-cm" 'groovy-execute-buffer-file))) (setq groovy-command "/tool/groovyserv-0.4/bin/groovyclient %f")
groovy-mode-hookにC-c mで引っ掛けてます。groovy-modeは各自でご用意を。
ちなみにこれは別にGroovyServに限らない(groovyコマンドを結びつけておけばいい)し、groovyに限る訳ですらもありません。
こういう機能ってひょっとしてすでにEmacsにある気もするが、ruby-modeとshell-modeのキーバインディングには見つからなかったので作った。後悔はしていないが公開はする。