探検


【2画面ファイラ】 mfiler4 その2

1login:Penguin
垢版 |
2013/01/07(月) 23:04:08.47ID:zyEjI89a
開発に色々動きがあって、xyzsh、mfiler4ともに
既にいくつかリリースがされているので、
mfiler2スレの次スレとして立ててみました。
情報交換や質問・要望など、何でもどうぞ
楽しくやっていきましょう

公式サイト
http://ab25cq.sakura.ne.jp/

前スレ
【2画面ファイラ】 mfiler2 【Rubyインタプリタ】
http://engawa.2ch.net/test/read.cgi/linux/1183712038/
2013/01/07(月) 23:06:51.12ID:zyEjI89a
現在のバージョン
xyzsh: 1.2.9
mfiler4 1.0.8

xyzshは1.2.7 mfiler4は1.0.6しかまだ試して無いので
これからアップデート試してみるかな。
2013/01/11(金) 04:17:53.87ID:ryx/aMtP
スレ立て乙
4作者
垢版 |
2013/01/23(水) 08:25:20.30ID:cbx1s4H4
スレを立てていただきありがとうございます。
サイトからリンクを貼らせて頂きます。

感想など、気楽に書き込んでください。開発の力になります。

Fedora 17,18ではパッケージになってます。
yum install mfiler4でインストールできます。
ただ、手元で試した所、ヘルプが見れないのとコマンドライン実行後に
少し動きがおかしいので、もう少し待った方がいいかもしれません。
Sourceforge.jpでは直ってますが、今はFedora向けに修正を加えているところです。
2013/01/24(木) 07:59:29.54ID:Za9GUFJj
>>4
乙です
2013/01/27(日) 02:02:21.31ID:zrSr5LGL
>>4
作者さん、お疲れさまです。
Fedoraでは、testing repositoryにxyzsh 1.3.2, mfiler4 1.1.1まで
来ています。stable repositoryにpushされるには、testingで少なくとも
1週間立つ必要があるので、新しいバージョンをすぐ試したい方は、
testing repositoryを有効にするといいです。
7作者
垢版 |
2013/01/28(月) 11:16:40.38ID:9SAIik+/
>>6
パッケージにして頂いて、ありがとうございます。
とても嬉しかったです。
こまめにアップロードして頂いてるようで、ありがたいです。

今はxyzsh 1.3.3 mfiler4 1.1.2の開発をしています。
configure.inとMakefile.inを変えて、Fedoraでドキュメントが見られないバグを
修正したいと思ってます。
あとmigemoを動的にロードするようにしています。
外国人向けの修正です。
load -dynamic-library migemo.soしないとmigemoがONにならないように
なりますが、ファイラ画面からも、それができて、状態を保存できるようにしたいと思ってます。
ついでにmigemoをロードするとxyzshの画面で日本語ファイル名のmigemo補完ができるようにしてます。mfiler4があれば、あまり必要ないかもしれませんが、一応入れておきます。
8作者
垢版 |
2013/02/03(日) 18:38:14.90ID:Ern5idA+
xyzsh-1.3.3, mfiler4-1.1.2
をリリースしてます。

migemoがxyzshのC拡張ライブラリになってます。
load -dynamic-library migemo.so
でロードできます。
migemoが必要ない方はロードしなければbashと同程度しかメモリを消費しません。
あとmigemoによるファイル名の補完も入れています。上のコマンドを実行すると
migemo補完を使うかどうか、聞かれるのでyesと答えてください。有効になります。

詳細はSourceforge.jpのニュース、またはab25cqのブログを見てください。
9作者
垢版 |
2013/02/07(木) 15:59:58.26ID:7Gp5jhfq
xyzshだけ1.3.4になっています。mfiler4には影響がありません。

変更点は

1. 1.3.3でmigemoの補完でcdがおかしかったので修正。
2. completionコマンドに-sourceを追加。
3. 補完の大部分をxyzshで書き直しました。補完のカスタマイズが楽になってます。
4. 外部プログラムのオプションの補完を書きました。manpageを見ながらオプションを選択できます。

です。ファイル名の補完もxyzshで書かれるようになったので補完のカスタマイズ
が楽になってます。
例えばcdの補完では

