標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

nyagos 4.4.4_0 を公開しました(その2)

NYAGOS 4.4.4_0 を公開しました(その1) を書いたのに、「(その2)」を書く前に、4.4.4_14.4.4_3 をリリースしてしまったー。とはいえ、一応、書いておかないと気持ち悪いので、書ける体力があるタイミングで残りを駆け足で書いておきますね。

  • Linux用の .source を実装(/bin/sh を想定)

Windows版のバッチファイルでの変更を取り込む機能の sh 版みたいなものです。実装してくれという要望はありませんが、WindowsLinux での機能の差異は最小限にしたかったので。

  • 一行入力で、ユーザが待っている時にカーソルの点滅がオフになっていなかった不具合を修正

これが ON になっていると、\host-name 補完で待たされている時のアニメーションの横のカーソル点滅が見苦しいんですよね。

  • mklink /J マウントポイント 相対パス で作るジャンクションが壊れていた(絶対パス化が抜けていた)

相対パスでジャンクションを作ると、実際、利用できないんですよね。"path/filepath".Abs絶対パス化するようにしました。

  • 起動オプション --chdir "DIR"--netuse "X:=\\host-name\share-name" を追加

これは su コマンドで、管理者権限に昇格する際に CMD.EXE の機能を利用せずに、ネットワークドライブやカレントディレクトリを復元するために作りました。 (何もしないと、セキュリティーのために引き継がれないのです)

  • suを実行する際にCMD.EXEを使わないようにした(アイコンをNYAGOSのにするため)

--chdir "DIR"--netuse "X:=\\host-name\share-name" で実現可能になりました。

  • 100個を越える補完候補がある時、確認するようにした

VMware の中とかで、OS負荷が高くなっている時、コンソール出力すごく時間がかかるんですよね。ということで、bash とかの動作を真似ました。しきい値を 100 にしたのは、だいたいその辺に bash でもしきい値がありそうな雰囲気だったからです。

  • ps: nyagos.exe 自身の行に [self] と表示するようにした

自分を間違って kill しないようにね(たまにするらしい)

  • (#272) !(ヒストリ番号)@ をそのコマンドが実行された時のディレクトリに置換するようにした

塩漬けしていた issue 消化です。でも、あんまり使いませんねぇ。cd -hcd -1cd -9 の方の cd 専用のヒストリを使ってしまうんですよ。

  • (#130) ヒアドキュメントをサポート

こちらも塩漬けしていた issue 消化です。

  • Alt-O でショートカットのパス(例:SHORTCUT.lnk) をリンク先のファイル名に置換するようにした

ショートカットファイルを解釈しないコマンドにファイル名を渡すのに便利なんですが、実装から1ヶ月以上たつと存在忘れますねぇ(おい)

  • (#368) Lua関数 io.close() が未定義だった。

実は file:close() しか知りませんでした。io.close(file)file:close() と等価だったんですね…

  • (#332)(#369) io.open() のモード r+/w+/a+ を実装した。

GopherLua のソースを見ながらパクりま実装しました!

GopherLua にも io ライブラリは当然あるんですが、Luaグローバル変数の io.stdout / io.stdin / io.stderr に任意の *os.File に差し替える API は提供されていません。それができないと、nyagos 側で標準入出力をリダイレクトをしても、Lua のコードはガン無視になってしまいます。そうならないようにするため、自前の io ライブラリを作成しています。ですが、完全とはいかず、本件もその一つでした。

とりあえず、4.4.4_0 については以上です。