テスト   ISH置き場             
[記事リスト(ツリー表示)]  [ 返信 ]   [新着記事] [最新50] [ワード検索] [過去ログ]

タイトル Tra_TAG.def 改 V02
投稿日: 2018/10/05(金) 01:02
投稿者konno
 番 号 66    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 一括表示へ   -   コメント元:65 一括表示へ  -    [ 返信 ]    [引用無し] pre


- 関連一覧ツリー (先頭の番号をクリックするとツリー全体を一括表示します)
65.Tra_TAG.def 改 V1 - konno 18/10/04-21:42
  ┗66.Tra_TAG.def 改 V02 - konno 18/10/05-01:02
   ┗72.Tra_TAG.def 改 V04 - konno 18/12/04-23:12

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)   [引用無し]
おなまえ 
Eメール 
タイトル 
メッセージ auto soft pre(図表、プログラム) ※折り返さずに改行を入れてね
 参照先 
 暗証キー (英数字で8文字以内)
 プレビュー          

- 以下のフォームから自分の投稿記事を修正・削除することができます -
   処理   記事No   暗証キー
    [ページトップへ] [管理用]