completion cd (
| file_completion | each ( | =~ '/$' && | print )
print ../\n
)

でディレクトリだけが候補となるcdの補完が書けます。
10作者
垢版 |
2013/02/07(木) 20:19:15.31ID:7Gp5jhfq
あと追記。

migemoのファイル名の補完はOSXではカタカナの補完ができません。
あと濁点がつく補完もできません。
2つ問題があって、一つはOSXでC/Migemoがバグっていること
もう一つはOSXのファイル名のエンコーディングがLinux風のUTF-8
ではないことです。
これの解決をいずれ行ないます。C/Migemoにパッチをあてるのと
OSXのファイル名で変換を行なうための内部コマンドを追加します。
nkfではutf8-macの変換が無理みたい(詳しく確認はしてないです)
なので、iconvで行ないたいと思います。
OSXでは日本語ファイル名を使うことが多いので、この問題はぜひ解決したいです。
11作者
垢版 |
2013/02/07(木) 20:22:23.81ID:7Gp5jhfq
migemoに関してはLinuxの方では全然問題はありません。
C/Migemoはバグもありませんし、Linuxのファイル名は完全なUTF-8なので
問題ありません。
ただし、mfiler4のインクリメンタルサーチのMigemoはそんなにマシーンパワーを使いませんが
xyzshのファイル名のMigemoの補完はかなり良いマシーンじゃないと快適とは言えないかもしれません。特にVirtual BoxなどでLinuxを動かしているといまいちです。直接Linuxがインストールされたマシーンでは十分な速度で動きます。

cygwinではmfiler4のインクリメンタルサーチでのMigemoはそれなりに動きますが、xyzshのファイル名のMigemo補完は絶望的に遅いです。解決は諦めています。
12作者
垢版 |
2013/02/07(木) 22:24:03.97ID:7Gp5jhfq
mfiler4からxyzshを起動した場合migemoの補完でバグが多数ありました。

1.3.6で修正しています。申し訳ないです。
2013/02/08(金) 00:03:28.67ID:NQZegoIl
私の環境 (Ubuntu) では migemo.so が /usr/lib/xyzsh にインストール
されているのですが,LD_LIBRARY_PATH に /usr/lib/xyzsh を追加しないと
load -dynamic-library migemo.so
で migemo.so をロードできないみたいです.
これは仕様でしょうか? migemo.so を使うのは xyzsh だけだと思うので,
もしライブラリのパスを触らないで済ます方法があったら教えてください.
14作者
垢版 |
2013/02/08(金) 10:40:03.28ID:nl6qRUp9
そうですね。ちょっと確認してみます。
回避する方法としてはxyzshの方でLD_LIBRARY_PATHを設定する(setenv)
方法があります。
問題を確認して、対策を施してみます。
仕様ではありません。
15作者
垢版 |
2013/02/08(金) 12:00:53.36ID:nl6qRUp9
1.3.7をリリースしています。

1. 1、2文字の補完候補が表示されないバグを修正(1.3.6でエンバグ)

2. 補完候補がちゃんと全部表示されないバグを修正。

3. LD_LIBRARY_PATHが設定されていないとダイナミックライブラリが読み込めない環境に対応。

ごめんなさい。まだ補完関係のバグがありました。
egrep -v '^.$|^..$' --> egrep -v '^\.$|^\.\.$' と直しました。
.と..だけ候補から消したかったんだすが
.だけだと一文字の候補もマッチしてしまって消えてしまってました。
もう、補完関係のバグは大丈夫、、、だと思います。

>13
1.3.7で対応してみました。大丈夫でしょうか。
16作者
垢版 |
2013/02/08(金) 12:09:33.62ID:nl6qRUp9
あとOSXでのC/Migemoですが、最新版だとカタカナの問題が直っているみたいです。
17作者
垢版 |
2013/02/08(金) 13:45:24.18ID:nl6qRUp9
mfiler4-1.1.3, xyzsh-1.3.8リリースです。

OSXでのmigemo関連で不具合があったものが直ってます。濁点の補完やインクリメンタルサーチができるようになってます。
(sys::iconv -f UTF-8-MAC -t UTF-8をmigemo::matchの前に付けただけです)

