decadence

個人のメモ帳

環境について

Scalaを書く環境について考えています.
というか完成系はほぼ決まっており,以下のような形になります.
全然まだ初心者だし,REPLでの確認がしたい感じです.
Terminal.appとEmacs.appを行き来するのは嫌です.

ただ条件としてREPL(scala-inferior)で履歴を辿れる事,補完が出来る事,があります.
これはターミナル上で普通にscalaと打って出て来るREPLの事です.

しかし求めているのは,上図のような形ですので難しくなります

まず一つ目に大元の枠となるものとして選択肢が2つ考えられます

一つ目はEmacs.appを使う事

この際,3番目の枠にEmacsからREPLのような物を呼び出す必要があります.
考えられる方法として以下のようなものがあります

  • scala-run-scalaからscala-inferiorを呼び出す -> 補完が効きません(TAB押すと4つスペースになる)
  • M-x shellでzshを呼び出し,scalaと打ってREPLを起動 -> 補完が効きません(TAB押すとNo completion of hoge)
  • M-x term(multi-term)でzshを呼び出し,scalaと打ってREPLを起動 -> 様々なキーが全く違う挙動をするため話になりません

上記2つの時に,:keybindingとしてもKey bindings unavailable.になります.
No completion of hogeはyasnippetの補完が働いてるんですかね
mode切ったらスペースになります.
multi-termで特定のキーバインドを解除出来るんでそれでTAB解除したら良いと思うんですけど,それ以前にmulti-term時のREPLの挙動がおかしすぎる.
たとえC-hをbackspaceとかにしたとしても,backspace自体が^?とか出力する形になってます.
多分どこかの文字コードとかが違うせいで,キーの挙動がずれて送信されてるんだろうなぁ...わからん.
普通にmulti-termでzsh動かしてる時はDELとか使えるのに,REPLになるとなぜ変わる...
describe-bindingsじゃDEL delete-backward-charと書いてあり,REPLの:keybindingsじゃKey bindings unavalableなのに...

二つ目はTerminal.appを使う事

この際,tmuxなどで画面を分割して作業を行なう事が考えられます.
3番を通常のTerminal.appを使えるため,REPLの条件は満たします.
問題は左のEmacsと2番のsbtをどのように同期させるのか,

今思ったけど,ターミナルで現在使用しているプロセスを呼び出すみたいなのあるんじゃないの
左でemacs起動した後に右上のターミナルで同じemacsを起動させれるんじゃないかな

ちょっとやってみよう
わからんかった.

それで出来たら嬉しいんだけど,emacsの画面分割に慣れてしまってtmuxのコマンドが上手く打てない...
後完全に自分のせいだけどターミナルで開いたemacsの文字が見にくい.

Emacs.appを使いたいけど厳しい...
ついでにensimeやらyasnippetやら時々重い...

Emacs.app使ってREPLの補完を諦める方向でいこう