[ 新規に投稿する ]

全角スペースに色を付ける 文No.08774
石田 さん 18/09/19 08:25 [ コメントを投稿する ]
  他文書から秀丸に貼り付けて、まだファイル名もないテキストに
高速全置換マクロ(replaceallfast )を実行しても、行番号の背景色は変わりません。
代わりに 全角スペース□ → ■ と、スペース記号の色が変わる文があったと思いますが
あちこち探しても見つかりません。

replaceallfast "^\\f[^ ○「◎§〈・[(<「■([◆★●※―〔【〒-][^$]" , " \\1" , hilight , regular;
[ ]
RE:08774 全角スペースに色を付ける 文No.08775
秀丸担当 さん 18/09/19 09:50 [ コメントを投稿する ]
 
常に行頭の全角空白に色を付けるとしたら、強調表示を使う方法があります。
[その他]→[ファイルタイプ別の設定]→[デザイン]→[強調表示]でユーザー定義のものを追加して、正規表現ONで「^ 」という文字列を追加すると常に色が付きます。
一時的にやるとしたら、この状態を同設定の保存ボタンからhilightファイルに保存しておいて、マクロ上ではloadhilight文を使う方法と一時的に強調表示の適用ができます。


または、検索ダイアログの「すべて検索」ボタンの「すべて検索 - 色付け」に相当することであれば、強調表示を使わずに、一時的に部分的な色付けができます。
マクロにすると以下のような感じになります。

setcompatiblemode 0x20000;
replaceallfast "^\\f[^ ○「◎§〈・[(<「■([◆★●※―〔【〒-][^$]" , " \\1" , hilight , regular;
setsearch "^ ",0x10; //0x10=regular
colormarkerallfound -1,0x0000ff;


または、そもそもの問題として、新規作成状態で行番号の編集マークが付かないのを付けるようにするには、少々裏技的ですが、changenameで適当な名前を付ける方法があります。
適当な名前だと適当なファイルが作成されてしまう危険がありますが、"nul"というファイル名だとファイルシステム上予約されていて、ファイルが生成されないようになります。
例えば以下のようにします。

setcompatiblemode 0x20000;
if(filetype=="new"){
  disablehistory 0x0100;
  changename "nul";
  clearupdated;
}
replaceallfast "^\\f[^ ○「◎§〈・[(<「■([◆★●※―〔【〒-][^$]" , " \\1" , hilight , regular;

この方法はそこそこ使い道があると思うので、changenameのヘルプにも書いておこうと思います。
[ ]
RE:08775 全角スペースに色を付ける 文No.08776
石田 さん 18/09/19 21:19 [ コメントを投稿する ]
  わざわざマクロまで書いてもらい恐縮です。

 このマクロはもう7年程前に、外から入ってくるワープロソフトで書かれた原稿
対策で作った物の一行です。当時は論理行頭の一字下げはソフトウエアでやって
いたり、半角スペース3個で字下げをしていたりと、秀丸で見ると無政府状態
でした。秀丸解説本やマクロライブラリに登録されている同様のマクロを参考に
して作りました。その後、微調整をして今も毎日仕事で活躍しています。
句読点やミニュートの統一、縦中横等と一本にして使っています。

 7年前に作ったマクロを引っ張り出してきたのは、もちろんVer8.85から実装予定
のクイック全置換を利用したマクロ高速化が狙いです(replaceallfastに代わる文)。
   (今でも高速ですが、もっと早くしたい……)
 この機能は本当に早いです。試しに「円周率計算ソフト スーパーπ」が計算した
小数点以下3355万桁(55桁70万行余、折り返し改行あり)のテキストに
検索 ^
置換 #####
正規表現 オン
 で、テストすると通常の全置換(9秒)、クイック全置換(2秒)で完了します。
   Win7 32bit メモリ4GB
 誰もが仕事で使うマクロですので、最後に教えてもらった行番号の背景色が
変わるのが一番判りやすいかな? と思っているところです。

 本当に有り難うございました。
[ ]
RE:08775 全角スペースに色を付ける 文No.08777
石田 さん 18/09/19 21:37 [ コメントを投稿する ]
   教えてもらった「裏技」を使ったマクロで、秀丸に貼り付けただけの
ファイルの行番号背景色が変化しました。テストしたのは、上記
円周率計算ソフト70万行のファイルです。これでどこが変更されたのか
見やすくなりました。感謝します。

title "―― ●マクロ実行中";
setcompatiblemode 0x20000;
if(filetype=="new"){
  disablehistory 0x0100;
  changename "nul";
  clearupdated;
}

replaceallfast "^[  \\t]+$" , "" , regular;
replaceallfast "^[ ]+" , "" , regular;
replaceallfast "^\\f[^ ○§「◎〈・[(<「■([◆★●※―〔【〒-][^$]" , " \\1" , regular;
   message "字下げ総数は" +str(result)+ "個です。";
  gofiletop;