Linuxでは特に変わっていません。
これで、大体migemoと補完関係のバグは潰したと思います。

何度もアップロードを繰り返して申し訳ないです。
1.3.3の時にもう少しチェックを厳しくするべきでした。
2013/02/10(日) 00:31:20.75ID:+dO9Pl3X
>>15
素早い対応ありがとうございます.1.3.8 で試してみたのですが,
xyzsh の起動前に環境変数をセットしておかないと so ファイルを
ロードできないみたいです.

% xyzsh
-+- Welcome to xyzsh 1.3.8 -+-
run "help" command to see usage
/home/user1/gbp_ubuntu/xyzsh > print /usr/lib/xyzsh | export LD_LIBRARY_PATH
/home/user1/gbp_ubuntu/xyzsh > load -dynamic-library migemo.so
run time error
xyzsh 1: [load] migemo.so: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません
return code is 8192

% LD_LIBRARY_PATH=/usr/lib/xyzsh xyzsh
-+- Welcome to xyzsh 1.3.8 -+-
run "help" command to see usage
/home/user1/gbp_ubuntu/xyzsh > load -dynamic-library migemo.so
/home/user1/gbp_ubuntu/xyzsh >
19作者
垢版 |
2013/02/10(日) 00:55:03.51ID:wToZld8e
>> 18
手元のubuntuでは大丈夫だったのですけれども、何か設定によるみたいですね。
でも、rubyとかの拡張ライブラリとかは大丈夫でしょうから
何か方法があると思います。
それとも、xyzsh側の問題かもしれません。
load -dynamic-libraryはフルパスでもロードができます。

load -dynamic-library /usr/lib/xyzsh/migemo.so

ではどうでしょうか?
20作者
垢版 |
2013/02/10(日) 10:42:09.15ID:wToZld8e
補完関係であとひとつ抜けているのは
シングルクォートとダブルクォートの補完です。

ls 'main.c[TAB] --> ls 'main.c'

とかができなくなってます。(xyzshでファイル名の補完を書き始めたころから)
mfiler4の一画面時のp,P,u,Uあたりが問題になってます。

それを近々修正したいと思います。
21作者
垢版 |
2013/02/10(日) 10:46:23.09ID:wToZld8e
あとOSXでmigemo.soをmfiler4からロードすると落ちる実行ファイルが
作られることがあります。(mfiler4を起動した時だけ落ちる)
その場合はmake && sudo make installをもう一回すると
何故か大丈夫になったりします。
たぶん、リンク関係のバグでgccに-Wl,オプションを付けて回避できると
思いますが、そのようなことが起こった場合は
もう一度make && sudo make installしてみてください。
まだ原因を探しているところです。
もしかしたら、Linuxでも再現するかもしれないので
そのような人がおられたら、教えてもらえたら嬉しいです。
226
垢版 |
2013/02/10(日) 20:21:47.21ID:UJeEP17N
>>21
お疲れ様です。Fedoraでまずtestingにpushします。
2318
垢版 |
2013/02/12(火) 01:54:20.17ID:rdprHEpC
>>19
フルパスを指定したらロードできたので自分の
環境に原因があるかもしれむせん。
自分でも原因を調べてみます。
2013/02/23(土) 12:23:46.03ID:DCO6xRFa
開発お疲れさまです。いつもありがたく使わせていただいています。
mfiler4への要望なんですが、ジャンプメニューをaから始めずに1-0の次にa-zという風にすることはできますか?
それと前述の要望と合わせて固定で 1-0 セパレータ a-z となっていれば十分ではありますが、可能であるなら -- とか sep などで直接ファイルを弄ってセパレータを記述できると助かります。

ttp://pastebin.com/YK85jEip
手元のmfiler4.xyzshを貼ってみます。おかしなことをしていたらどなたかツッコミをお願いしたいです。
25作者
垢版 |
2013/02/23(土) 17:51:21.88ID:5AmcXUnj
>>24
了解です。ジャンプメニューをそのように改良しています。
みなさん、ファイルにキーも書き込んだほうがいいですか?
僕は結構~/.mfiler4/jumpが1行1ディレクトリというのは気に入っていまして。
でも、どちらにも対応させるやり方はあります。
1行に
ディレクトリ, キー, タイト
とCSVのような書き方も許せばいけます。
, が無くて一行一ディレクトリなら固定のキーを割り振るとかすればいいですね。
その辺りはxyzshのテキスト処理が十分に役に立つと思います。
次のバージョンでやってみますね。

