[HOME]  [リストへもどる]
一括表示

  Tra_TAG.def 改 V1 - konno 18/10/04-21:42 No.65
    ┗ Tra_TAG.def 改 V02 - konno 18/10/05-01:02 No.66
     ┗ Tra_TAG.def 改 V04 - konno 18/12/04-23:12 No.72

(65) 65Tra_TAG.def 改 V1  投稿者:konno   2018/10/04(木) 21:42
   コメント数 1

削除しました
      - No.65 -    このTreeへ              [リストへもどる ] pre


(65) 66Tra_TAG.def 改 V02  投稿者:konno   2018/10/05(金) 01:02
    65 番 konno さんへのコメント    コメント数 1

=== Tra_TAG.def v16 ===
; V16k02		2018-10-04 konno

* M
;60 ^\ "TAG"
60 ^[F10] "TAG"
        ?.
;------- ファイラー移行拡張子 (%A) ---------------------------------------
	a".com .exe .dic .obj .lib .lzh .jpg .gif .ico .zip .pif .lnk",
;------- start コマンド拡張子 (%B) ---------------------------------------
	b".xls .ppt .mdb",
;------- メニュー選択拡張子  (%C) ---------------------------------------
;	c".htm .pas",
	c".htm .pas .asm .inc",
;------- m=0:wgrep, m=1:ygrep, (%D) --------------------------------------
	m0,	;m1,
;-------------------------------------------------------------------------
	#] #? (r)?. wa..19.2-,		;行を lfb に取り込む
	&So(wa..18,":\") (r)??{		;フルパスが書いてない
		&Ss(pq..148+2) si=r,
		di=pq..134+100, i-, i[, &> i],
		(r!=-1)?{ r=si+1, >C }	;行頭からもLFNが取得出来ないときは
;		 r=si+1, >C ;}		;★LFNが取得出来なくても進む
		dn[-, #60 dn],		;通常の #60 
		&m("0 ng %s",di)	;▼
		>C			;★LFNが取得出来なくても進む
		f"",(r)?>61 >B		;取得できなければ LZH 処理
	}

