2021年12月23日木曜日

サブ窓の起動パスをフォルダごとに記憶

前回の記事のコピー/移動バージョンです。

僕は、移動やコピーをする際は、サブ窓で処理先を指定している。

  1. 処理元のファイルを選択
  2. Shift+Cを押してサブ窓を起動
  3. 処理先のフォルダに移動してShift+Enter


という順序だ。

今回は、サブ窓の起動パスをフォルダごとに記憶するようにする。

KC_main	= {	; PPcメイン窓
\C	,*string o,dest=%*getcust(S_destlist:%1)
	*ifmatch 0,0%so"dest" %: *string o,dest=%1
	*ppc -r -bootid:x -single -k %%j%so"dest" %%: *mapkey use,K_subwin %%: *linemessage コピー先を選択してください %%: *string i,temp_exec=*file !copy ,%%%%*extract(%n"%%%%%%%%@*8FCDN"),%%%%1 %%%%: *setcust S_destlist:%%%%*extract(%n"%%%%%%%%1")=%%%%1 %%%%: %%%%K"@Q"
\M	,*string o,dest=%*getcust(S_destlist:%1)
	*ifmatch 0,0%so"dest" %: *string o,dest=%1
	*ppc -r -bootid:x -single -k %%j%so"dest" %%: *mapkey use,K_subwin %%: *linemessage 移動先を選択してください %%: *string i,temp_exec=*file !move ,%%%%*extract(%n"%%%%%%%%@*8FCDN"),%%%%1 %%%%: *setcust S_destlist:%%%%*extract(%n"%%%%%%%%1")=%%%%1 %%%%: %%%%K"@Q"
}

K_subwin	= {
\ENTER	,*execute ,%si"temp_exec"
}

S_destlistに処理元のフォルダパスと処理先のフォルダパスをセットにして保存している。ここに記載がない場合はカレントディレクトリが起動パスになる。

参考

2021年12月22日水曜日

サブ窓から実行ファイルに投げる(拡張子ごとにパスを記憶)

僕はファイルを特定のプログラムで開きたいとき、

  1. 処理元のファイルを選択
  2. Shift+Xを押してサブ窓を起動
  3. 実行ファイルにカーソルをあわせてShift+Enter

という操作で実現できるようにしている。

今回は、サブ窓で最初に開くフォルダを拡張子ごとに記憶できるようにする。


以下を編集して取込。

KC_main	= {	; PPcメイン窓
\X	,*ppc -r -bootid:x -single -k %%J%ME_execList %%: *mapkey use,K_subwin %%: *linemessage EXEファイルを選択してください %%: *string i,temp_exec=*ifmatch .exe %%%%: %%%%Ob %%%%FCD %%%%*extract(%n"%%%%%%%%#FCD") %%%%: %%%%K"@Q" %%%%: *ifmatch !0,0%%%%*extract(%n"%%%%%%%%FT") %%%%: *setcust E_execList:%%%%*extract(%n"%%%%%%%%FT"),%%%%FCD
}

K_subwin	= {	** comment **
\ENTER	,*execute ,%si"temp_exec"
}

E_execList	= {
*	,D:\bin
}

実行ファイルをE_execListに登録、次回からはそのパスを開くようにしている。 E_execList:*は登録した拡張子がない場合にサブ窓で開くパス。各自読み替えてください。

参考

2021年12月21日火曜日

指定ハイライトを順次マーク

 PPxでは指定ハイライトが1~7まで用意されている。

カレントディレクトリに指定ハイライトがある場合、それを順次マークできるようにする。


以下のスクリプトを保存。これは、引数に1~7の数値を取り、その数値以上かつ最も近い数値の指定ハイライトをマークするスクリプト。また、マークした指定ハイライトの数値+1を戻り値として返す。

highlightmark.js

//!*script
// 第一引数 : 1~7の数値
// 戻り値   : マークした指定ハイライトの数値+1(数値が7のときは1)
// 
// 第一引数の数値以上かつ最も近い数値の指定ハイライトをマークする

if (PPx.Arguments.Length < 1){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit();
}

var arg = parseInt(PPx.Arguments.Item(0));
var hl_1st_num = 0;
var hl_last_num = 0;
if (arg > 7 || arg <1 ) PPx.Quit();

