home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 November / VPR9711A.ISO / VPR_DATA / Special / Inyoupa5 / inyoupa5.lzh / INYOU_PA.MAC < prev    next >
Text File  |  1997-03-30  |  7KB  |  348 lines

  1. //  引用符付き貼り付け   INYOU_PA.MAC  ver.5.00
  2. //  by JRくん(GFB03426)  1997.3.31
  3.  
  4. //  【御礼】
  5. //  FWINAL MES 8 #00718  あじゃぱ 氏作 inyou.mac を参考とさせて頂きました。
  6. //  この場を借りて御礼申し上げます。
  7.  
  8.  
  9.  
  10.     disableinvert;
  11.     if (readonly) {
  12.         message "「上書き禁止」なので実行を中止します。";
  13.         endmacro;
  14.     }
  15.     if (browsemode) {
  16.         message "「閲覧モード」なので実行を中止します。";
  17.         endmacro;
  18.     }
  19.     if (rectselecting) {
  20.         message "BOX範囲選択中は実行できません。";
  21.         endmacro;
  22.     }
  23.  
  24.  
  25.     //  引用符を取得
  26.     $inyoufuini = getinistr("HIDEMARU.INI", "Env", "RefMark");
  27.     $inyoufu = midstr($inyoufuini, 1, strlen($inyoufuini) - 2);
  28.     #inyoufuLen = strlen($inyoufu);
  29.  
  30.  
  31.     //  INIファイルを取得
  32.     $INIdir = getinistr("HIDEMARU.INI", "Env", "MacroPath");
  33.     if ($INIdir == "") $INIdir = hidemarudir;
  34.     $INIfile = $INIdir+"\\INYOU_PA.INI";
  35.  
  36.  
  37.     //  各種設定を取得
  38.  
  39.     //  改行位置変更機能(簡易整形)を使用するかどうか
  40.     #SEIKEIexecute   =getininum($INIfile,"Env","SEIKEIexecute");
  41.  
  42.     //  折り返す文字数
  43.     #TmpOrikaesiNum  =getininum($INIfile,"Env","OrikaesiNum");
  44.  
  45.     //  禁則処理をするかどうか
  46.     #Kinsoku         =getininum($INIfile,"Env","Kinsoku");
  47.  
  48.     //  顔文字ラップをするかどうか
  49.     #KAOMOJIwrap     =getininum($INIfile,"Env","KAOMOJIwrap");
  50.  
  51.     // 「顔文字ラップ」の項目数
  52.     #NumberOfKAOMOJI =getininum($INIfile,"KAOMOJIwrap","NumberOfKAOMOJI");
  53.  
  54.     // 「顔文字ラップ」項目
  55.     #n = 1;
  56.     while (#n <= #NumberOfKAOMOJI) {
  57.         $KAO[#n] = getinistr($INIfile,"KAOMOJIwrap",str(#n));
  58.         #n = #n + 1;
  59.     }
  60.  
  61.     //  「顔文字ラップ」時の、右端をはみ出す最大文字数
  62.     #KAOMOJIwrapMax  =getininum($INIfile,"Env","KAOMOJIwrapMax");
  63.  
  64.  
  65.     // 整形途中を表示しないかどうか(1:表示しない, 0:表示する)
  66.     #DisableDraw     =getininum($INIfile,"Env","DisableDraw");
  67.  
  68.     // 改行位置変更時のメッセージ
  69.     $changecolumn    =getinistr($INIfile,"Env","changecolumn");
  70.  
  71.     //  顔文字ラップ時の禁則処理用
  72.     $TKin = getinistr("HIDEMARU.INI", "Env", "TKin");
  73.  
  74.  
  75. //  初期処理
  76.  
  77.     //  折り返し文字数の設定
  78.     if (#TmpOrikaesiNum <= 0) {
  79.         #OrikaesiNum = width + #TmpOrikaesiNum;
  80.     } else {
  81.         #OrikaesiNum = #TmpOrikaesiNum;
  82.     }
  83.  
  84.  
  85.     //  「顔文字」の長さ、ふるい分け用文字列を取得
  86.     if (#KAOMOJIwrap) {
  87.         #a = 1;
  88.         $KAOMOJIArray  = "";
  89.         while (#a <= #NumberOfKAOMOJI) {
  90.             #KAO[#a] = strlen($KAO[#a]);
  91.             $KAOMOJIArray =$KAOMOJIArray + $KAO[#a];
  92.             #a = #a + 1;
  93.         }
  94.     } else {
  95.         $KAOMOJIArray  = "\n"; //←顔文字ラップしないためのダミー
  96.     }
  97.  
  98.  
  99.     //  自動インデント を 一時的に 無し にする
  100.     #indentstate = indentstate;
  101.     if (#indentstate != 0) {
  102.         config "i0";
  103.     }
  104.  
  105.     //  上書きモードの場合は、一時的に挿入モードにする
  106.     #overwrite = overwrite;
  107.     if( #overwrite ) overwriteswitch;
  108.  
  109.  
  110.     if (selecting) delete;
  111.     if (column != 0) insertreturn;
  112.  
  113.  
  114.     //  禁則処理の設定
  115.     #KinsokuChange = no;
  116.     if (#Kinsoku != -1) {
  117.         #prevKinsoku = kinsokustate;
  118.         if (#Kinsoku != #prevKinsoku) {
  119.             #KinsokuChange = yes;
  120.             if (#Kinsoku == yes) {
  121.                 config "k+";
  122.                 #KinsokuExecute = yes;
  123.             } else {
  124.                 config "k-";
  125.                 #KinsokuExecute = no;
  126.             }
  127.         }
  128.     }
  129.  
  130.  
  131.     #changecolumn = no;
  132.  
  133.     beginclipboardread;
  134.  
  135.  
  136.  
  137. //  整形 on ・禁則処理 on 時
  138. if ((#SEIKEIexecute) && (#KinsokuExecute)) {
  139.  
  140.  
  141.     //  ウィンドウを自動的に小さくする を 一時的に off にする
  142.     #AutoShrink = getininum("HIDEMARU.INI", "Env", "AutoShrink");
  143.     if (#AutoShrink) {
  144.         writeininum "HIDEMARU.INI", "Env", "AutoShrink", no;
  145.         envchanged;
  146.     }
  147.  
  148.      //  折り返し文字数の設定
  149.     #prevOrikaesiNum = width;
  150.     config "w" + str(#OrikaesiNum);
  151.  
  152.  
  153.     if (#DisableDraw) disabledraw;
  154.  
  155.  
  156. //  メインループ
  157.     $c = getclipboard;
  158. while ($c != "") {
  159.  
  160.     insert $c;
  161.     if (column != 0) insertreturn;
  162.  
  163.     //  タブ -> スペース変換
  164.     up;
  165.     selectline;
  166.     tospace;
  167.     escape;
  168.  
  169. NormalLineLoop:
  170.  
  171.     insert $inyoufu;
  172.  
  173.     golineend;
  174.     if (code == 0x0d) {
  175.         down;
  176.         golinetop2;
  177.     } else {
  178.         right;
  179.  
  180.         if (strstr($KAOMOJIArray, char(code)) != -1) call KAOMOJIwrap;
  181.  
  182.         if (code == 0x0d) {
  183.             down;
  184.             golinetop2;
  185.         } else {
  186.             insertreturn;
  187.             #changecolumn = yes;
  188.             goto NormalLineLoop;
  189.         }
  190.     }
  191.     $c = getclipboard;
  192. }
  193.  
  194.     config "w" + str(#prevOrikaesiNum);
  195.  
  196.  
  197. //  整形 on ・禁則処理 off 時
  198. } else if ((#SEIKEIexecute) && (#KinsokuExecute == no)) {
  199.  
  200.     if (#DisableDraw) disabledraw;
  201.  
  202.     $c = getclipboard;
  203.  
  204. while ($c != "") {
  205.  
  206.     //  与えられた文字列の中から1表示行分だけ表示
  207.     insert $c;
  208.     if (column != 0) insertreturn;
  209.  
  210.     //  タブ -> スペース変換
  211.     up;
  212.     selectline;
  213.     tospace;
  214.     escape;
  215.  
  216.     insert $inyoufu;
  217.  
  218. InsertInyoufuLoop2:
  219.  
  220.     //  整形の実行
  221.     if (linelen2 > #OrikaesiNum) {
  222.         movetolineno #OrikaesiNum + 1, lineno;
  223.         if (strstr($KAOMOJIArray, char(code)) != -1) call KAOMOJIwrap;
  224.         if (code != 0x0d) {
  225.             insertreturn;
  226.             insert $inyoufu;
  227.             #changecolumn = yes;
  228.             goto InsertInyoufuLoop2;
  229.         }
  230.     }
  231.  
  232.     //  次の行に移動
  233.     golineend2;
  234.     down;
  235.     golinetop2;
  236.  
  237.     $c = getclipboard;
  238. }
  239.  
  240. //  整形 off 時
  241. } else {
  242.  
  243.     if (#DisableDraw) disabledraw;
  244.  
  245.     $c = getclipboard;
  246.  
  247. while ($c != "") {
  248.  
  249.     //  与えられた文字列の中から1表示行分だけ表示
  250.  
  251.     insert $c;
  252.     if (column != 0) insertreturn;
  253.  
  254.     //  タブ -> スペース変換
  255.     up;
  256.     selectline;
  257.     tospace;
  258.     escape;
  259.  
  260.     insert $inyoufu;
  261.  
  262.     //  次の行に移動
  263.     golineend2;
  264.     down;
  265.     golinetop2;
  266.  
  267.     $c = getclipboard;
  268. }
  269. }
  270.  
  271. //  終了処理
  272. MacroEnd:
  273.  
  274.     if (#KinsokuChange) {
  275.         if (#prevKinsoku) {
  276.             config "k+";
  277.         } else {
  278.             config "k-";
  279.         }
  280.     }
  281.  
  282.     if (#AutoShrink) {
  283.         writeininum "HIDEMARU.INI", "Env", "AutoShrink", yes;
  284.         envchanged;
  285.     }
  286.  
  287. //  改行位置変更時のフッター処理
  288.     if ((#changecolumn) * ($changecolumn != "")) {
  289.         insert $changecolumn + "\n";
  290.     }
  291.  
  292.     if (#DisableDraw) enabledraw;
  293.  
  294.     if (#indentstate == 1) {
  295.         config "i1";
  296.     } else if (#indentstate == 3) {
  297.         config "i2";
  298.     } else if (#indentstate == 5) {
  299.         config "i3";
  300.     } else if (#indentstate == 7) {
  301.         config "i4";
  302.     }
  303.  
  304.     if( #overwrite ) overwriteswitch;
  305.     enableinvert;
  306.  
  307.     endmacro;
  308.  
  309.  
  310.  
  311. //  顔文字ラップ
  312.  
  313. KAOMOJIwrap:
  314.  
  315.     #xx = column + 1; #yy = lineno;
  316.  
  317.     #n = 1;
  318.     while (#n <= #NumberOfKAOMOJI) {
  319.         #xxx = #xx - #KAO[#n] + 1;
  320.         if (#xxx < 1) #xxx = 1;
  321.         movetolineno #xxx, #yy;
  322.         left;
  323.         #clm = column;
  324.         beginsel;
  325.         golineend2;
  326.         $LINE = gettext(seltopx, seltopy, selendx, selendy);
  327.         escape;
  328.         movetolineno #xx, #yy;
  329.         #KAOMOJIx = strstr($LINE, $KAO[#n]);
  330.         if ((#KAOMOJIx != -1) &&
  331.            ((#clm + #KAOMOJIx) >= (#xx - #KAO[#n] )) &&
  332.            ((#clm + #KAOMOJIx) <= (#xx + #KAO[#n] - 1))) {
  333.             #xend = #clm + 1 + #KAOMOJIx + #KAO[#n];
  334.             if (#xend <= (#OrikaesiNum + #KAOMOJIwrapMax + 1)) {
  335.                 movetolineno #xend, #yy;
  336.                 if (kinsokustate) {
  337.                     if(strstr($TKin,char(code))!=-1) right;
  338.                 }
  339.                 break;
  340.             } else {
  341.                 movetolineno #clm + 1 + #KAOMOJIx, #yy;
  342.                 break;
  343.             }
  344.         }
  345.         #n = #n + 1;
  346.     }
  347. return;
  348.