:A	si=r-1, di=pq..134+100, i3,	;フルパス部分を di へ取り出し
:C	di[, &> di],
	f=di, ;(r==-1)?{ #> #d >E }
	r=si+i,				;-->r=lbf内のフルパス末尾adr
	&09 				;-->pa=拡張行番号情報
	ax$7160, cx+, si=di, di=pq..149,
;        &i($21) (ax==$7100 || r)?di=si,
        &i($21) (ax==$7100)?di=si,

	&s 
	#k (w=wn)?#X mr255,#i mb+,		;起動行を console に貼り付けて
	ps[=pr, #56 "$"" #m "" #m 'Y'
	#56 &?("\i %s",si) #m		;ファイル名部分をSFNに置換
	&?("%s ",di) #m 'Y' ps], mb-,
	#60 e=r,			;TAG情報取得して
	ux[+, #y ux], (w)?#X &d		;後始末
	#> #d
	(e)?{				;ディレクトリ対応
		&06 (r)? >E
		&m("1 ng %s",pf)	;▼
;		f"",(r)?>61 >B		;取得できなければ LZH 処理
		.
	}

:B	;- 拡張子判断 -
	&Sy(pf) (r&2)?{
		:a &So(a,cx) (r)?{	;ファイラー移行拡張子
			e=r, &Sn(cx)
			(e.r==32 || e.r==0)?{
				&03 .
			} a=e+1, >a
		}
		:b &So(b,cx) (r)?{	; start コマンド拡張子
			e=r, &Sn(cx)
			(e.r==32 || e.r==0)?{
				&07 .
			} b=e+1, >b
		}
		:c &So(c,cx) (r)?{	;メニュー選択拡張子
			e=r, &Sn(cx)
			(e.r==32 || e.r==0)?{
				&02 .
			} c=e+1, >c
		}
	}
	&04				;--- テキストとしてオープン ---
		&m("2 ok %s",pf)	;●
.


:E	;- オープン出来ない -
	&m("%s オープンできません",f) &b(2)

00:	;--- LFN対応 #60 ----
	;<-- r=0:Exists, -1:non,

	si[,
	&Sc(di,si,i)
 :A 	(si.i=='"')?{ si++, >A }
; 	&f(si.i,"$(9,d)$"(*<>?:/| =[];+,")
 	&f(si.i,"$(9,d)$"(*<>?:| =;+,")
	e=r, (si.i)??e-,
	(e>=0)?{			;ファイル不可文字なら一旦存在判定
		&> (r)??>Z		;存在すればr=0を返す
	}
	(e==255)?{ di.i-, (-1) >Z }	;存在しなければr=-1を返す
	di.i=si.i, i++, >A
:Z	si],

01:	;--- ファイル存在チェック ---
	;<-- r=0:Exists,
	;    e=255:最終判定,

	(e<11)?e255,			;LFN でも使えない文字なら最終判定
        di.i-,
	&Sn(di) r--, (di.r=='\')?di.r=0,
	ax$7143, bx-, dx=di,
 :F	&i($21)				;ファイル存在チェック
	(ax==$7100)?{			;LFN に対応してなければ最終判定
		ax$4300, e255, >F
	}
        (r)

02:	;--- メニュー処理 ---
	;--> pf

	&m("%70s",pf)
	!01
	(r==0)?{	;start
		&07
		.
	}
	(r==1)?{	;filer
		&03
		.
	}
	(r==2)?{	;open
		&04
		.
	}

03:	;--- ファイラーへ移行 ---
	;--> pf,bx

	#O bx.0[=0, &?("%s",pf) #m bx.0=0],
	&Sc(pn..-38,pf) #U 

04:	;--- テキストとしてオープン ---
	;--> pf

	r=pf, &08 (r==1)?{
:S	;- メニュー処理その2 -
		&m("maybe binary : %60s",pf)
		!01
		(r==0)?{	;start
			&07
			.
		}
		(r==1)?{	;filer
			&03
			.
		}
		(r==2)?{	;open
			>O
		}
		.
	}
 :O	&Sf(pf,' ') (r)?{ p=r, si=p+2, }
		?{ &Sn(pf) si=p=pf+r, } &>
	q=pf, pf[=pr,
	p.0[=0, #O &?("%s",q) p.0=0], #m
	pf],
	(s)?{ &b(2) . }

	(pa.0==1)?{
		&m("ただいまジャンプ中(->%s)",pa+1)
		#O &?("%s ->%s",wa+146,pa+1) #m
		&d
		.
	}

	&m("ただいまジャンプ中(%lu行)",ax,dx)
	#^ dn[-,
:L	;- long行番号へジャンプ -
	(dx)?{ dx--, &#J(-1)
        	(ln-0~)??{ #> #d >L } (0)
	}? &#J(ax)
	&m("") #? &d dn],

05:	;--- Long 値を取得 ---

	&i(3+$)."$
	$(33,C0,99,33,C9,BF,0A,00,8B,D8,AC,2C,30,3C,09,77)$
	$(0F,8A,C8,8B,C2,F7,E7,93,F7,E7,03,C1,13,D3,EB,E8)$
	$(8B,C3,C3)"

06:	;--- ディレクトリとしてオープン ---
	;--> di

	ax$4300, bx-, dx=di, &i($21)	;ファイル存在チェック
	(r)?{ (1) . }
	#O &?("%s",di) #m (0)

07:	;--- start コマンド ---
	;--> pf

	#E &?("Start %s",pf) #m #[

08:	;--- chk binary ---
	;--> r=ファイル名
	;<-- r=-1:non file, 1:binary

	ax[,bx[,cx[,dx[,di[,
	dx=r, ax$3d00, &i($21) (r)?{ (-1)>Z }	;open
	dx=pq..149, bx=ax, cx=250,
	ax$3f00, &i($21)			;read
	bx[, di=dx,cx=ax,
	&i("$(32,C0,F2,AE,F7,D9,C3)") (r)	;scan ZERO
	bx], ax$3E00, &i($21)			;close
 :Z	di],dx],cx],bx],ax],

09:	;--- 拡張行番号情報 ---
	;<--pa.0  db 0:normal, 1:cp, 2:env,
	;     .1  dd string

	p[=r+1,
	pa.0-,
	(p..0=='>-')?{
		pa.0=1, p+=1, i-,
		:a i++, r=p.i, &10 ?{ pa.i=p.i, >a }
		pa.i-,
	}
	(p..0=='-[')?pa.0=2,
	p],

10:	;--- 16進? ---
	(r)>!{
		1>h 2>h 3>h 4>h 5>h
		6>h 7>h 8>h 9>h 0>h
		A>h B>h C>h D>h E>h F>h
		a>h b>h c>h d>h e>h f>h
	}
	(0)
.:h	(1)

61 ^^ "LZH"
	(s)?.
	&s &#M(4) ky[,
	&20 f=r,			;-->f=検索文字
	(f)??{ &m("変数 m を正しく設定してください") >Z }
	mp[,ps[=pr,
	#F &?("%s",f) #m #r
	ps],mp],
	(r)?{ r-,>e }
	r=pq..149, &23			;-->r=行バッファ取得アドレス
	(r==-1)?{ r+, >e }
	&21 (r==-1)?{ r2, >e }
	p=r,				;-->p=圧縮ファイル名

	&#U(4)
	r=pq..149+121, &23
	(r==-1)?{ r+, >e }
	&22 (r==-1)?{ r3, >e }
	q=r, &Sn(q) l=q+r+1,		;-->q=ファイル名
	&Ss(l) l=r,			;   l=行数

	#E &?("miel -l -na %s +%s -ej -j%s",p,q,l) #m #[

 :Z	&#U(4) ky],&d
.
:e	;- エラー表示 -
	&#U(4) #> #d &#M(4)
	(r)>?{
		("タグ情報/書庫ファイル情報行が見つかりません")
		("カーソル行が取得できません")
		("書庫ファイル情報行の不備です( ^QP でジャンプ )")
		("タグファイル情報行の不備です")
	}
	&m("%d %s %s",r,mg..0,p)
	>Z

20:	;--- 書庫ファイル情報検索文字 ---

	r-,
	(m==0)?{ r"\i ------------------[", }
	(m==1)?{ r"\i /* 書庫ファイル ", }
	(r)

21:	;--- 書庫ファイル情報行を分析 ---
	;-->r=取得バッファ

	p[=r,
	(m==0)?{
		&SO(p," << ") (r)?p=r+4,
				?{ r=-1, >Z }
		&SO(p,"]") (r)?r.0-,
				?{ r=-1, >Z }
	}
	(m==1)?{
		&SO(p,"ル ") (r)?p=r+3,
				?{ r=-1, >Z }
		&SO(p," */") (r)?r.0-,
				?{ r=-1, >Z }
	}
	r=p,
 :Z	(r)
 	p],

22:	;--- タグファイル行を分析 ---
	;-->r=取得バッファ

	p[=r,
	&SO(p," ") (r)?r.0-,
			?{ r=-1, >Z }
	&SO(r+1,":") (r)?r.0-,
			?{ r=-1, >Z }
	r=p,
 :Z	(r)
 	p],

23:	;--- カーソル行の(論理)行頭から 120 文字を r へ取得 ---
	;-->r=取得バッファ
	;<--r=-1:Err,

	p[=r,
	(mr==$80)?{#? &s }?#28	;#28 は ViewMode では使えない
	(r)?{ r=-1, >Z }	;#? #28 --> r==-1:lbfが一杯などのエラー
	wa..19.2-,
;	&Sc(p,wa..18,120) r=p,
	&Sc(p,wa..18,200) r=p,
 :Z	(r)
 	p],


* P
01	"",7,3
	"Start"
	"Filer"
	"Open"

*
= End of Tra_TAG.def =

      - No.66 -    このTreeへ    コメント元:65 へ    [リストへもどる ] pre


(65) 72Tra_TAG.def 改 V04  投稿者:konno   2018/12/04(火) 23:12
    66 番 konno さんへのコメント

=== Tra_TAG.def v16 ===

;					 V16k04	konno改
;2018-10-04 03 ディレクトリ&LFN不具合対応  
;2018-12-04 04 バッファ溢れ不具合対策 コンソールのみ

* M
;60 ^\ "TAG"
60  "TAG"
        ?.
;------- ファイラー移行拡張子 (%A) ---------------------------------------
	a".com .exe .dic .obj .lib .lzh .jpg .gif .ico .zip .pif .lnk",
;------- start コマンド拡張子 (%B) ---------------------------------------
	b".xls .ppt .mdb",
;------- メニュー選択拡張子  (%C) ---------------------------------------
;	c".htm .pas",
	c".htm .pas .asm .inc",
;------- m=0:wgrep, m=1:ygrep, (%D) --------------------------------------
	m0,	;m1,
;-------------------------------------------------------------------------


	#] #? #> #< &x(255)		;バッファ溢れ対策 行の長さ255以上?
	(cd!=$d&&wn==0)?{&x(254)#m#e}#<	;コンソールなら改行挿入

	#] #? (r)?. wa..19.2-,		;行を lfb に取り込む
	&So(wa..18,":\") (r)??{		;フルパスが書いてない
		&Ss(pq..148+2) si=r,		;lbuf
		di=pq..134+100, i-, i[, &> i],	;tmpbuf
		(r!=-1)?{ r=si+1, >C }	;行頭からもLFNが取得出来ないときは
		 r=si+1, >C 		;★LFNが取得出来なくても進む
		dn[-, #60 dn],		;通常の #60 
		&m("0 ng %s",di)	;▼
		>C			;★LFNが取得出来なくても進む
;		f"",(r)?>61 >B		;取得できなければ LZH 処理
	}

:A	si=r-1, di=pq..134+100, i3,	;フルパス部分を di へ取り出し
:C
;	&m("-0 ng %s",di)	;▼
;&w(120)
	di[, &> di],
	f=di, ;(r==-1)?{ #> #d >E }
	r=si+i,				;-->r=lbf内のフルパス末尾adr
	&09 				;-->pa=拡張行番号情報
	&m("09 i=%d %s",i,wa+146)
;	&t &w(120)
	ax$7160, cx+, si=di, di=pq..149,
;        &i($21) (ax==$7100 || r)?di=si,
        &i($21) (ax==$7100)?di=si,

	&s 
	#k (w=wn)?#X mr255,#i mb+,		;起動行を console に貼り付けて
	ps[=pr, #56 "$"" #m "" #m 'Y'
	#56 &?("\i %s",si) #m		;ファイル名部分をSFNに置換
	&?("%s ",di) #m 'Y' ps], mb-,
	#60 e=r,			;TAG情報取得して
	ux[+, #y ux], (w)?#X &d		;後始末
	#> #d
	(e)?{				;ディレクトリ対応
		&06 (r)? >E
		&m("1 ng %s",pf)	;▼
;		f"",(r)?>61 >B		;取得できなければ LZH 処理
		.
	}

:B	;- 拡張子判断 -
	&Sy(pf) (r&2)?{
		:a &So(a,cx) (r)?{	;ファイラー移行拡張子
			e=r, &Sn(cx)
			(e.r==32 || e.r==0)?{
				&03 .
			} a=e+1, >a
		}
		:b &So(b,cx) (r)?{	; start コマンド拡張子
			e=r, &Sn(cx)
			(e.r==32 || e.r==0)?{
				&07 .
			} b=e+1, >b
		}
		:c &So(c,cx) (r)?{	;メニュー選択拡張子
			e=r, &Sn(cx)
			(e.r==32 || e.r==0)?{
				&02 .
			} c=e+1, >c
		}
	}
	&04				;--- テキストとしてオープン ---
		&m("2 ok %s",wa+146)	;●
.


:E	;- オープン出来ない -
	&m("%s オープンできません",f) &b(2)

00:	;--- LFN対応 #60 ----
	;<-- r=0:Exists, -1:non,

	si[,
	&Sc(di,si,i)
 :A 	(si.i=='"')?{ si++, >A }
; 	&f(si.i,"$(9,d)$"(*<>?:/| =[];+,")	;
 	&f(si.i,"$(9,d)$"(*<>?:| =;+,")		; / ディレクトリ&LFN対応
	e=r, (si.i)??e-,
	(e>=0)?{			;ファイル不可文字なら一旦存在判定
		&> (r)??>Z		;存在すればr=0を返す
	}
	(e==255)?{ di.i-, (-1) >Z }	;存在しなければr=-1を返す
	di.i=si.i, i++, >A
:Z	si],
	&m("00 i=%d %70s",i,wa+146)
	;&w(60)

01:	;--- ファイル存在チェック ---
	;<-- r=0:Exists,
	;    e=255:最終判定,

	(e<11)?e255,			;LFN でも使えない文字なら最終判定
        di.i-,
	&Sn(di) r--, 
	(r>=254)?{&m("%d",r)&t}
	(di.r=='\')?di.r=0,
	ax$7143, bx-, dx=di,
 :F	&i($21)				;ファイル存在チェック
	(ax==$7100)?{			;LFN に対応してなければ最終判定
		ax$4300, e255, >F
	}
        (r)
	&m("01 i=%d %70s",i,wa+146)
	 ;&w(60)

02:	;--- メニュー処理 ---
	;--> pf

	&m("02 %70s",wa+146)
	;&w(120)
	!01
	(r==0)?{	;start
		&07
		.
	}
	(r==1)?{	;filer
		&03
		.
	}
	(r==2)?{	;open
		&04
		.
	}

03:	;--- ファイラーへ移行 ---
	;--> pf,bx

	#O bx.0[=0, &?("%s",pf) #m bx.0=0],
	&Sc(pn..-38,pf) #U 

04:	;--- テキストとしてオープン ---
	;--> pf

	r=pf, &08 (r==1)?{
:S	;- メニュー処理その2 -
		&m("maybe binary : %60s",pf)
		!01
		(r==0)?{	;start
			&07
			.
		}
		(r==1)?{	;filer
			&03
			.
		}
		(r==2)?{	;open
			>O
		}
		.
	}
 :O	&Sf(pf,' ') (r)?{ p=r, si=p+2, }
		?{ &Sn(pf) si=p=pf+r, } &>
	q=pf, pf[=pr,
	p.0[=0, #O &?("%s",q) p.0=0], #m
	pf],
	(s)?{ &b(2) . }

	(pa.0==1)?{
		&m("ただいまジャンプ中 %s(->%s)",wa+146,pa+1)
; &w(60)
;		#O &?("%s ->%s",wa+146,pa+1) #m
		#O &?("%s ->%s",pf,pa+1) #m
		&d
		.
	}

	&m("ただいまジャンプ中 %s (%lu行)",wa+146,ax,dx)
; &w(60) &d
	#^ dn[-,
:L	;- long行番号へジャンプ -
	(dx)?{ dx--, &#J(-1)
        	(ln-0~)??{ #> #d >L } (0)
	}? &#J(ax)
	&m("") #? &d dn],

05:	;--- Long 値を取得 ---

	&i(3+$)."$
	$(33,C0,99,33,C9,BF,0A,00,8B,D8,AC,2C,30,3C,09,77)$
	$(0F,8A,C8,8B,C2,F7,E7,93,F7,E7,03,C1,13,D3,EB,E8)$
	$(8B,C3,C3)"

06:	;--- ディレクトリとしてオープン ---
	;--> di

	ax$4300, bx-, dx=di, &i($21)	;ファイル存在チェック
	(r)?{ (1) . }
	#O &?("%s",di) #m (0)

07:	;--- start コマンド ---
	;--> pf

	#E &?("Start %s",pf) #m #[

08:	;--- chk binary ---
	;--> r=ファイル名
	;<-- r=-1:non file, 1:binary

	ax[,bx[,cx[,dx[,di[,
	dx=r, ax$3d00, &i($21) (r)?{ (-1)>Z }	;open
	dx=pq..149, bx=ax, cx=250,
	ax$3f00, &i($21)			;read
	bx[, di=dx,cx=ax,
	&i("$(32,C0,F2,AE,F7,D9,C3)") (r)	;scan ZERO
	bx], ax$3E00, &i($21)			;close
 :Z	di],dx],cx],bx],ax],

09:	;--- 拡張行番号情報 ---
	;<--pa.0  db 0:normal, 1:cp, 2:env,
	;     .1  dd string

	p[=r+1,
	pa.0-,
	(p..0=='>-')?{
		pa.0=1, p+=1, i-,
		:a i++, r=p.i, &10 ?{ pa.i=p.i, >a }
		pa.i-,
	}
	(p..0=='-[')?pa.0=2,
	p],

10:	;--- 16進? ---
	(r)>!{
		1>h 2>h 3>h 4>h 5>h
		6>h 7>h 8>h 9>h 0>h
		A>h B>h C>h D>h E>h F>h
		a>h b>h c>h d>h e>h f>h
	}
	(0)
.:h	(1)

61 ^^ "LZH"
	(s)?.
	&s &#M(4) ky[,
	&20 f=r,			;-->f=検索文字
	(f)??{ &m("変数 m を正しく設定してください") >Z }
	mp[,ps[=pr,
	#F &?("%s",f) #m #r
	ps],mp],
	(r)?{ r-,>e }
	r=pq..149, &23			;-->r=行バッファ取得アドレス
	(r==-1)?{ r+, >e }
	&21 (r==-1)?{ r2, >e }
	p=r,				;-->p=圧縮ファイル名

	&#U(4)
	r=pq..149+121, &23
	(r==-1)?{ r+, >e }
	&22 (r==-1)?{ r3, >e }
	q=r, &Sn(q) l=q+r+1,		;-->q=ファイル名
	&Ss(l) l=r,			;   l=行数

	#E &?("miel -l -na %s +%s -ej -j%s",p,q,l) #m #[

 :Z	&#U(4) ky],&d
.
:e	;- エラー表示 -
	&#U(4) #> #d &#M(4)
	(r)>?{
		("タグ情報/書庫ファイル情報行が見つかりません")
		("カーソル行が取得できません")
		("書庫ファイル情報行の不備です( ^QP でジャンプ )")
		("タグファイル情報行の不備です")
	}
	&m("%d %s %s",r,mg..0,p)
	>Z

20:	;--- 書庫ファイル情報検索文字 ---

	r-,
	(m==0)?{ r"\i ------------------[", }
	(m==1)?{ r"\i /* 書庫ファイル ", }
	(r)

21:	;--- 書庫ファイル情報行を分析 ---
	;-->r=取得バッファ

	p[=r,
	(m==0)?{
		&SO(p," << ") (r)?p=r+4,
				?{ r=-1, >Z }
		&SO(p,"]") (r)?r.0-,
				?{ r=-1, >Z }
	}
	(m==1)?{
		&SO(p,"ル ") (r)?p=r+3,
				?{ r=-1, >Z }
		&SO(p," */") (r)?r.0-,
				?{ r=-1, >Z }
	}
	r=p,
 :Z	(r)
 	p],

22:	;--- タグファイル行を分析 ---
	;-->r=取得バッファ

	p[=r,
	&SO(p," ") (r)?r.0-,
			?{ r=-1, >Z }
	&SO(r+1,":") (r)?r.0-,
			?{ r=-1, >Z }
	r=p,
 :Z	(r)
 	p],

23:	;--- カーソル行の(論理)行頭から 120 文字を r へ取得 ---
	;-->r=取得バッファ
	;<--r=-1:Err,

	p[=r,
	(mr==$80)?{#? &s }?#28	;#28 は ViewMode では使えない
	(r)?{ r=-1, >Z }	;#? #28 --> r==-1:lbfが一杯などのエラー
	wa..19.2-,
;	&Sc(p,wa..18,120) r=p,
	&Sc(p,wa..18,200) r=p,
 :Z	(r)
 	p],


* P
01	"",7,3
	"Start"
	"Filer"
	"Open"

*
= End of Tra_TAG.def =

      - No.72 -    このTreeへ    コメント元:66 へ    [リストへもどる ] pre