http://www.shigemk2.com/entry/from_emacs_to_inteliJ を参考に、EmacsからIntelliJへ、IntelliJからEmacsへのジャンプが出来るようにしたのだが、EmacsからIntelliJに飛ぶ時に現在の行位置に飛んでくれなかったので改良した。
以下のようなコマンドをelispで定義しておくことで、行位置を保存したままIntelliJに飛べる
;;; 現在のファイルをIntelliJで開く (defun open-by-intellij () (interactive) (shell-command (format "/Applications/IntelliJ\\ IDEA\\ CE.app/Contents/MacOS/idea --line %d %s >/dev/null 2>&1" (line-number-at-pos) (buffer-file-name))) (shell-command "open -a /Applications/IntelliJ\\ IDEA\\ CE.app")) ;;; キーバインドは適当に (define-key scala-mode-map (kbd "C-x C-j") 'open-by-intellij)
実現方法としては
- IntelliJにCLIからファイルを開くコマンドが用意されている
- Emacsで現在のファイルと行番号を取得して、このコマンドを呼び出すだけで良い
- ただし、コマンドを実行してみるとバックグラウンドで開いただけだったので、openをつかってフォアグラウンドに移動している
この設定によって
という挙動が実現できたので、状況に応じてそれぞれ使い分けていきたい。