endmacro;
[ ]
RE:08776 全角スペースに色を付ける 文No.08778
秀丸担当 さん 18/09/20 17:02 [ コメントを投稿する ]
 
V8.85β5でreplaceallquickを追加してみて気づいたのですが、\fを区切りにしたタグがうまくできていませんでした。
次のβ版で修正させていただきます。
現状では括弧を使ったタグだとできます。

あと、編集マークについては、クイック全置換は全部をまるごと入れ替えるので、全ての行が編集済みになる結果となってしまいます。
クイック全置換を使う場合は、今回のケースにおいては、「^ 」を強調表示する方式のほうがいいかもしれないです。
[ ]
RE:08778 全角スペースに色を付ける 文No.08779
石田 さん 18/09/20 21:45 [ コメントを投稿する ]
   何度も、小マクロを見てもらい感謝しています。

>\fを区切りにしたタグがうまくできていませんでした。次のβ版で修正させていただきます。
>現状では括弧を使ったタグだとできます。

恐縮です。(...)内でも角括弧は利用できるようですが、このマクロでは記号が多く、紛らわしいので
今も \\f を使っています。

>クイック全置換を使う場合は、今回のケースにおいては、「^ 」を強調表示する方式のほうがいいかもしれないです。

「^ 」を強調表示に入れてみました。変更行は着色されて見やすくなりました。ただ
今はまだ、replaceallfast や \\f を使っているせいかも知れませんが、マクロ処理前のファイルで
すでに行頭に全角スペースがある行も着色されてしまいます。(全角スペース2個目からは普通の色)

loadhilight はマクロ終了して、他の画面に切り替えたら、強調表示「^ 」を解放する手立てはないでしょうか?
またマクロヘルプを読んでいたら、loadhilightとresultは余り「相性」が良くないように感じたので、
「//」を使い無効にしておきました。クイック全置換では自動的に置換個数が表示されるので、
そもそも必要なくなった行ですし。gofiletop;も必要なくなりました。

title "―― ●マクロ実行中";
setcompatiblemode 0x20000;
replaceallfast "^[  \\t]+$" , "" , regular;
replaceallfast "^[ ]+" , "" , regular;
replaceallfast "^\\f[^ ○§「◎〈・[(<「■([◆★●※―〔【〒-][^$]" , " \\1" , regular;
loadhilight "全角スペース.hilight", 0;
//   message "字下げ総数は" +str(result)+ "個です。";
//  gofiletop;
endmacro;

[ ]
RE:08779 全角スペースに色を付ける 文No.08780
秀丸担当 さん 18/09/21 08:48 [ コメントを投稿する ]
 
「^ 」の強調表示は、編集された行ではなく行頭の全角空白を意味しいているだけなので、編集前も編集後も色がつくことになってしまいます。
必ず編集された行にする場合は、やはりreplaceallfastとchangenameの方法しかないと思います。


>loadhilight はマクロ終了して、他の画面に切り替えたら、強調表示「^ 」を解放す
>る手立てはないでしょうか?

「ファイルを閉じる」コマンド(標準でCtrl+F4)で、新規作成状態にしたときの状態のことかと思います。
このときはタブモードか非タブモードで動作が違っていて、タブモードの場合は設定が新規作成状態にリセットされます。
非タブモードの場合は、現在の状態(現在開いているファイルの状態)をそのまま残すようになっています。
従来からある互換性のためにこの挙動になっていますが、タブモードと同様に、新規作成状態にリセットされる設定があったらいいと思います。
今後検討します。

現状でなんとかするとしたら、無理矢理ですが、[マクロ]→[マクロ登録]→[自動起動]の「ファイルを閉じる直前」のマクロでloadhilightする方法が考えられます。


>またマクロヘルプを読んでいたら、loadhilightとresultは余り「相性」が良くないよ

resultは何か別の文が実行されるたびに書き換わる可能性があるので、replaceallfastを実行した直後に変数に退避しておくといいです。
例:
replaceallfast ...
#test = result;
loadhilight ...
message str(#test);
[ ]
RE:08780 全角スペースに色を付ける 文No.08781
石田 さん 18/09/23 09:12 [ コメントを投稿する ]
  >「^ 」の強調表示は、編集された行ではなく行頭の全角空白を意味しいているだけなので、編集前も編集後も色>がつくことになってしまいます。
>必ず編集された行にする場合は、やはりreplaceallfastとchangenameの方法しかないと思います。

 はい、やはり前回教えて貰ったやり方が一番便利だと思います。自動起動マクロはまだ
自分には荷が重すぎる気がします。replaceallquick文 はもう少し研究してから挑戦したいと思います。

 有り難うございました。

[ ]

[ 新規に投稿する ]