2022年12月31日土曜日

PPv中心の連動ビュー(mapkey編)

PPv中心の連動ビューには、「PPvを複数起動すると挙動が意図しないものになる」というデメリットがあった。これを避ける方法として、PPcとPPvのIDを一対一対応させる等色々試みてたが(参考:PPcとPPvのIDを一対一対応させる - つかさのほえほえ日記跡地)、*mapkeyで解決しそうだなと最近気づいた。

準備

以下を編集して取込。

E_cr = { ; [Enter]用判別
TXT ,*ppv %*name(CD,"%R","%1") -k *mapkey use,K_syncppv %%: *string i,ppcid=%%*rightstr("%n", 1)
PNG ,*ppv %*name(CD,"%R","%1") -k *mapkey use,K_syncppv %%: *string i,ppcid=%%*rightstr("%n", 1)
}

K_syncppv	= {
UP	,*execute C%si"ppcid",%%K"@UP" %: %v%*extract(C%si"ppcid""%(%*name(CD,"%R","%1")%)")
DOWN	,*execute C%si"ppcid",%%K"@DOWN" % %v%*extract(C%si"ppcid""%(%*name(CD,"%R","%1")%)")
LEFT	,*execute C%si"ppcid",%%K"@LEFT" % %v%*extract(C%si"ppcid""%(%*name(CD,"%R","%1")%)")
RIGHT	,*execute C%si"ppcid",%%K"@RIGHT" % %v%*extract(C%si"ppcid""%(%*name(CD,"%R","%1")%)")
SPACE    ,*execute C%si"ppcid",%%K"@SPACE" % %v%*extract(C%si"ppcid""%(%*name(CD,"%R","%1")%)")
\SPACE    ,*execute C%si"ppcid",%%K"@\SPACE" % %v%*extract(C%si"ppcid""%(%*name(CD,"%R","%1")%)")
}

やり方

PPcでE_crに登録した拡張子(ここではtxtかpng)にカーソルをあわせ、EnterでPPvを起動。PPvでカーソルを動かすと、起動元のPPcのカーソルが連動し、対応したファイルを表示する。

2023-01-15追記

シンプルに書き直した

2022年12月5日月曜日

サブ窓を使ってファイルを投げる

Shift+Xでファイル判別をし、以下のように動作させる。

  • EXEファイル:サブ窓で選択したファイルあるいはフォルダを開き、そのパスを記憶
  • EXE以外:サブ窓で選択したEXEファイルで開き、拡張子ごとにパスを記憶
  • フォルダ:サブ窓で選択したEXEファイルで開き、そのパスを記憶

例:xyzzy.exeにカーソルをあわせてShift+Xを押す。

PPC[X]が開く。

テキストファイルにカーソルをあわせてShift+Enter

テキストファイルが開く。

次にxyzzy.exeにカーソルをあわせてShift+Xを押した際、PPC[X]が以前選択したテキストファイルにカーソルをあわせた状態で開くことになる。

_Command	= {	; ユーザコマンド・関数
opensubwin	= *ppc -r -bootid:x -single -k *jumppath %*arg(1) -entry %%: *fitwindow %NC,%%NC,20 %%: *mapkey use,K_subwin %%: *linemessage %*arg(2)
}

E_subwin	= {
*	,*setcust _User:temp_exec=%%Ob %%FCD %%*extract(%n"%%%%#FCD") %%: %%K"@Q" %%: *setcust S_ext2exe:%%*extract(%n"%%%%FT")=%%FCD
	*opensubwin %*getcust(S_ext2exe:%FT),EXEファイルを選択してください
EXE	,*setcust _User:temp_exec=%%Ob %%*extract(%n"%%%%FCD") %%#FCD %%: %%K"@Q" %%: *setcust S_exe2dist:%%*extract(%n"%%%%FCD")=%%1%\%%R
	*opensubwin %*getcust(S_exe2dist:%FDC),実行対象のファイルあるいはフォルダを選択してください
:DIR	,*setcust _User:temp_exec=%%Ob %%FCD %%*extract(%n"%%%%#FCD") %%: %%K"@Q" %%: *setcust S_dir2exe:%%*extract(%n"%%%%1")=%%FCD
	*opensubwin %*getcust(S_dir2exe:%1),EXEファイルを選択してください
}

KC_main	= {	; PPcメイン窓
\X	,%ME_subwin
}

K_subwin	= {
\ENTER	,*execute ,%*getcust(_User:temp_exec)
}