るし技研

どこかのだれかのしやわせのために。

[テキストファイルの各種情報を表示する秀丸マクロセット]
 秀丸エディタでファイルを開いてマクロを実行すると、以下の情報がダイアログ表示されます。
 マクロの実行開始時にAltキーが押されていた場合には、実行終了後、ダイアログの内容がクリップボードに転送されています。
  • GetFileStatus.mac
    • マクロを実行したファイルの名前(「無題」の場合は非表示)
    • ファイルサイズ(Bytes単位)
    • タイムスタンプ(「無題」の場合は非表示)
    • ファイル内の文字数
      • 改行コード計上 / ブランク計上
      • 改行コード非計上 / ブランク計上
      • 改行コード非計上 / ブランク非計上
    • 400字詰め原稿用紙換算(デフォルト)の
      • 行数
      • 枚数
      • 最終ページの行数

  • 2007/12/03 - 1.00
    • GetFileStatus.mac修正
      • 1.00Beta5でdisabledraw命令が消えていたのを修正(凡ミス)
      • 処理対象外のキャラクタセット、不明なキャラクタセットに対するセーブ処理をShift-JISのロジックと統合
    • 一般公開開始

  • hmutl.dll
    • 現在サポートしていないキャラクタセットはどうするか?
  • GetFileStatus.mac
    • ダイアログへの表示/非表示設定をINIファイルへ外出しした方が便利?
    • 正直、現状のSaveTargetCharSet_Subは格好悪いと思う(^^;;;
      キャラクタセットや改行コードは本当に変数値で指定できないのか?
  • readme.txt
    • 導入に関する解説と細かい補足は別ファイル化した方がいい?
  • 全般
    • 1.00Beta4→1.00Beta5で駄目な凡ミスを出してしまったので、テストの仕組みを考える

[このマクロについて]--------------------------------------------------
----------------------------------------------------------------------
【マクロ名】GetFileStatus 1.00
【登 録 名】GetFileStatus_0100
【制作者名】る印@「るし技研」(auge2662@hotmail.com)
【動作環境】秀丸エディタが動作する環境
【公 開 日】2007/12/03
【作成方法】LHA形式で圧縮
【 種  別 】フリーウェア
【配布転載】圧縮ファイル自体についてはご自由にどうぞ
      内容の修正後配布、個別ファイルの再配布はお勧め致しかねます
【サ イ ト】http://psyx.niu.ne.jp/labo/GetFileStatus/
【最 新 版】上記サイト
----------------------------------------------------------------------


-[バージョン&最新の修正内容]-----------------------------------------

2007/12/03 - 1.00
      GetFileStatus.mac修正
       ・1.00Beta5でdisabledraw命令が消えていたのを修正(凡ミス)
       ・処理対象外のキャラクタセット、不明なキャラクタセットに
        対するセーブ処理をShift-JISのロジックと統合
      一般公開開始


--[概略]--------------------------------------------------------------

 秀丸エディタでファイルを開いてこのマクロを実行すると、実行した秀丸エ
ディタが開いているファイルの内容について、以下の情報がダイアログで表示
されます。
 マクロの実行開始時にAltキーが押されていた場合には、実行終了後、ダイ
アログの内容がクリップボードに転送されています。

 ・GetFileStatus.mac
  →マクロを実行したファイルの名前(「無題」の場合は非表示)
   ファイルサイズ(Bytes単位)
   タイムスタンプ(「無題」の場合は非表示)
   ファイル内の文字数
    ・改行コード計上 / ブランク計上
    ・改行コード非計上 / ブランク計上
    ・改行コード非計上 / ブランク非計上
   400字詰め原稿用紙換算(デフォルト)の
    ・行数
    ・枚数
    ・最終ページの行数


 このうち、以下の情報については、表示される情報は「そのファイルを最後
にセーブした時点」の情報です。

   タイムスタンプ(「無題」の場合は非表示)


 以下については、表示される情報は必ず「マクロを実行した時点」の情報と
なります。
 またこの時、テキスト中のある部分を選択した状態で実行されていた場合に
は、以下については選択部分だけの情報を表示します。

   ファイルサイズ(Bytes単位)
   ファイル内の文字数
    ・改行コード計上 / ブランク計上
    ・改行コード非計上 / ブランク計上
    ・改行コード非計上 / ブランク非計上
   400字詰め原稿用紙換算(デフォルト)の
    ・行数
    ・枚数
    ・最終ページの行数

 ですから、もし仮に、前回のセーブからマクロ実行までの間にファイルサイ
ズが2倍になっていたとしても、表示されるステータスは『「ファイルサイズ
が2倍」になった状態』のものです。


---[同梱のファイル]---------------------------------------------------

 このセットは以下のファイルで構成されています。

  GetFileStatus.mac → 秀丸エディタから呼び出すマクロ。
  hmutl.dll     → マクロが使う関数を収めたDLL。
  hmutl.ini     → マクロが使う設定ファイル。
  readme.txt     → 能書き。現在あなたが御覧のこのファイル。

 なお、テンポラリなので同梱はされていませんが、デフォルトの設定では、
マクロが格納されたフォルダの中に「hmutl.tmp」というテンポラリファイル
を作ります。
 大丈夫だとは思いますが、マクロのフォルダに「hmutl.tmp」という名前の
大事なファイルを置いている方は注意してください。


----[基本的な使い方]--------------------------------------------------

  1. 上記セットのうち「readme.txt」を除く3ファイルを、「マクロファイ
   ル用のフォルダ」にコピーしてください。

  ※「readme.txt」は動作に必要ありませんが、置いてあっても害にはなり
   ません。選別が面倒なら4ファイル纏めてコピーしても大丈夫です。

  ※「マクロファイル用のフォルダ」がどこであるかは、メニューを「その
   他」→「動作環境」の順で辿り、表示されるダイアログの「環境」で確
   認できます。
   そこに何も書かれていない場合は、実行されているhidemaru.exeと同じ
   フォルダです。

  2. テキストファイルを秀丸エディタで開き、GetFileStatus.macを実行し
   ます。


-----[お奨めの使い方]-------------------------------------------------

  1. 上記セットのうち「readme.txt」を除く3ファイルを、「マクロファイ
   ル用のフォルダ」にコピーしてください。

  2. メニューから「マクロ」→「マクロ登録」の順で辿り、
   GetFileStatus.macを任意の場所に登録します。

  3. メニューから「その他」→「キー割り当て」の順で辿り、登録した
   GetFileStatus.macにショートカットキーを割り当てます。

  4. テキストファイルを編集していて、文字数やファイルサイズが知りたく
   なったらショートカットでGetFileStatus.macを呼び出します。


 あとはオマケですが、作った僕がどんな風に使っているかというと、

 Ctrl + 1    → GetFileStatus.mac起動
 Ctrl + Alt + 1 → GetFileStatus.mac起動

 のように、同じマクロを2箇所のショートカットに割り当てています。
 それで普段、ぱっと情報が知りたい時にはCtrl + 1で動かして、ダイアログ
の中に表示されているデータを何かに再利用したいケースではCtrl + Alt + 1
で動かすような使い分けをしています。


------[補足]----------------------------------------------------------

 GetFileStatus.macは以下のような動作をします。
 マクロをカスタマイズする際などに参考にしてください。

  1. GetFileStatus.macは選択範囲内のデータ(何も選択されていなければ現
   在アクティブなファイルの全データ)をhmutl.tmpにコピーする
  2. GetFileStatus.macはhmutl.dll上の関数を呼び出す
  3. hmutl.dll上の関数は対象のファイルについて情報を集める
   ・アクティブなファイル → ファイル名とタイムスタンプ
   ・hmutl.tmp       → ファイルサイズ、文字数、ページ数
    (コピーされた内容が0Byteの場合はチェックしません)
   集めた情報をhmutl.iniに書き込み、処理をGetFileStatus.macに戻す
  4. GetFileStatus.macはhmutl.iniから情報を読み出して表示する
   (アクティブなファイルが無題の場合は、ファイル名とタイムスタンプ
   は表示しません)
  5. 起動時にAltキーが押されていた場合は、表示した内容をクリップボー
   ドに転送する

 このため、hmutl.ini、及びhmutl.tmpは、GetFileStatus.macを実行する上
では必須となります。

---

 hmutl.iniに書き込まれる値について補足します。
 マクロをカスタマイズする際などに参考にしてください。

| Name      → ファイル名
| CharSet     → キャラクタセット
| Size      → ファイルサイズ(Bytes単位)
| TimeStamp    → タイムスタンプ("YYYY/MM/DD HH24:MI:SS"形式)
| CRLF      → 文字数(改行コードも字数に含める)
| NoCRLF     → 文字数(改行コードは字数に含めない)
| NoCRLF_NoBLANK → 文字数(改行コードと全/半角空白は字数に含めない)
| LineCount    → 1行あたりの文字数をLineLengthとする場合の行数
| PageCount    → 1枚あたりの行数をPageLengthとする場合のページ数
| ModCount    → 最終ページの行数

---

 hmutl.dll上に実装された関数のインターフェイスは次の通りです。

| extern "C" int GetStatus(LPTSTR TargetFileName, LPTSTR IniFileName);
|
| 引数 :
|  LPTSTR TargetFileName → 情報を取得するファイルのフルパス名称
|  LPTSTR IniFileName   → INIファイルのフルパス名称
|
| 終了値 : 0(正常終了) / -1(異常終了)
|   0 → 正常終了
|  -1 → 異常終了

---

 hmutl.iniの禁則文字リストについてです。

| LineLength  → 原稿用紙1行あたりの文字数
| PageLength  → 原稿用紙1枚あたりの行数

 これらの値から原稿用紙の定義が決まります。
 デフォルトで設定されている値はどちらも20なので、枚数算定の基準となる
原稿用紙のサイズは「1枚あたり20文字x20行→400字詰め」となります。

| NoTop_NoHang → 行頭禁則文字(ぶら下げ不可)
| NoTop_Hang  → 行頭禁則文字(ぶら下げ可)
| NoEnd     → 行末禁則文字

 原稿用紙にテキストを流し込んだ場合の枚数を算出する際に使います。
 デフォルトで設定されている値は、秀丸の禁則処理で指定されているものを
そのままコピーしたものです。この状態であれば、秀丸の「追い出し+句読点
のぶら下げ」と同じ解釈で枚数や行数を計算します。

---

 hmutl.iniのテンポラリファイル名について補足します。

| Temporary  → ファイル名

 ここに書かれた名前のファイルが、テンポラリファイルの名前になります。
 なお、それがフルパスのファイル名であればそれを使い、ファイル名しか書
かれていなければ、「hmutl.iniと同じフォルダ(=秀丸マクロのフォルダ)」の
中にある、その名前のファイルを使います。
 ですから、どうしてもマクロのフォルダに「hmutl.tmp」という名前の大事
なファイルを置いておかざるを得ない方は、上記の値を「hmutl.tmp」以外の
適当な名前に変えていただければ、共存できるようになります。

 なお、テンポラリファイルはマクロが実行される度に再作成しますので、実
行時点でファイルがなくても大丈夫です。
 そのため、テンポラリファイルはセットに同梱されません。


-------[制限事項]-----------------------------------------------------

 以下のキャラクタセットに対応します。
 これら以外についてはすべてShift-JISだったものとして扱います。
  Shift-JIS ※秀丸の新規ファイルはShift-JISです
  Unicode(UTF-16)
  EUC
  JIS
  UTF-7
  UTF-8

 このうちUnicode(UTF-16)については、Little Endianで処理を行います。
 Big Endianのデータは秀丸の機能でLittle Endianに変換してからDLLの処理
を実行します。

---

 Shift-JISで表現できない文字が新規のファイルに書かれている場合など、
マクロ実行中に文字置換に関するダイアログが表示されることがあります。
 「はい」で回答してください。


--------[履歴]--------------------------------------------------------

2007/12/03 - 1.00
      GetFileStatus.mac修正
       ・1.00Beta5でdisabledraw命令が消えていたのを修正(凡ミス)
       ・処理対象外のキャラクタセット、不明なキャラクタセットに
        対するセーブ処理をShift-JISのロジックと統合
      一般公開開始
2007/12/01 - 1.00Beta5
      hmhtl.dll修正
       ・INIファイルから取得したキャラクタセット情報に従って、
        ファイルの読み方を変えるようにする仕様変更
      hmutl.ini修正
       ・「CharSet」値の追加
      GetFileStatus.mac修正
       ・テンポラリファイルのキャラクタセットと改行コードが、マ
        クロが実行された秀丸と同じになるようにする仕様変更
      readme.txt修正
       ・内容の拡充
2007/11/26 - 1.00Beta4
      GetFileStatus.mac修正
       ・マクロ実行開始時にAltが押されていた場合は、ダイアログ
        の内容をクリップボードに転送する仕様変更
       ・余計な変数の初期化部分を削除
       ・コメントを修正
      readme.txt修正
       ・普通はヘッダに書いてあると思しきことがらを「クレジット
        その他」から切り離してヘッダ部分へ移動
       ・内容の拡充
2007/11/20 - 1.00Beta3
      GetFileStatus.mac修正
       ・「保存するファイルが空だったときは確認する」チェック有
        効時の不具合解消
       ・範囲選択時は選択された部分だけを情報採取の対象とする仕
        様変更
2007/11/19 - 1.00Beta2
      hmutl.dll修正
       ・処理内容を分割し、GetStatus()をラップ関数として再構成
      hmutl.ini修正
       ・「Temporary」値の追加
      GetFileStatus.mac修正
       ・テンポラリファイル名(デフォルト)変更
       ・必ずテンポラリを利用するよう仕様変更
       ・拡張子を".txt"に限定する制限を解除
       ・INIファイル, DLL修正に伴う変更
      readme.txt修正
       ・上記変更の反映
       ・バージョン表記の変更
       ・補足を拡充
       ・「るし技研」開設に伴う連絡先の変更
2007/11/15
      GetFileStatus.mac修正
       ・テンポラリ使用時の画面状態復元機能が完成
       ・コメント記法「/* 〜 */」を排除
       ・コメントを少しだけ拡充
2007/11/14 - 1.00Beta1
      暫定公開


--------[免責事項その他]----------------------------------------------

・免責  :このマクロによってどんな被害を蒙っても責任はとれません。
     :御意見御希望その他諸々が必ず反映されるとは限りません。
     :という前提ですが、できるだけのことはしたいと思います。
・開発環境:秀丸エディタ Version7.05
     :Microsoft VisualC++.NET
     :WindowsXP Professional(SP2)
     :ExpLzh Version5.23
     :Windows2000 Professional(SP4)
・謝辞  :尾崎貞夫さん(@Twitter, mixi)
     :なべ@生きる死亡FLAGさん(@mixi)
     :義忠さん(@mixi)
     :mixiコミュニティ「秀丸エディタ」参加者の皆様
     :内部テストにご協力いただいた皆様
     :‥‥‥ありがとうございました。


======================================================================

©2007- "るし技研(仮)" ALL RIGHTS RESERVED.
Internet Explorer 6.xで動作確認をしています。