コミケ告知

サークル活動の詳細は circle タグの記事へ。
ラベル Cygwin の投稿を表示しています。 すべての投稿を表示
ラベル Cygwin の投稿を表示しています。 すべての投稿を表示
2014年12月23日火曜日

Cygwin環境下でElixirを使うときのバッドノウハウ

Windows上でCygwinを使いつつ、Windows用にインストールされたコマンドラインアプリケーションを使うと、ヒストリーを辿る動作が上手く動作しないことがあります。↑を押したらカーソル位置が上に移動してしまうなど。各種言語のREPLやDBの管理ツールで起こります。そんなときにはrlwrapを使うと、安直にまともな挙動を得ることができます。
rlwrap -A iex.bat

ここで今rlwrapを紹介したいわけではなくて、rlwrapを使ったときのバッドノウハウ。
elixirはwindows用の実行ファイル(iex.bat)を用意してくれますが、こいつをrlwrapで包むと、なぜか上手くCtrl+Cが伝わらなくて、erl.exeがゾンビの如く残ってしまいます。

対処は、 :erlang.halt で終了すること。

若干面倒ではありますが、そう頻繁に終了起動を繰り返すようなものではないので、実用的に問題ない範囲内かなと。
2013年4月15日月曜日

Cygwin+SBTでEnterキーが効かない場合の対処

現象

Cygwin上でsbtを起動は出来るが、Enterキーが効かないので何もできない。


原因

ターミナルの設定とSBT側の処理が合っていないのが原因。sbt-launch.jarを実行するときに、-Djline.terminal=jline.UnixTerminal を引数に渡せばよい。

Windows用のsbt…すなわち、msiでセットアップされるsbtや、アーカイブ中のwin-sbtには、$TERMがxtermのときだけ前述のオプションを渡すという中途半端な処理が書いてあるのだが、少しでも違うとそちらの分岐に行かない。(たとえばminttyのxterm-256color)


対処

  • sbt.batをいじって、必ず引数が渡るようにする
    •  if [ "_$TERM" = "_xterm" ]; の判定文をいじるとか
    • "$JAVA_CMD"のあとに直接書いちゃうとか (cmd.exeから呼んだときに大丈夫かどうか知らないが)
  • あるいは、環境変数 $JAVA_OPTS に指定する