記事閲覧

− 野ざらし言 −

4493 Hbufsize.def (final+1)

文太 2018/08/22(Wed) 20:22 [4487]へのコメント
 実はまだ小さい点が2点ほど、ありはするのですが。
 でも、ま、いいでしょう。「嫌だなぁ」と思っていたところは潰しました。
 おめでとう! 完成です!
 final versionでも、Vzを落とすことはないと思いますよ。大きな違いは、
カーソルを消した(消せた)だけです(final+1)。あとは、僕の小さなこだわり。
 つまり、これで落ちたら、あっちでも落ちます。落ちないと思いますが、
万が一落ちたら、何が原因かお教えください。


=== Hbufsize by B ===;disp history buffer size & used size in Ymenu
#if 0
ただ起動。Ymenuに6つのヒストリーバッファの使用状況を示す。
(あんまり面白くない、役に立たない)棒グラフ付き。

#endif

* M
50 ^^ "Hbufsize"

	?.				;-- thanx! mezala's Vz faq!! --
        d12+c12+b12+a0=pq..139,		;flwork(194), DATA Buff
        				; a-d:12 bytes each
					;  a: hist size, b: used size
					;  c: used percentage
					;  d: usable bytes  (12*6=72 max)
	f=pq..140,			;flwork2(194), STAR Work (max 80)
	e=pq..134,			;tmpbuf+, GATHERED Data (result), see note1
					;  (256)+2(256)+3(160)+64+64=800
					;  e: gathered data (41*18=738 max)

        p=e-4,				;<p> local
        (297){ &Im(p+=4,0) }		;see note2 below, not necessary in fact
					;clear all the 7 buffers (pq..134-140)

	i-,				;<i> overall counter/ptr (makes main loop)

		; --- get buff name ---
:A	(i)>?{ (m="PS") (m="PF") (m="PX") (m="PW") (m="PR") (m="PA") }	;<m>

		; --- get max size ---
	(i)>?{ (ps) (pf) (px) (pw) (pr) (pa) }
	t=mg..0,				;<t> HistB top
	a..i=t..-1,				;buff size

		; --- get used size ---
	p=t, l-,				;<p>, <l> local
  :a 	&Sn(p) (r)?? >b
	l+=r++, p+=r++, >a
  :b	b..i=l,

		; --- get percentage ---
	c..i=b..i*100/a..i,

		; --- get usable bytes (diff) ---
	d..i=a..i-b..i,

		; --- gather all the data --- ;thanx mezala!
	&Sp(e,"%2s:(%4d) %3d%% used,  %4d bytes usable.",m,a..i,c..i,d..i)
	&Sn(e)

	e+=r+1,

  		; --- make 2-set stars in STAR Work <f> ---
   	l=f, fy+,				;<l> local (moving ptr) <- <f> buff
  :c 	(fy)? { v=a..i/28, } ? { v=b..i/28, }	;<v> local, num of stars
	     &Sm(l," ",1) l++,			; 28, star constant ★
	     (v){ &Sm(l,"*",1) l++, } 		; divider 1045/39=26.7 -> 28
 	     l.0-, l++,				;  mezala:10, konno:15, recommended
	(fy)? { fy!, >c }

    		; --- send stars to gathering buffer ---
    	&Sm(e,f,l-f)				;end nulls already included in src
    	e+=l-f,					;2 strings at once

(i++ > 5) ?? >A			;6 items, that is, 5-times loop, 012345


		; --- make Ymenu --- thanx for wanama, PK14 96/07/17
	e=pq..134,			;gathered data, (menu items)

	&01				;-- measurements
	#] n=pn..-27,			;linebuffer
	&02 &Sm(n,r,20)			;send dummy macro (+menu header)
	n.16=l+2,			;longest string = menu width (f), 
	n.17=h,				;item num (4)  "+2" added by B above
	w=n,				; added by B, thanks to mezala
	k=h++*2, n..7=j+k+8,		;n..7 menu size (c0), formula
					; <k> (h+1)*2 = formula, too
					; see #1055 PK13, 93/08/15 neko-san
	n+=20, (k){ n.0-, n++, }	;nulls for items
	&Sc(n,"HistBuff") n=r+1,	;title (*)
	&Sm(n,e,j)			;items after title (*)
	w.19=-1,			;no cursor, added by B, thanks to mezala
	rr[=pn..-27, &* rr],		;exec!                      nozlog #1469

01:	j=e, h-, l-,			;- measure longest item,item num, all (*)
  :a	&Sn(j) (l<r)? l=r,		;longest string in <e> buf, length=<l>
	(r)? { j+=r++, h++, >a }	;items's num <h>
	j-=e,				;all the length (*) <j>

02:	(3+$)."$(1,a,0,ff,ff,0)!01(r)$(0,e1,c0,0,f,4,0,-1)"
;					    ^^^^ ^ ^    ^overwrite by this macro
*

14    16 17 18 19
c0  0  f  4  0 -1

used: a,b,c,d,e,f (buffer/var/ptr); i (overall counter/ptr),
      m (HistB name), t (HistB ptr)
local: (easily destroyed & recyclable): l,p,v
Ymenu: j,k,l,n,h


for debug (don't use this or use discreetly, &?() work is being used!)
&?("%2s:(%4d) %3d%% used,  %4d bytes usable.",m,a..i,c..i,d..i)
ei[-, #m ei],

note1:
tmpbuf		256     pq..134		cmdlineLbuf,&g()
tmpbuf2		256     pq..135		alias,filer,&g()
tmpbuf3		160     pq..136		DTA,smooth,&?(),#O
pathbuf		64      pq..137		filer path
pathbuf2	64      pq..138		filer mask
flwork		194  	pq..139		filer work
flwork2		194	pq..140		filer work2

tmpbuf4		256	pq..149		&z()		not used

note2:
512+160+128+388=1188
1188/4=297

関連記事一覧ツリー (▼ を押すとツリー全体を一括表示します)

- 4456.第二の置換 - めざら 18/08/10-00:36

返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

おなまえ :
Eメール :
タイトル :
メッセージ: 通常モード(推奨)  整形モード(非推奨)  preモード(空白再現)
※ プログラムコード等を含まない場合は,できるだけ通常モードをご利用ください。

参照先 :
暗証キー: (英数字で8文字以内) プレビューなし


- 以下のフォームから自分の投稿記事を修正・削除することができます -

処理 記事No. 暗証キー