VZEditor/VZ157/MACRO.DOC
Yoshihiko Hyodo 6f06b9514a first commit
2024-11-18 22:21:26 +09:00

424 lines
12 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

==============================================================================
Z Editor Version 1.56 Copyright (C) 1989 by c.mos
==============================================================================
 このドキュメントには、VZのマクロを使用する際のいつくかの留意点、および数種類の追加マクロが記載されています。
   目 次
-----------------------------------------
  1.マクロを組み込む際の注意
  2.追加マクロ集
-----------------------------------------
-----------------------------------------
  1.マクロを組み込む際の注意
-----------------------------------------
■ VZ.DEFにマクロを追加していった場合
 vz.defの「* M マクロ」の項に、使用するマクロをどんどん加えていくと、そのうち
メモリが足りません
というエラーメッセージが表示されて、起動できなくなります。これは、vz.defの
ファイルサイズが大きくなりすぎて、コードセグメント(64KB)内の空きエリアに
読み込めなくなってしまったためです。この場合は、vz.defの不用なコメントを削って
ファイルサイズを小さくするか、マクロをいくつかのファイルに分け、「* E その他」
の1番にファイル名を記述して、読み込むようにしてください。
 また、同じような状況で、エラーとはならずに起動するが、メニューの一部が欠けて
しまう等の不具合が発生する場合があります。こんな時は、マクロ定義部の適当な箇所
に、
* M マクロ
という1行を挿入してみて下さい。
 ※この項は、readme.doc「使用上の注意事項」にも記述されています。
■ 1つの大きなマクロを^K^で組み込む場合
 1つの大きなマクロ(数字で始まる行から次の数字の行までのサイズ)を、^K^で
組み込むと、
ラインバッファがいっぱいです
というエラーメッセージが表示されて、組み込めない事があります。この様な場合は、
組み込めるようになるまで、「オプションBl」の値を増やしてください。
-----------------------------------------
  2.追加マクロ集
-----------------------------------------
■ ワンキーセーブ
 テキストが修正されていたらセーブします。[F10]等に割り当てておくと便利です。
