home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2001 January / VPR0101A.BIN / OLS / JED194V / JEDDOC.LZH / OUTLINET.MCR < prev    next >
Text File  |  1993-10-09  |  4KB  |  206 lines

  1. ;***************************************************************
  2. ;    JED マクロサンプル
  3. ;    'OUTLINET.MCR'
  4. ;    [アウトライン編集用マクロ]
  5. ;    Ver 0.10    1993 初版
  6. ;        0.90    Oct.1993
  7. ;
  8. ;    Written by H.Orikawa 1993
  9. ;
  10. ;***************************************************************
  11. ;[機能]
  12. ;
  13. ;【行の抽出】
  14. ; ・見出し行を抽出し、outlineファイルを開きます。
  15. ; ・outlineファイルは、[ESC]Cでクローズします。
  16. ;
  17. ;【outlineからのジャンプ】
  18. ; ・outlineファイル上で[CR]を押すと、元のテキストのその行へジャンプします。
  19. ;
  20. ;【カット&ペースト】
  21. ; ・outlineファイル上の見出し行を削除し、かつ元のテキストのその部分も削除
  22. ;  します。トグルになっており、もう1度実行すると、今度はカーソルのある
  23. ;  見出し行の上に、カットした見出し/元テキストをペーストします。
  24.  
  25.  
  26.     ?.
  27.     &b(1)
  28.     &m("アウトラインマクロ実行中")
  29.     o = 0,                    ;Outline ファイル番号(初期値)
  30.     t = wn,                    ;元ファイル番号記憶
  31.     fa-,                    ;カット&ペースト実行フラグをリセット
  32.     >N
  33.  
  34.  
  35. ;サブルーチン(高速化のため最初の方に配置)
  36. 91:
  37.     (ct != 2) ? {            ;カーソル上の文字が全/半角空白、制御コード以外
  38.         #k                    ;行コピー
  39.         #W                    ;outlineファイルへ
  40.         #i                    ;行ペースト
  41.         #x                    ;一行下へ
  42.         #W                    ;元ファイルへ
  43.     }
  44.     .
  45.  
  46.  
  47. :N
  48. ;******    メインループ
  49. :A    &p
  50.     c = r,
  51.     (c == #03) ? {                            ;[ESC]が押された
  52.         &11
  53.         >A
  54.     } ? {
  55.         (c == #m && wn == o) ? { &30 >A }    ;[CR]
  56.         &o(c)
  57.     }
  58.     >A
  59. ;******
  60.  
  61.  
  62. ;[ESC]V    "行の抽出"
  63. 20:
  64.     &s                        ;画面表示停止
  65.     #N                        ;新規ファイルオープン
  66.     #82                        ;ファイル名称変更
  67.     #18                        ;行頭まで削除
  68.     "outline" #m            ;"outline"という名称に変更
  69.     o = wn,                    ;outlineファイル番号記憶
  70.     #W                        ;元ファイルへ
  71.     &#Y(4)                    ;ウィンドウ左右分割
  72.     #W                        ;outlineファイルへ
  73.     #65                        ;ウィンドウ分割位置変更
  74.     (wx-25) { #d } #m        ;右側(outline側)を25桁幅にする
  75.     #W #^                    ;元ファイル文頭へ
  76.     l = 0,                    ;行番号初期化
  77.  
  78.     &d
  79.     &m("【抽出行で[RET]】")
  80. :L
  81.     &p
  82.     (r != #m) ? { &o(r) >L }
  83.     #<                        ;行頭へ
  84.     (ct < 2) ? >L
  85.     &m("                 ")
  86.     &s
  87.     n-,
  88.     (ct == 2) ? {
  89. :M        (ct == 2) ? {
  90.             #d
  91.             n++,
  92.             >M
  93.         }
  94.     }
  95.     #^
  96. :A
  97.     (l != ln) ? {
  98.         #<                    ;行頭へ
  99.         (n != 0) ? {
  100.             nn = n,
  101.             (nn) {
  102.                 (ct != 2) ? >B
  103.                 #d
  104.             }
  105.         }
  106.         (ct >= 2) ? {
  107.             &91
  108.         }
  109. :B
  110.         l = ln,                ;行番号記憶
  111.         #x                    ;一行下へ
  112.         >A
  113.     }
  114.     #U
  115.     #W #^                    ;outlineファイル文頭へ
  116.     &d                        ;画面表示再開
  117.  
  118. ;[CR]    "outlineからのジャンプ"
  119. 30:
  120.     &s                        ;画面表示停止
  121.     #W                        ;隣のウィンドウに移り
  122.     &#T(t)                    ;元ファイルをオープン
  123.     #^                        ;文頭へ
  124.     #W                        ;outlineファイルに戻る
  125.     &90
  126.     #W                        ;outlineファイルに戻る
  127.     &d                        ;画面表示再開
  128.  
  129. ;[ESC]Z    "カット&ペースト"
  130. 40:
  131.     &s                        ;画面表示停止
  132.     #W                        ;隣のウィンドウに移り
  133.     &#T(t)                    ;元ファイルをオープン
  134.     #W                        ;outlineファイルに戻る
  135.     yy = ly,
  136.     #_ (10){'?'} #m            ;文末に「???...」+改行を挿入
  137.     #U                        ;元の位置にカーソル移動
  138.     (yy != 0) ? {
  139.         (yy) { #w }
  140.     }
  141.     #W                        ;元ファイルに移動
  142.     #_ #m (10){'?'} #m        ;文末に改行+「???...」+改行を挿入
  143.     #^                        ;文頭へ
  144.     #W                        ;outlineファイルに戻る
  145.     (fa) ? {                ;ペースト時
  146.         #k                    ;outline上のペースト位置のカーソル行コピー
  147.         #W                    ;元ファイルに移動
  148.         #^                    ;文頭へ
  149.         #F                    ;検索モードに入る
  150.         #i                    ;行挿入(上でコピーした行)
  151.         #m                    ;[RET](検索実行)
  152.         #03                    ;[ESC](検索モードから抜ける)
  153.         #p                    ;ブロックペースト
  154.         #W                    ;outlineファイルに戻る
  155.         #i                    ;行挿入
  156.         fa-,                ;フラグリセット
  157.     } ? {
  158.         &90
  159.         #W                    ;outlineファイルへ
  160.         #y                    ;対象行削除
  161.         &90                    ;(削除行の次の行を元ファイル上で検索)
  162.         #b                    ;ブロックモード
  163.         #U                    ;(対象行に戻る)
  164.         #54                    ;ブロック範囲のカット(クリップボードへの移動)
  165.         #W                    ;outlineファイルへ
  166.         fa+,                ;フラグセット
  167.     }
  168.     yy = ly,
  169.     #_ (11){#h} #U            ;outlineファイル上のマーク行を削除
  170.     (yy != 0) ? {
  171.         (yy) { #w }
  172.     }
  173.     #W                        ;元ファイルへ
  174.     #_ (12){#h} #U            ;元ファイル上のマーク行を削除
  175.     #W                        ;outlineファイルへ
  176.     &d                        ;画面表示再開
  177.     
  178. ;
  179. ;outlineファイル中のカーソル行の内容を元ファイル中から検索
  180. ;
  181. 90:
  182.     #k                        ;行コピー(outlineファイル上)
  183.     #W                        ;元ファイルに移動
  184.     #F                        ;検索モードに入る
  185.     #i                        ;行挿入(上でコピーした行)
  186.     #m                        ;[RET](検索実行)
  187.     #03                        ;[ESC](検索モードから抜ける)
  188.     #<
  189.     .
  190.  
  191.  
  192. ;アウトラインコマンド解析([ESC]押下時)
  193. 11:
  194.     &m("[ESC]+V(作成),Z(切り貼り),C(閉じる)")
  195.     &p
  196.     &m("                                   ")
  197.     c = r & $DF,                        ;大文字変換
  198.     (c == 'V') ? { &20 . }                ;[ESC]V
  199.     (c == 'Z' && wn == o) ? { &40 . }    ;[ESC]Z
  200.     (c == 'C' && wn == o) ? {            ;[ESC]C
  201.         #C                                ;ウィンドウのクローズ
  202.         (mr) ? { 'y' }                    ;変更有り
  203.         .
  204.     }
  205.     .
  206.