あとmfiler4.xyzshを貼って頂いてありがとうございます。
突っ込む所は変数名はext_lenはJava式のExtLenとかの方が良いのでは?
というところです。僕も最近気づいたんですけれども、たぶん、それがxyzshでは
無難です。小文字はコマンド名と重なることがありますし。
あとtaget_pathというコマンドは大変気に入りました。mfiler4.xyzshにも取り込んでおきます。記述、ありがとう。大変嬉しいです。
2013/02/24(日) 14:24:51.86ID:xhM/Iscv
>25
おお、対応していただけるんですか! ありがとうございます! 次バージョンが今から楽しみです。
ええと、メニュー項目を直接指定するキーは自前で設定できれば使わないキーの行を詰めることができるって利点がありますね。
手元ではとりあえずa-zまで表示させておいて使いやすい配置を試行錯誤していますが半分くらい空いていますし……。
それから、mfiler3のメニューファイルを直接弄ったときにちょっと混乱した経験から言うと、1行1項目のメニューファイルは編集しやすくていいと思います。

あー、extlenはlocal変数だし適当でいいかと思って付けた名前ですね。
直後の処理のひな形を/usr/local/etc配下のmfiler4.xyzshから持ってきたので、それに習ってlかnにでもしようかと一瞬悩んだような気がします。
変数の命名規則は言語によって異なるというか、作者さんが好むものが正解みたいなところがあるのでここは仰るとおりの形式を採りたいと思います。
ご指摘ありがとうございました。target_pathの件と合わせてこれからのカスタマイズの励みにします。
2013/02/24(日) 18:08:53.79ID:O8jS8WCS
Arch Linuxで、xyzshの最新版がコンパイルエラーで止まってしまう…
当方の環境では1.3.2は全く問題なくコンパイル&インストールできるのに、1.3.3以降はダメなようです。

ln -s libxyzsh.so.1.7.0 libxyzsh.so.1
ln -s libxyzsh.so.1.7.0 libxyzsh.so
gcc -o xyzsh src/main.c -Isrc/ -I. -L. -I/usr/local/include -L/usr/local/lib -fPIC -DSYSCONFDIR="\"/usr/local/etc/xyzsh/\""
-DDOCDIR="\"/usr/local/share/doc/xyzsh/\"" -DSYSTEM_MIGEMODIR="\"/usr/local/share/migemo\""
-DEXTDIR="\"/usr/local/lib/xyzsh/\"" -I/usr/local/include -L/usr/local/lib -lxyzsh -lreadline -lcursesw -lncursesw -lm -lonig
./libxyzsh.so: `dlopen' に対する定義されていない参照です
./libxyzsh.so: `dlclose' に対する定義されていない参照です
./libxyzsh.so: `dlerror' に対する定義されていない参照です
./libxyzsh.so: `dlsym' に対する定義されていない参照です
collect2: エラー: ld はステータス 1 で終了しました
make: *** [xyzsh] エラー 1

原因のわかる方、教えて頂けませんでしょうか。
2013/03/08(金) 23:46:11.06ID:5MA9LbA0
いつの間にかxyzsh 1.3.9 / mfiler4 1.1.4が
いつの間にか出てた

>>27
export LDFLAGS=-ldl
とやって configure からやり直すとうまく行く?
2013/03/09(土) 13:01:46.18ID:jeBr+JmE
>>28
ビンゴ!その方法でうまく行きました。
ありがとうございます。助かりました。
30作者
垢版 |
2013/03/16(土) 19:29:06.77ID:mubDYdZa
xyzsh-1.4.0, 1.4.1
mfiler4-1.1.5 1.1.6
をリリースしてます。

xyzsh-1.4.0ではlines, rows, 配列、ハッシュの範囲外を指定した場合の動きが変わってます。気をつけてください。
xyzsh-1.4.1ではhelpでプログラムのサンプルが載るようになってます。