---------------------------------------------------------------------
50 ^\ "ワンキーセーブ"
?. (mr==1)?{ #S #m }
---------------------------------------------------------------------
■ テキスト切り替え
 編集テキストをワンキーで順次切り替えます。全画面の時は全テキストで、分割時
は、反対側のウィンドウを現テキスト以外のもので切り替えます。
---------------------------------------------------------------------
50 ^\ "テキスト切り替え"
?.
(wt)??{ &#T(wn+1) .}
(wc<3)?.
m=wn, #W n=wn+1,
(n==m)? n++,
(n>wc)? n=1,
(n==m)? n++,
&#T(n) #W
---------------------------------------------------------------------
■ 全角括弧の入力
 カーソル位置に全角括弧のペアを入力します。続けてマクロキーを押すと、
複数の括弧が選択できます。
---------------------------------------------------------------------
50 ^\ "全角括弧入力"
?.
p="「」『』()【】《》",
&f(cd,p) n=r,
mi-,
(n>=0)?{
(n&1)?{ #s n--, }
(n<8)? p+=n*2+4, ; 8 = 括弧の種類*2-2
mi+,
}
&?("%4s",p) mi-, #s
---------------------------------------------------------------------
【注意事項】
・括弧の数を変える時は、コメントにあるように(n<8)の数値も変更して下さい。
■ 文字コード表示
 カーソル位置の文字コードを、シフトJIS、JIS、JIS区点コードの3種類
で表示します。
---------------------------------------------------------------------
25 ^KJ "文字コード表示"
?. ep+,
:A (s)??{
ax=cd,
(ax<0)?{
&i("$(3C,80,14,61,72,02,2C,A2,D0,D4,05,21,1F,80,E4,7F,C3)")
a=(ax>>8-$20)*100+ax&$FF-32,
&m("文字コード: シフトJIS:%4xh JIS:%4xh クテン:%04d",cd,ax,a)
}?{
&m("文字コード: %02xh",ax)
}
}
&p (r!=#[)?{ &o(r) >A } ; [ESC]で終了
&m("") ep-,
---------------------------------------------------------------------
■ 表示行削除
 VZで1行削除(^Yを実行すると、改行から改行までの論理行が削除されます。
これを画面上の1行(表示行)単位にするのが次のマクロです。
---------------------------------------------------------------------
50 ^\ "表示行削除"
?. (mb)?{ #y .}
&s &x(0) #x #b #e mb=2, #y &d ek-,
---------------------------------------------------------------------
【注意事項】
・削除を行なうと、カーソルは常に画面の左端に移動します。
・ブロックペースト後のカーソル位置オプション「Ek」はリセットされます。
・カーソルが最下行にある時は、画面が1行スクロールします。
・マクロの実行キーを ^Y にする事もできます。この時、矩形ブロックマクロ
 block.defも組み込んでいる場合は、次の部分を変更して下さい。
-----------------------------------------
62 ^KK \[F08] "矩形ブロック記憶"
m+, >01
1:
?. (mb != 4)?{ (m)? #k ? #y . }
↓ ~~
?. (mb != 4)?{ (m)? #k ? >50 . } ; 表示行削除のマクロ番号
-----------------------------------------
■ COBOL用TAB
 TABキーで、7,12,63カラムまでスペースを挿入します。
---------------------------------------------------------------------
50 [TAB] "COBOL"
?.
(lx<6)?{ (6-lx){' '} . }
(lx<11)?{ (11-lx){' '} .}
(lx<62)?{ (62-lx){' '} .}
---------------------------------------------------------------------
■ 桁対応上書きモード
 
 上書きモード(オーバーライト・モード)を、文字の大きさ単位で行なうように
します。マクロを実行すると、画面下に 《桁対応》 と表示され、桁対応上書きモード
となります。再度実行すると、画面下に 《文字対応》 と表示され、通常の文字対応
モードに戻ります。上書きモード/挿入モードは[INS]で切り換えて下さい。
---------------------------------------------------------------------
50 ^\ "桁対応上書きモード"
?.
(mm)?{ mm-, &m("文字対応") / }
mm+, &m("桁対応")
:A &p c=r, (s)? >N
(c>=$100)? >N
(mi && ct>1)? >B
:N &o(c) >A
:B &s
(cd==9)? >T ; TAB
k=ck,
&o(c)
(c>=$20 && k)?{ mi-, ' ' #s mi+, >C } ; 全角←半角
(c<$20 && k==0)?{ ; 半角←全角
(cd==9 && lx%ht)? >C
(ck)?{ ' ' #s >C }
(ct>1)? #g
}
:C #? >A
:T x=lx,
mi-, &o(c) mi+,
(x/ht!=lx/ht)?{ (lx%ht+1){ #g } }
>C
---------------------------------------------------------------------
■ タイムスタンプ
 カーソル位置に、各種フォーマットで日付・時刻を入力します。お好きなフォーマッ
トを残して、それ以外の行は先頭に「;」を入れてコメントにして下さい。
 日付D1,D2,D3、曜日W1,W2、時刻T1,T2
---------------------------------------------------------------------
50 ^\ "タイムスタンプ"
ax=$2A00, &i($21)
y=cx, m=dx>>8, d=dx&31, a=ax&7,
ax=$2C00, &i($21)
h=cx>>8, i=cx&63, j=dx>>8,
y-=1900, ; 1990->90
&?("%d/%02d/%02d ",y,m,d) ; D1: 90/12/01
p="JanFebMarAprMayJunJulAugSepOctNovDec"+m*3-3, ; D2:
&?("%d.%3s.'%d ",d,p,y) ; D2: 1.Nov.'90
p="SunMonTueWedThuFriSat"+a*3, ; W1:
&?("(%3s) ",p) ; W1: (Sat)
n='', ; D3:
&?("%c年%c%c月%c%c日 ", n+y%10,
(n+m/10)*(m>9), n+m%10,
(n+d/10)*(d>9), n+d%10
) ; D3: 90年12月1日
p="日月火水木金土"+a*2, ; W2:
&?("(%2s) ",p) ; W2: (土)
&?("%02d:%02d:%02d ",h,i,j) ; T1: 12:34:56
&?("%d:%02d %c.m. ",h%12,i,'a'+(h/12)*15) ; T2: 12:34 p.m.
---------------------------------------------------------------------
【注意事項】
・D3フォーマットは、のVer1.56以降でないと使用できません。というのは、
 このマクロでは%cに渡す値がゼロの時は、何も出力しない必要があるのですが、
 Ver1.55以前では、マクロの実行時エラーとなってしまうためです。
■ 指定桁折/連結
 tool.defの「指定桁折」マクロに、以下の機能を追加したものです。
 ・ブロックモードでは、ブロック内のみ処理。
 ・「桁折位置」でゼロを入力すると、改行を削除してベタ書きに戻す。
 ・禁則処理をする/しないの指定。(2ヵ所の「;」を削除)
 ・画面表示を抑止して、代りに処理中の行の行番号を表示。
---------------------------------------------------------------------
71 [ESC]Y "指定桁折/連結"
?. (yy)?? yy=70,
&g("桁折位置($yy),0=連結")
(r==-1)?.
(r>=0)? yy=r,
b="‘“(〔[{〈《「『【([{「",
e="’”)〕]}〉》」』】、。,.?!!),.?]}」",
f=" 。.?】", ; 連結する場合の行末文字
; (yy)?{ &a("禁則処理をします")
; (r<0)?. (r)?? b=e="", }
mi[, ei[, mi-, ei+, #M &s
(mb)?{ p=cp, #B (cp>p)?{ p=cp, #B } }
:A &k (r==$1B)? >Z ; [ESC]が押されたら中断
(mb)?{ (cp>=p)? >Z }
&m("Line:%d",ln)
(yy)?? >D
&x(yy)
(ct)?? >Z
(ct<2)? { #x >A }
:B #s &f(cd,b) (r>=0)? >B
:C #d &f(cd,e) (r>=0)? >C
(ct>1)?{ #m p+=2, }? #d >A
:D (ct)?? >Z
(ck)??{ #x >A }
:E #> #s &f(cd,f) (r>=0)?{ #d #d >D }
#d #g (ct<3)?{ #m >D } p-=2, >A
:Z (mb)? #b
ei], mi], #U &d
---------------------------------------------------------------------
【注意事項】
・半角文字で始まる行は、連結しません。
・桁折した文章を別の桁数で折り直したい場合は、いったん連結してから、再度桁折り
 して下さい。
・テキストバッファのサイズ(64KB)を越えるような大きなテキストでブロック
 指定すると、正常にブロック範囲を処理できない場合があります。
■ アウトラインプロセッサ
 #、##で始まる見出し行を元に、アウトラインファイル(OL)を作成し、
以下の操作が可能です。
 ・見出し行の抽出(OLの作成)
 ・見出し行から本文へのジャンプ(OLジャンプ)
 ・見出し行のカット&ペーストを本文へ反映(OLカット&ペースト)
【OLの作成】
 ・#または##を含む行(見出し行)を抽出し、OLファイルを開きます。
 ・OLファイル上でもう1度このマクロを実行すると、##を含む小見出しを
  取り除き、#の大見出しだけにします。これ以降は何も起こりません。
 ・OLファイルは、[ESC]Cでクローズします。
 ※テキストの1行目には見出しを書かないで下さい。
【OLジャンプ】
 ・OLファイル上で[CR]を押すと、元ファイルのその行へジャンプします。
 ※^KWで元のテキストとファイルが切り替わる状態にしておいて下さい。
 ※すでに[CR]キーが、別のマクロに割り当てられている場合は、空いている別の
  キーを割り当てて下さい。
【OLカット&ペースト】
 ・OLファイル上の見出し行を削除し、かつ元のテキストのその部分も削除
  します。トグルになっており、もう1度実行すると、今度はカーソルのある
  見出し行の上に、カットした見出しと元テキストをペーストします。
---------------------------------------------------------------------
50 [ESC]V "OLの作成"
?.
&s
(mr==254)? >C
wt[, &#Y(0)
#N "outline" #m #67
#F '' #m ; #:大見出し
#W #^ #<
:A #c (r)??{ #k #W #i #x #W #> >A }
#U #W r], &#Y(r) >Z
:C #^ #<
#F "" #m ; ##:小見出し
:D #c (r)??{ #y #e #> >D }
:Z #^ #< #@ &d
51 [CR] "OLジャンプ"
?.
(mr!=254)?{ #m. }
&01 #@ &d
52 [ESC]Z "OLカット&ペースト"
?.
(mr!=254)? .
&s
(fa)?{ &01 #i #W #i fa-, >Z }
&01 #b #W #y &01 #y #W fa+,
:Z #@ &d
01: (ct)?{ #> #b #< #G #W #c (r)? #r . }
#W #_
---------------------------------------------------------------------
《元ファイルの例》 
-----------------------------------------
(※ 先頭行には、見出しを書かない)
#1 VZの過去
 VZの過去はくらかった。
##1.1 マニアックなEZ
 ダイヤモンドキーなんか大きらいだぁ。
##1.2 オタッキーなマクロ。
 そういえばREXと呼んでいた頃もあったなぁ。
##1.3 バグとの死闘
 バグの需要と供給。
#2 VZの現在
 VZの現在はなお混沌。
##2.1 永遠のバグ
 どうして取っても取っても無くならないの?
##2.2 サポートとは
 ユーザーは、生かさず、殺さず。
#3 VZの未来
 VZに未来はあるか?
##3.1 正規表現
 そんなむずかしいの、わかんなーい。
##3.2 マウス対応
 Turboにゃ負けられん。でもサイズが・・。
##3.3 Windowsへ
 でも、所詮98じゃ、まともに動かんでしょう。
#4 付録
-----------------------------------------
《OLの作成(1回目)》
-----------------------------------------
#1 VZの過去
##1.1 マニアックなEZ
##1.2 オタッキーなマクロ。
##1.3 バグとの死闘
#2 VZの現在
##2.1 永遠のバグ
##2.2 サポートとは
#3 VZの未来
##3.1 正規表現
##3.2 マウス対応
##3.3 Windowsへ
#4 付録
-----------------------------------------
《OLの作成(2回目)》
-----------------------------------------
#1 VZの過去
#2 VZの現在
#3 VZの未来
#4 付録
-----------------------------------------
■ コンパイルとタグジャンプ
 編集テキストをコンパイルtccします。エラーが生じたら、ただちにconsole
ファイルを開きます。ここで、もう一度このマクロキーを押すと、エラー行をサーチ
して、該当ファイルにタグジャンプします。
---------------------------------------------------------------------
50 ^\ "コンパイル・タグジャンプ"
?.
(wn)?? >A
#S #m
#E "tcc " #P #m
(r)?{ #95 #U #< } .
:A #60 (r)?{ #x (r)?. >A }
#x a=wn, #O #e
#a #s (cd!='-')?{ #[ >A } ; 行番号がない場合はスキップ
#m (s)?{ #[ #[ >A }
---------------------------------------------------------------------
==============================================================================
End of macro.doc
==============================================================================