説明

リストファイルは様々な用途に利用でき、また表示内容も大きく異なるのでリストごとに表示形式を設定したくなります。 このような場合、ディレクトリ別設定(XC_dset)を使ってパスごとに表示方法を設定できますが、 リストファイルごとの設定が増えればXC_dsetの内容は肥大し管理も面倒になります。
そこで、リストファイルに直接”cmd:”の内容を書き込んで、開くときに参照する方法を考えました。
これなら使わなくなったリストファイルの設定がXC_dsetに残ることもなく管理の手間も係りません。やったね。


エントリリストの更新時にメタデータも自動更新されユーザーが登録したメタデータは消えてしまうため、 内容を更新する必要があるリストファイルではこの方法を使えません。
通常のリストファイルは今までどおりにXC_destにパスごとの設定を記述し、スクリプトなどを使って書き出した 一時使用用途のリストファイルではメタデータを参照できるように変更しました。

使い方

メタデータ”cmd”が設定されたリストファイルを開く。

開いても表示が変更されないときはファイルを読み取れていない可能性があります。
ppmではリストファイルを”utf16le”とみなして扱うため、他形式で扱う場合はlfDset.jsの第3引数に
エンコードを指定します。sjis,utf8が指定できます。
以前はutf8での利用を想定していましたが、問題があるので”utf16le”でリストファイルを扱うように変更しました。

設定

  1. ppx-plugin-manager v0.94以降をインストールし、設定[section]内のXC_destのコメントを外す。
  2. “XC_dset:listfile”の”*diroption”に
    cmd:"*execute ,%\*script(""%sgu'ppmlib'\lfDset.js"",<標準の表示形式>,cmd[,<文字エンコード>])"
    を設定する

    仕様するスクリプト名を、lfMetadata.jsからlfDset.jsに変更。
    第1引数をリストファイルのパスから<標準の表示形式>に変更。メタデータも個別設定もないときには
    ここで指定した表示形式が適用されます。"(空文字)"を指定すると表示形式は変更されません。
    第2引数は参照するメタデータのid名です。ここではcmd固定です。
    第3引数の<文字エンコード>は、`sjis`,`utf8`,`utf16le`を指定できます。標準はutf16leです。

XC_dset = {
listfile      = B0000,-1,-1,-1,-1,-1,B000000,B00000000000000000000000001,
  cmd:"*execute ,%*script(""%sgu'ppmlib'\lfDset.js"",リストファイル,cmd,utf16le)"
path\to\a.txt = B0000,-1,-1,19,-1,-1,B000000,B00000000000000000000000001,
  cmd:"*setcust X_bg:P_%n=background.jpg%:*setcust X_bg:T_%n=20%:*color back" disp:"一覧"
}

上のXC_destの内容で、”path\to\a.txt”と”path\to\b.txt”をリストファイルとして開いたときは
以下のような挙動になります。

  • path\to\a.txt
    読み込み順でソート、表示形式を”一覧”に変更、背景画像に”background.jpg”を読み込む
  • path\to\b.txt
    リストファイル内にメタデータ”cmd”があればその値を実行し、なければ表示形式を”リストファイル”に変更

リストファイルにメタデータを設定する

基本的にはプラグイン側でメタデータを設定するため、ユーザーがリストファイルに直接メタデータを書き込む必要はありませんが、 更新を必要としないリストファイルであれば自分でメタデータを追記して自動変更を適用することもできます。

メタデータ;cmd=<設定内容>の記述例

  • 表示形式を変更 ;cmd=*viewstyle -temp format "<formats>"
  • 背景画像を変更 ;cmd=*setcust X_bg:P_%n=<background.jpg> %: *setcust X_bg:T_%n=20 %: *color back

背景画像を変更する場合、XC_dset:*に戻す処理を設定する必要があります。
cmd:"*deletecust X_bg:P_%n %: *deletecust X_bg:T_%n %: *color back"