// 指定ハイライトnの値を取得
// 最小値をhl_1st_numへ、引数の数値以上かつ最も近い値をhl_last_numへ
// hl_last_numが存在する場合、エントリマークを実行
for (var i = 1; i < 8; i++) {
  for (var j = 0; j < PPx.EntryAllCount; j++) {
    if(PPx.Entry(j).Highlight == i){
      if (!hl_1st_num) {
        hl_1st_num = i;
      }
      if (arg > i) continue;
      hl_last_num = i;
      PPx.Entry(j).Mark = 1;
    }
  }
  if (hl_last_num) break;
}

// hl_last_numが存在しない場合のエントリーマーク実行
if (hl_1st_num && !hl_last_num) {
  for (var i = 0; i < PPx.EntryAllCount; i++) {
    if(PPx.Entry(i).Highlight == hl_1st_num){
      PPx.Entry(i).Mark = 1;
    }
  }
}

// 返り値の処理
if (hl_last_num == 7) {
  PPx.Result = 1;
} else if (!hl_1st_num && !hl_last_num) {
  PPx.Result = 1;
} else if (hl_last_num) {
  PPx.Result = hl_last_num+1;
} else if (hl_1st_num) {
  PPx.Result = hl_1st_num+1;
}


以下のコマンドを適当なキーに登録する。

*ifmatch 0,0%si"hl" %: *string i,hl = 1
*unmarkentry
*string i,hl=%*script(%0\Script\highlightmark.js,%si"hl")


参考 つかさのほえほえ日記:ハイライトモード

2021年12月19日日曜日

ハイライトモード

キーバインドを一時的にハイライトモードに変更。ハイライトを使いやすくする。

また、ハイライトを保存、再現できるようにする。

Paper Plane xUI Key Moduleが必要。


以下を編集して取込。


KC_main = {
F1	,*mapkey use,K_highlightmode %: *linemessage HIGHLIGHT MODE: Press H for HELP
}

K_highlightmode = {
SPACE	, *markentry -highlight:1 %R %: %K"@DOWN"
\SPACE	, *markentry -highlight:0 %R %: %K"@UP"
^S	, *makelistfile 00_LISTFILE.txt -basic -highlight
H	, %"highlight mode"%I"SPACE%bt:ハイライト%bn\SPACE%bt:ハイライト解除%bn1~7 %bt:指定ハイライトの変更%bn^S%bt:ハイライトの保存%bnESC%bt:ハイライトモード終了"
ESC	, *mapkey delete,K_highlightmode %: *linemessage HIGHLIGHT MODE END
1	, *linemessage ハイライト1に変更しました %: *setcust K_highlightmode:SPACE,*markentry -highlight:1 %%R %%: %%K"@DOWN"
2	, *linemessage ハイライト2に変更しました %: *setcust K_highlightmode:SPACE,*markentry -highlight:2 %%R %%: %%K"@DOWN"
3	, *linemessage ハイライト3に変更しました %: *setcust K_highlightmode:SPACE,*markentry -highlight:3 %%R %%: %%K"@DOWN"
4	, *linemessage ハイライト4に変更しました %: *setcust K_highlightmode:SPACE,*markentry -highlight:4 %%R %%: %%K"@DOWN"
5	, *linemessage ハイライト5に変更しました %: *setcust K_highlightmode:SPACE,*markentry -highlight:5 %%R %%: %%K"@DOWN"
6	, *linemessage ハイライト6に変更しました %: *setcust K_highlightmode:SPACE,*markentry -highlight:6 %%R %%: %%K"@DOWN"
7	, *linemessage ハイライト7に変更しました %: *setcust K_highlightmode:SPACE,*markentry -highlight:7 %%R %%: %%K"@DOWN"
}

F1を押すとハイライトモードになり、一時的にキーバインドが


  • SPACE :ハイライト
  • \SPACE :ハイライト解除
  • 1~7 :指定ハイライトの数値変更
  • ^S :ハイライトの保存(フォルダ内に00_LISTFILE.txtを作成)
  • H :ヘルプ表示
  • ESC :ハイライトモード終了


となる。

Ctrl+Sで00_LISTFILE.txtに保存したハイライトを再現したい場合は

*markentry -set:00_LISTFILE.txt


とすればいい。

例えば特定のディレクトリで、00_LISTFILE.txtが存在すればハイライトを再現するようにしたいなら、次のようになる。

