home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 2001 June
/
VPR0106A.BIN
/
OLS
/
JED194V
/
JEDDOC.LZH
/
TABSPC.MCR
< prev
next >
Wrap
Text File
|
1994-05-28
|
3KB
|
116 lines
;**********************************************************
; JED マクロサンプル
; 'TABSPC.MCR'
; [TAB←→SPACE変換マクロ]
; Ver 0.10 Oct.1993 初版
; 0.11 May 1994 バグ修正
;
; Written by H.Orikawa 1993, 1994
;
; 注) "..."形式の文字列内のタブコードについては考慮していない
;**********************************************************
;&t
!01
(r--) >? {
&10 ;TAB->SPACE
&20 ;SPACE->TAB
}
&d ;画面再表示
&v(1) ;カーソル表示オン
&b(0) ;終了の合図(^^)
/
;***** TAB→スペース
10:
(mi) ? #v ;挿入モード
#^ ;テキスト先頭へ
&v(0) ;カーソル表示オフ
&s ;変換中の表示抑制
:A
&k ;キー入力
(r == $1B) ? . ;[ESC]が押されたら中断
(cd == $09) ? { ;現カラム位置が[TAB]コードなら
#d ;1文字(1タブ分)進めて
x = lx, ;そこのカラム位置を記憶
#h ;左1文字([TAB]コード)を削除
(x - lx) { ' ' } ;カラム数の差分だけ空白を出力する
} ? { ;[TAB]コード以外なら
#d ;1文字右へ
}
(cd == $0D) ? { ;行末なら
#d ;1文字進め次行の先頭へ
>A
}
(cd == $0A) ? . ;テキスト末尾なら終了
>A
;***** スペース→TAB
20:
(mi) ? #v ;挿入モード
#^ ;テキスト先頭へ
&v(0) ;カーソル表示オフ
&s ;変換中の表示抑制
:A
&k ;キー入力
(r == $1B) ? . ;[ESC]が押されたら中断
(cd == ' ') ? { ;現カラム位置が空白コードなら
x = lx, ;最初に見つけたカラム位置を記憶
&40 ;[SPACE]->[TAB]変換のローカルマクロ(サブルーチン)コール
} ? { ;空白コード以外なら
(cd == '\"') ? { ;"xxxxx" 形式の文字列部をスキップする
&50
}
(cd == '\'') ? { ;'x' 形式の文字定数部をスキップする
&60
}
#d ;1文字右へ
}
(cd == $0D) ? { ;行末なら
#d ;1文字進め次行の先頭へ
>A
}
(cd == $0A) ? . ;テキスト末尾なら終了
>A
40:
#d ;1文字右へ進め
(cd != ' ') ? { ;空白コード以外の文字が現れたら
. ;空白1個の場合なので何もせずリターン
}
:L ((lx-1) % ht == 0) ? { ;タブストップ位置に来たら
(lx - x) { ;空白コード部分が続く間
#h ;[BS]で戻り
}
#21 ;[TAB]コードを挿入して
. ;リターン
}
(cd != ' ') ? . ;空白コード以外の文字が現れたら何もせずリターン
#d ;1文字右へ
>L ;空白コードが続く間ループする
50:
:W #d ;1文字右へ
(cd == '\\') ? { ;"...\"...." の場合の例外
#d #d
}
(cd == $0D) ? . ;次の["]の前に行末が来たら戻る
(cd == '\"') ? . ;文字列終端の["]が来たら戻る
>W
60:
:S #d ;1文字右へ
(cd == '\\') ? { ;'\'' の場合の例外
#d #d
}
(cd == $0D) ? . ;次の[']の前に行末が来たら戻る
(cd == '\'') ? . ;文字定数終端の[']が来たら戻る
>S
;ポップアップメニュー
01: "TAB・スペース変換", 22, 2
"T|TAB→スペース"
"S|スペース→TAB"
.