mfiler4では言っていたjumpメニューのキーバインドを自動的に設定するかしないかの指定ができるようになってます。
あとArch Linuxで上記の修正を行なっています。
>>28さん
ありがとうございます。
2013/03/17(日) 11:44:58.60ID:HhvPnbVn
>30
規制でお礼が遅くなってしまいましたがジャンプメニューのキーバインドの件ありがとうございました
3218
垢版 |
2013/03/21(木) 23:11:08.85ID:QBylBIaf
>>19
自分の環境で load -dynamic-library がエラーになる原因がわかりました.
debuild でパッケージ化したときに dh_fixperms が migemo.so の実行権限を
外していたためでした.

とりあえず src/run.c にパッチを当てています.

--- a/src/run.c
+++ b/src/run.c
@@ -1747,11 +1747,11 @@
char path[PATH_MAX];
snprintf(path, PATH_MAX, "%s%s", EXTDIR, fname);

- if(access(path, X_OK) != 0) {
+ if(access(path, R_OK) != 0) {
char* home = getenv("HOME");
if(home) {
snprintf(path, PATH_MAX, "%s/.xyzsh/lib/%s", home, fname);
- if(access(path, X_OK) != 0) {
+ if(access(path, R_OK) != 0) {
xstrncpy(path, fname, PATH_MAX);
}
}

出来れば上流側で対応していただきたいです.
33作者
垢版 |
2013/03/22(金) 13:03:47.93ID:Up+Dktld
>>32
了解です。次のバージョンでは対応します。

>>all
xyzshはあまり真剣に受け止めないでください。ワンライナーとかインタラクティブに文字列、ファイル操作させるとか、50-100行程度のスクリプトを書いたり、補完をカスタマイズしたりとかは楽しいかもです。
helpにサンプルも載せたので、インタラクティブに少し動作を試せば、すぐ使いこなせると思うので学習のコストは低いと思います。
あと長めのxyzshスクリプトを書くコツは
変数を使って普通のスクリプト的に書くのがコツです。
コンテキストパイプとグローバルパイプを多用して、ほとんど変数を使わずに書くことも不可能ではないんですけれども、頭が壊れるかもです。
でも、左から右に次々コマンドをつなげていけるのは楽しいと思います。
34作者
垢版 |
2013/04/01(月) 20:19:55.13ID:9FdUTDFp
変更点はSourceforge.jpのニュースを見てください。

やっとオブジェクトの絶対パスが入っています。
> object obj ( ls | var a b c )
> ::obj::a
main.c

外からもオブジェクトに属性を追加できます。

> print ABC | var obj:d
> ::obj::d
ABC

あとはsplit, join, linesで感覚的に正しい動きにしています。
自分で使っていて、かなり混乱してしまっていたので、正しました。

> split -tareget "a,b,c" , | join ,
a,b,c
> split -target "a,b,c,d,e" , | lines 1 2 | join ,
b,c
> split -target ",,,a,b,c,,," , | join ,
,,,a,b,c,,,
> split -target ",,,a,b,c,,," , | strip | join ,
a,b,c

後は補完関係でバグが無くなりました。と言い切ってもいいかも。
35作者
垢版 |
2013/04/01(月) 20:21:10.88ID:9FdUTDFp
上はmfiler4-1.1.7とxyzsh-1.4.2のリリースをしましたという報告です。
2013/04/02(火) 13:43:10.62ID:TwSLS1+C
更新お疲れさまです
さっそくDLしてみましたが以下のようなエラーが出てmfiler4のmakeが通りません

gcc -Isrc/ -I/usr/local/include -L/usr/local/lib -I . -DSYSCONFDIR="\"/usr/local/etc/mfiler4/\"" -DDOCDIR="\"/usr/local/share/doc/mfiler4/\""(次行に続く)
(前行から) -I/usr/local/include -L/usr/local/lib -O3 -Werror -c -o src/commands.o src/commands.c
src/commands.c: 関数 ‘cmd_vd’ 内:
src/commands.c:2047:9: エラー: 関数 ‘fd_split’ へ渡す引数が少なすぎます
In file included from src/common.h:5:0,
            from src/commands.c:1:
/usr/local/include/xyzsh/xyzsh.h:522:6: 備考: ここで宣言されています
make: *** [src/commands.o] エラー 1
37作者
垢版 |
2013/04/02(火) 14:34:55.43ID:1n1ovgFO
mfiler4-1.1.8をリリース。xyzsh-1.4.2が必要。

コンパイルエラーを修正。
38作者
垢版 |
2013/04/12(金) 14:53:09.99ID:TNhuHTa3
>> 21
21の問題は環境変数LD_LIBRARY_PATHに/usr/local/binを設定しなかっただけでした。
OSXではmfiler4,xyzshともに特に問題なく動いてます。
最近、僕もOSXがメイン環境なんで、OSXの方にも、ぜひ使って頂きたいです。
ただ、OSXではreadlineがlibeditなのでxyzshにはGNU readlineが必要なのに注意してください。
GNU readlineのインストールにはMacportsやbrewを使うと楽にインストールできます。
xyzshとmfiler4自体はMacportsやbrewではパッケージになっていませんが
そろそろ登録した方がいいかもしれません。
ただ、前に不完全なportファイルを申請して、refuseされたことがあるんですよね(がくり)
あと手元でportファイルにしたら、何故かxyzshのインストールが失敗する問題が出たりしていて、二の足を踏んでいます。
2013/04/12(金) 23:37:48.86ID:II+iPRFu
OSXに入れたxyzshでopenコマンドが効かないのですが、何か特別な設定が必要なのでしょうか?
(which openすると、ちゃんと在り処を出力してくれるのですが)
40作者
垢版 |
2013/04/13(土) 15:15:36.39ID:XJL22JBV
openコマンドは~/.xyzsh/programに登録されていないので、sys::openとして入力する必要があります。
登録する方法は
> echo open >> ~/.xyzsh/program
> rehash
とすれば、sys::を省略することができます。
外部プログラムは全て外部プログラムオブジェクトとして::sys以下に登録されています。
実はxyzshのコマンドラインは
コマンド 引数1 引数2 … 引数X
ではなくて
オブジェクト 引数1 引数2 .. 引数X
だったりします。
2013/04/14(日) 13:47:26.37ID:uvidCgXD
できたー!
できました。ありがとうございました。
42作者
垢版 |
2013/06/03(月) 02:49:41.11ID:oa/wMq7S
xyzsh-1.4.3とmfiler4-1.2.0リリースです。

xyzshでは
readlineからeditlineに行編集プログラムを変更しました。
メニュー選択補完や右プロンプトが入っています。
$(…)の仕様が変わっています。bashを参考にしています。

mfiler4では
キー定義の変数の名前が変わっています。
xyzsh-1.4.3の$(…)の仕様変更に対応しています。

詳しくはSourceforge.jpのニュースを見てください。
2013/06/03(月) 21:14:00.88ID:5g2uUWKE
更新お疲れ様です。さっそく使わせていただきます
44作者
垢版 |
2013/06/04(火) 13:12:59.69ID:KxGObMTg
今後はmfiler3のヒストリのインクリメンタルサーチ
(3行ほど、インクリメンタルサーチでヒストリがプロンプトの下に表示される
下を押せば、それを選択できる)
mfiler2のファンクションキー
を入れたいと思ってます。
あとはシェルの画面で、CTRL-Wで単語後方削除(現在はAlt+Backspaceになっている)
あたりです。
xyzsh-1.4.3の$(…)の仕様変更への対応は
$$(…)を$(…)に直せば、大体は大丈夫なはずです。$$(…)は無くなりました。
詳しく言うと
"$(…)" は出力をそのまま貼付けます。(これまで通り)
$(…)は改行区切りで、それぞれ各行を一つの引数としてコマンドで使われます。
(全部、改行は取り除かれる)
仕様変更、迷惑をかけます。
2013/07/01(月) NY:AN:NY.ANID:KINwMFbC
xyzsh 1.4.3ですが:
configureを実行すると
./configure: line 4437: EL_MANTYPE: command not found
./configure: line 4726: EL_ENABLE_WIDEC: command not found
とでます(Fedora 19 i686)。
多分libedit絡みでconfigureの生成が不完全になっている
ものと思われます。そのせいで一部のオプションが有効に
できないようですがどうすればいいでしょうか。
レスを投稿する


ニューススポーツなんでも実況