*diroption -thispath cmd:"*ifmatch ""o:e,a:d-"",""00_LISTFILE.txt"" %: *markentry -set:00_LISTFILE.txt"


2021年12月18日土曜日

PPvにPPcのマーク状態を表示

僕はPPv上からPPcのカーソルを動かして、表示ファイルを変更するようにしている。

今回は、PPcのマーク状態がPPvでもわかるようにする。

Paper Plane xUI Module Junk partsが必要。

E_cr	= {	; [Enter]用判別
TXT	,*one2oneview
:UTEXT	,*one2oneview
JPEG	,*one2oneview
:JPEG	,*one2oneview
}
_Command	= {	; ユーザコマンド・関数
one2oneview	= *ppv -popup:%N %*name(CD,"%R","%1") -k  *mapkey use,K_one2one
}

K_one2one	= {
UP	,%K-C"@UP" %: %K-C"N" %: *ifmatch 1,%*extract(C,%%*EntryMark) %: *linemessage marked
DOWN	,%K-C"@DOWN" %: %K-C"N"  %: *ifmatch 1,%*extract(C,%%*EntryMark) %: *linemessage marked
LEFT	,%K-C"@LEFT" %: %K-C"N" %: *ifmatch 1,%*extract(C,%%*EntryMark) %: *linemessage marked
RIGHT	,%K-C"@RIGHT" %: %K-C"N" %: *ifmatch 1,%*extract(C,%%*EntryMark) %: *linemessage marked
SPACE	,%K-C"@SPACE" %: %K-C"N" %: *ifmatch 1,%*extract(C,%%*EntryMark) %: *linemessage marked
\SPACE	,%K-C"[\SPACE" %: %K-C"N" %: *ifmatch 1,%*extract(C,%%*EntryMark) %: *linemessage marked
}

以下のように、*linemessageでマーク状態をステータス行に表示する。

2021年12月14日火曜日

PPeでhowmファイルを作成

僕はhowmファイルとPPxでメモ環境を構築している(参照:MoE)。

今まではhowmファイルの作成、編集にはxyzzyを用いていたが、これをPPeでできるようにする。これでPPx単体でMoEをできるようになり、導入のハードルが下がるかも?

*edit %*nowdatetime(Y-N-D-HMS).howm -new -k *editmode -modify:silent %%: *insert "= %%bn%%bn[%*nowdatetime(Y-N-D-HMS)]" %%: *cursor -3,3,0

以下をPPxフォルダに保存。

template.howm

=  


=の後ろに空白があり、それに続けて改行を3つ入れている。*insertでは改行文字の入力ができないので(多分)必要になる。

以下のコマンドで、howmファイルを作成できる。

*edit %*nowdatetime(Y-N-D-HMS).howm -new -k *editmode -modify:silent %%: *insertfile %%0template.howm %%: *insert "[%*nowdatetime(Y-N-D-HMS)]" %%: *cursor -3,3,0

追記2021-12-25

最近の更新で*insertで改行を入れられるようになった!感謝!

2021年12月10日金曜日

PPeを前回閉じた際の位置と大きさで開く

 PPeは起動するたびに位置と大きさが変化するので、エディタ代わりにするには少し使いにくい。

そこで、PPeを前回と同じ位置と大きさで開くようにする。

まず、ユーザーコマンドを登録。

_Command	= {	; ユーザコマンド・関数
savepossize	= *setcust %*arg(1):l=%*windowrect(,l)
 *setcust %*arg(1):t=%*windowrect(,t)
 *setcust %*arg(1):w=%*windowrect(,w)
 *setcust %*arg(1):h=%*windowrect(,h)
loadpossize	= *string o,fuga=%*arg(1)
 *windowposition %N.,%*getcust(%so"fuga":l),%*getcust(%so"fuga":t)
 *windowsize %N.,%*getcust(%so"fuga":w),%*getcust(%so"fuga":h)
}

K_ppeで適当なキーに以下を登録。S_ppepossizeにサイズと位置を保存してからPPeを閉じるコマンドです。

*savepossize S_ppepossize %: %k"&F4"

以下のコマンドで、S_ppeposizeに保存したサイズと位置を再現してPPeが起動する。

*edit -new -k *loadpossize S_ppepossize