======== NIF_Tree.def v08c ======== by - aja - ; v08c 240613 テンポラリエラー対策 konno #if 0 【NIFTY-Serve コメントツリー表示ログビュワー】 ■現在表示中の NIFTY-Serve のログ上で起動すると、 カーソル位置の発言が含ま れるコメントツリーを表示し、それをもとにログを閲覧するマクロです。 ■会議室ごとに切り分けられ、発言番号順にならんだログを View モードで開き、 その上で使用してください(発言番号が 1 から始まっていなくてもかまいませ ん。さかのぼれるところまでのツリーを作成します)。 ■初回起動時に、ログの下位にログと同名のコメントツリー情報ファイルを作成し ます。↓ h:\log\nif\dc\dc14.nif -------------\ct\dc14.nif ■二回目以降は、ログが増えた場合はその分だけ追加します。 ■ログの中途を編集した場合は、コメントツリー情報ファイルを削除して作成し直 してください。 ■起動後は [H] キーを押してキーの割り当てをごらんください。 %カ 初期値カスタマイズ箇所(分割位置は起動後にも変更できます) ★注意★  上村さんの nifmes.def をお使いの方は下位ディレクトリ名に「out」 は指定し ないでください。 #endif * M 50 ^ON "NIF_Tree" ?. (wt||mb||tc-wc<2)?{ &m("Error wt||mb||tc-wc<2").} (mr==$80)??{ &m("Error mr").} (vw||wn)??{ &m("Error vw wn").} &s an[, mp[-,mi[-,ci[=-1,#] ju[,wh[,wv[,du[+,mx[+,ek[-, t=wn, p=0, ; &d&t ;%カ--------------------------------------------------------------------- d="ct", ;下位ディレクトリ名 x=3, ;横分割位置初期値(2 #d } (mr==$80)?#67 ; we250, #W ;--- DATA LOG ; ---- テンポラリエラー対策 ★ #M ;カーソル位置マーク &00 p=r, ;自前バッファ pの先頭アドレスを取得 ★ &Le(p,wa+126) ;mark0の値をp先頭に擬似プッシュ ★ ky[, ((wa..64)[) ((wa..63)[) ;カーソル位置マーク、ロング pn.7=pn.8-, ; pn.7=pn.8-,: プロファイル呪文 m.gann #] (mr==1)?{ &a(37) (r<=0)?. } ; &Im(pn+7,0) としてもよい #L (s==4)?'n' #P #m mr$80, ; クローズ・オープン &Le(wa+126,p) ;mark0の値をポップ ★ #U ;現在位置に戻す mp[=2,ps[, eu[-, ps="\x ^[0-9][0-9][0-9]+/[0-9][0-9][0-9]+\s+[A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9][0-9]\s\s", #> #d #r(r)?#c &n a=r, ;a現在位置 &11 &m("コメント元検索中") &12 &#M(3) ;データ側スタート位置マーク #k ; pf[=pr,wd[=0, #R "nul" #m (s)?{ 'y' } wd],pf], ; dosemu対策 07B &23 ro[-,pf[=pr, #N &?("%s",pw) "nif_tree.tr" #m (s)? 'y' pf],ro], (mr==$80)? #67 we=255, #i ; &d&t &13 ; &d&t #S #m #W pf[=pr, #C pf], #W &#T(t) eu],ps], mp], ((wa..63)]) ((wa..64)]) #U ky], ; &d&t ky[, #M ((wa..64)[) ((wa..63)[) #W mp[=2,ps[=pw, &Sp(pw,"\x ^[ └│├]*%05u\s|^[ └│├]*%03u\s",a,a) ; &Sp(pw,"%05u\s|%03u\s",a,a) vp..39-, #r ps], mp], #< ; &m(pw) wh=x, wv=y, #Y #W &d #W ; &t fa+, &m("%u item(s)",i) m=1, ; m1(01)tr(srなし) m2(10)sr m3(11)tr(srあり) c=#m, :a d=c, ep[+, &p ep], &s &Ja(r) &u(r) c=r, (c==#n)?{ pf[=pr,#C pf],&#Y(0) &#T(t) r-, >z } (c==#[)?{ pf[=pr,#C pf],&#Y(0) &#T(t) r+, >z } (c==#X)?{ r-, >z } (c=='H')?{ &d wl[=15,af[=an, !01 af],wl], c=#m, >a } (c==#m|| c==#21|| c=='J'|| c=='F')?{ (wt && c==d)?{ &#Y(0) &d }?{ &#Y(2) &09 } } ; (c==#r)?{ (wt)??&#Y(2) ky[,#e ly],&09 c=#m, >a } ; (c==#c)?{ (wt)??&#Y(2) ky[,#x ly],&09 c=#m, >a } (c==$20|| c==$8140)?{ (wt==0)?{ ; ky[, (ks&1)?#e ?#x ly], &#Y(2) }?{ ky[, (ks&1)?#e ?#x ly], } &09 c=#m, >a } (c==#39)?{ (wt)??>a r+, &30 >a } (c==#40)?{ (wt)??>a r-, &30 >a } (c==#e|| c==#x)?{ &o(c) &d >a } (c=='O'|| c=='W')?{ (wt)??{ #e &d >a } #W #w &d #W >a } (c=='/'|| c=='Z')?{ (wt)??{ #x &d >a } #W #z &d #W >a } (c==#r)?{ #r &d >a } (c==#c)?{ #c &d >a } (c==#s|| c=='R'|| c=='U')?{ (wt)??{ #r &d >a } #W #r &d #W >a } (c==#d|| c=='C'|| c=='M')?{ (wt)??{ #c &d >a } #W #c &d #W >a } (c==#37|| c==#38)?{ #W &o(c-6) #W &d >a } ; (c==#Y)?{ ; (wt==2)?{ &#Y(4) >b } ; (wt==4)?{ &#Y(2) >b } ;:b &d >a ; } (c==#h)?{ ss2, ; &d&t &23 &08 &#Y(2) &09 c=#m, >a } >a :z (r)?{ ((wa..63)]) ((wa..64)]) ky], #U (0)}?{ 0],0],0], } :y ek],mx],du],wv],wh],ju],ci],mi],mp], an], &d 00: (3+$)."$[8]" 09: #> :b (cd==9)??{ #s >b } #d #b #> ps[=pw,#G ps],mp-, #< #W pf[=pr, #O #P &?(" %s",pw) #m pf], ; (fa)? ky=ly-, ? ky=ly=wy/2, ky=ly-, ; #b ; (fb)? #d ?&x(we) ; #B #z#e &d mb-, &d #W 30: ;-------------------------------;^W ^Z ;--> r #65 (r)?#e ?#x #m &d 08: ;tr <-> sr 切り替え ;--> pw: pq のディレクトリ ;&d&t (wt)? &#Y(0) (m==1)?{ ux[+, #82 #16 "tmp" #m ux], ps[=pr,#56 "\x ^[│├└ ]+" #m "" #m "ay" ps], &n e=r, ;e 閲覧中のNo. #S #m ci[=-1,#] sx[+,px[=pr, #E (z)?#m "Sortf " &?("%s",pw) "nif_tree.tmp > " &?("%s",pw) "nif_tree.sr" #m #[ px],sx],ci], (z)?{ #E #m #[ } pf[=pr, #C &#T(t) #O &?("%s",pw) "nif_tree.sr" #m pf], we255, #_ mp[=2,ps[=pw, &Sp(pw,"\x ^%05u\s|^%03u\s",e,e) vp..39-, #r ps], mp], #< m=2, . ;--> } (m==2)?{ &n e=r, ;e 閲覧中のNo. pf[=pr, #C &#T(t) #O &?("%s",pw) "nif_tree.tr" #m pf], we255, #_ mp[=2,ps[=pw, &Sp(pw,"\x ^[ └│├]*%05u\s|^[ └│├]*%03u\s",e,e) vp..39-, #r ps], mp], #< m=3, . ;--> } (m==3)?{ :a &n (r==-1)?{ #f >a } &n e=r, ;e 閲覧中のNo. pf[=pr, #C &#T(t) #O &?("%s",pw) "nif_tree.sr" #m pf], we255, #_ mp[=2,ps[=pw, &Sp(pw,"\x ^%05u\s|^%03u\s",e,e) vp..39-, #r ps], mp], #< m=2, . ;--> } 10: ;ファイルオープン ディレクトリ作成 ;--> d ;<-- fa ro[-,pf[=pr,sn[+, #O #P :a (cd=='\')??{ #s >a } '\' &?("%s",d) #m (s)?{ 'y' (mr==$80)?{ ; &m("無効なパス名") #C &Sc(pr,wa+$92) &Sy(pr) bx.-1-, &Fl(pr) #] fg.1=1, #K &?("%s",d) #m #[ sn],pf],ro], >^ }?{ ; &m("存在するパス名") fa+, ;新規 } (0)}?{ ; &m("存在するファイル") fa-, ;既存 } sn],pf],ro], 11: ;Data file 作成or更新 ;--> n 前回最終 ;--> n=-1 新規 ps="\x ^[0-9][0-9][0-9]+/[0-9][0-9][0-9]+\s+[A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9][0-9]\s\s", #_ #> :a #r(r)??{ &n (n==r)? >z ;-> &m("%u",r) #M ; &Sp(pr,"$(9)->%04x%04x",wa..64,wa..63) &Sp(pr,"$(9)->%x%04x",wa..64,wa..63) #k #> #d &x(23) &n c=r, ;c coment No. #U #W #i #f ux[+, #t #h ux], #> ; &#V(80) #> (c!=-1)?{ ; &?("$(9)%05u%s",c,pr) &?("$(9)%u%s",c,pr) }?{ &?("$(9)-%s",pr) } #< #W >a } :z #W #] (mr)?{ eb[-, #S #m eb],} ; mr=$80, pf[=pr, #O #P #H #[ #C ro[+, #O #u #m ro], pf], #W . ;-> 12: ;コメント元をたどる ;-->a 現在位置 b=a, ps=pw, #W #_ #> :a &Sp(pw,"\x ^%05u\s|^%03u\s",b,b) vp..39-, #r(r)?. ;-> #> #a#a#a &n b=r, (b==-1)?? >a #< &#M(3) ;データ側スタート位置マーク . ;-> 13: ;tree作成 i+, #< #] ;ツリー論理行頭 &#M(4) ;番号にマーク &n b=r, #> #m &22 (r==0)?. :b #i ; #> #m #s #< (fb)?{ '└' }?{ '├' } #> #a#a#a ux[+,#t#t ux], (fb)?{ &#U(4) #> #d &#M(4) } :c #k #i #> #d &21 (fb)??{ ux[+, #h ux], b-, } &22 (r)? >b (r==0)?{ ux[+,#H #g ux], (ct==0)?. &#M(4) >c } 21: mi[+, :a (cd=='└')?' ' (cd=='├')?'│' (cd=='│')?{ #d >a } &n(r==-1)?{ #f >a } &n b=r, mi], ux[+,#l ux], 22: ;--> b 0 or not0 ;<-- r 0 1 2 #W (b)?{ &#U(3) ps=pw, &Sp(pw,"$(9)%u$(9)->",b) vp..39-, }?{ >a } #c(r)?{ ; &#U(3) (0) #W . ;->not found } ; &#M(3) ;データ側スタート位置マーク :a #< #b #> #k &m("ツリー作成中 %u",i) i++, #c(r)??{ #W fb-,(1).} ;->found1 #W fb+,(1). ;->found2 23: ; pq のディレクトリ抽出 &Sc(pw,pq) &Sy(pw) bx.0-, ; &m("%s",pw) * P 01 "",54,11,,-1 " ブラウズ ↓ / ↑ [SPC] / \[SPC]" " 上画面 ↓ / ↑ [↓] / [↑] (#x / #e)" " 下画面 ↓ / ↑ \[↓] / \[↑] (#38 / #37)" " 上画面 Paging [PGUP] / [PGDN] (#r / #c)" " 下画面 Paging [←] / [→] (#s / #d)" " 分割位置 ↓ / ↑ ^[↓] / ^[↑] (#39 / #40)" " Jump / Close [CR]:[TAB] (#m : #21)" " ツリー <-> 発言順 [BS] (#h)" ; " 表示位置 上<->中 [DEL] (#g)" ; " 表示 大<->小 [INS] (#v)" ; " 分割 <-> 全画面 [F04] (#Y)" " 終了(現在位置) \[CR] (#n)" " 終了(起動前位置) [ESC] (#[)" " 終了(そのまま) \[ESC] (#X)" * ======== End of NIF_Tree.def ========