PPxでコメントファイルを使う−ファイル名の代わりに一行目を表示
前置き
どうもつかさです。前々回のリストファイルに続き、PPxで一見したらどう使っていいのかよく分からない機能を使ってみようのコーナーです。
今回やるのはコメントファイルの話。以前、howmのメモをタスクフォースの際に別のフォルダに移す、ということをいったけれどそれをどう閲覧するか、という話と関わってます。
コメントファイル
コメントファイルというのは、ヘルプによると
カレントディレクトリに 00_INDEX.TXT というファイルがある場合、このファイルの内容を元に各エントリのコメントを用意します。
とのこと。見たら分かるので、例をのっけます。
[ぷよぷよ]
├ 2010-01-25-035054.howm
├ 2010-01-25-070706.howm
├ 2010-01-28-202739.howm
├ 2010-01-31-084726.howm
├ 2010-02-12-203507.howm
└ 2010-02-14-022249.howm
という構造のフォルダがあるとき、以下を00_INDEX.txtという名前で、そのフォルダ(この場合はぷよぷよフォルダ)に保存します。
00_INDEX.txt
2010-01-25-035054.howm ぷよぷよ攻略法 2010-01-25-070706.howm 究極連鎖法について書いたの 2010-01-28-202739.howm GTRの方法 2010-01-31-084726.howm GTRの方法 2010-02-12-203507.howm 配ぷよについて考えた 2010-02-14-022249.howm ぷよぷよ対戦記録
ファイル名 Tab コメント
という書式ですね。見えにくいけど、ファイル名とコメントの間の空白はTabです。よく目をこらしたらきっとわかりますよね^^
あと、一行目は空白なのがポイントです。
それと、ファイル名はそのフォルダにあるものしか有効でない。
デフォルトのキーでは、Shift+W でコメントファイルを作成、Shift+Oでコメント操作メニュー。Shift+Oで出るメニューでコメントの編集を押し、何かを書くとそのフォルダを抜けるときに、コメントファイルを作成しますか、と出る。そこでOKを出すと作成されます。直接編集したいときはShift+Wです。
上のコメントファイルを作ったあと、「;」を押してエントリ表示のメニューを出し、エントリ表示をcommentにすると、次のようになります。
つまり、表示形式として、ファイル名や属性や更新日時などと共にコメントというのが用意してあり、それは00_INDEX.txtに従って表示されるということです。
ファイルの一行目表示
それでは、これをどう使うかという話になります。
僕が思いついたのは、メモファイルの一行目をコメントにすること。そして、コメントをファイル名の代わりに表示すること。一テキストファイルに一つのメモで一番上にタイトル、という方法をとっていたのならこれは可能になる。
テキストファイルでメモをためる場合、一々ファイル名を付けるのがいろんな理由でネックになることが多い。TextTreeのときもそういう話をしてましたね。だから、たいていファイル名は適当にして、一行目にタイトルをつけることになる。
しかしこれだと、タイトルで目的のファイルをファイラで探すと言うときに困難になる。一々、中身を見なければ分からないわけだ。たとえば、僕は以前タスクフォースの話をしたときに、過去のhowmのファイルは別フォルダにカテゴリ別に移すとかいってたけど、そのファイルをPPxで見るとこんな感じになる。
ファイル名だけでは判別が困難なのです。連動ビューを使っても、一々見るのは面倒。
というわけで、コメントを利用して、一行目をファイル名の代わりに表示できたらいいのではないだろうか。それにより、PPxでもタイトル一覧から探すことが可能になるのではないか。
つまりhowmでやっていたことがPPxでもできるというわけですね。しかも、PPxの場合はファイラだから操作のしやすさは比べものにならない。howmだと、一列にずらっと並んでいるだけだがPPxだと上下左右自由に動ける。またフォルダ構造を作ることも当然可能だし外部のエディタなりなんなりとの連携も容易。かつて、TextTree→PPx+エディタでやろうとしていたことが完全な形でできるようになる。
JScriptによるコメントファイルの作成
ではどうやってコメントファイルを作成するかだが、当然スクリプトを利用する。自動でフォルダ内のパスを取得し、それをもとにコメントファイルの書式で記述されたテキストファイルを作ればいいわけだ。
ListFileと同じく、コメントファイルというのもただのテキストファイルだからこのことが可能になるのですね。
では、コードを。
MakeComment.js
//!*script var strLine = "\n"; currentDir = PPx.Extract("%1"); // ファイル操作 var objApl = new ActiveXObject("Shell.Application"); var objFolder = objApl.NameSpace(currentDir); // ファイルのリストを取得 var objFolderItems = objFolder.Items(); // フォルダ内のファイルとフォルダへの処理 for(var i=0;i<objFolderItems.Count;i++) { var objItem = objFolderItems.Item(i); var objFileSys = new ActiveXObject("Scripting.FileSystemObject"); // ディレクトリでなく空ファイルでもなく00_INDEX.txtでもなく拡張子がtxtかhowmの場合に処理する if (objItem.IsFolder==false && objItem.Size != 0 && objItem != "00_INDEX.txt" && (objFileSys.GetExtensionName(objItem) == "txt" || objFileSys.GetExtensionName(objItem) == "howm")) { // ファイルの内容を取得 objInFile = objFileSys.OpenTextFile(objItem, 1); // ファイル名+Tab+一行目+改行をstrに代入 // howmの形式の場合は、objInFile.ReadLine().slice( 2 )に変えると最初の二文字を切り取ってくれる。 str = objItem + "\t" + objInFile.ReadLine() + "\n" strLine = strLine + str; objInFile.Close(); }else{} } // カレントディレクトリに00_INDEX.txtを作成 strCreateFile = objFileSys.BuildPath(currentDir,"00_INDEX.txt"); objFileSys.CreateTextFile(strCreateFile); // 00_INDEX.txtに書き込み objOutFile = objFileSys.OpenTextFile(strCreateFile, 2); objOutFile.Write(strLine); objOutFile.Close();
説明
やっているのは、PPx.Extract("%1")でカレントディレクトリを取得して、その中に入っているファイルのリストを作り、そこから
ファイル名+tab+一行目
というのをそれぞれのファイルに対して作り、00_INDEX.txtに書き込んでいるだけ。
とりあえず拡張子がtxtとhowmの場合のみ、コメントファイルを作るようにしてある。
もし、howmでメモをとっていて、一行目の「= 」が鬱陶しく思ったのなら
str = objItem + "\t" + objInFile.ReadLine() + "\n"
を
str = objItem + "\t" + objInFile.ReadLine().slice( 2 ) + "\n"
に変えると、最初の2文字をスライスしてくれる。
エラー処理をしてあるけどもしかしたら都合が悪い場合もあるかもしれないです。一行目が空行だとか長すぎるだとかの処理はしていないので。また気が向いたら直しておきます。
使い方
上のコードを、MakeComment.jsという名前でScriptフォルダ内に保存。
適当なキーに、
*script %0\Script\MakeComment.js
を登録。
これで、そのキーを押すとコメントファイルが作成されるようになります。
エントリ表示のカスタマイズ
僕の場合、最初からメニューにあるcommentだと、コメントが長すぎて全部表示されない。
そこで、独自にエントリ表示を作ります。
PPX.CFGのMC_celSの中に、
mycomment = M cF50,5 C s1
を書き込み、カスタマイザーでPPX.CFGを取り込みます。
一応説明しておくと、右の英数字はそれぞれ、表示する内容と位置を示している。この場合、左から
マーク ファイルネーム(コメントが無かったときに表示) コメント 空白
となってます。英語の横の数字は大きさを表しています。詳しくはヘルプを。
これで、「;」を押したときのメニューでmycommentを押すと、次のようになります
あと、PPX.CFGでXC_awidを0にしておいた方がいいかもしれない。僕の場合だと、これをオンにしていたせいで、エントリ表示をいじる度に窓が右のほうにびゅーんってのびて面倒だった。
XC_awid = 0 ; エントリ表示幅が変わったら窓幅を調節 0:しない 1:する