2015年5月15日金曜日

ファイルサイズで使用エディタを変更

あいさつ


つかさです。
ファイルサイズにより、使用エディタを変更するスクリプトです。
ファイルサイズが1000以上ならxyzzyを。それ以下ならPPeを利用するようにしてます。

editbysize.js
//!*script 
// 第一引数:開きたいファイルのパス

// 引数がなければ終了
if (PPx.Arguments.Length < 1){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit(-1);
}

var path = PPx.Arguments.Item(0);
var fs = PPx.CreateObject( "Scripting.FileSystemObject" );
var editor = "D:\\bin\\xyzzy\\xyzzy.exe" // エディタのパス
var fsize = 1000 // 基準とするファイルサイズ

if (fs.GetFile(path).Size > fsize){
  PPx.Execute ("%Ob \"" + editor + "\" " + path); // エディタで開く
} else {
  PPx.Execute ("*ppe " + path); // PPeで開く
}

fs = null;

以下を編集して取込すると、「PPeを用いて編集」の代わりにこのスクリプトを使うようになる。これで、間違ってPPeで容量が大きいテキストファイルを開いてしまうことがなくなるかも
KC_main = { ; PPcメイン窓
\E ,*script %0\Script\editbysize.js,%FCD
}

KV_main = { ; PPvメイン窓
\E ,*script %0\Script\editbysize.js,%FCD
^E ,*script %0\Script\editbysize.js,%FCD
}

2015年5月14日木曜日

PPvの連動ビューで除外設定(ファイル名を表示)


以前やったPPvの連動ビューで除外設定だと、除外ファイルにカーソルが来た時、PPvは先に表示したファイルをそのまま表示し続けることになる。これだと、今どこにカーソルがあるのかがPPv上からではわかりづらい。
そこで、除外ファイルに行き当たったら、その除外ファイルのファイル名をPPvに表示するようにする。


やり方


stop.jsの内容を以下に変更する。

stop.js

//!*script

if (PPx.Extract("%*extract(C\"%%t\")").match(/^(txt|text|howm|jpg|jpeg|bmp|png|gif|cpp|h|c|l|el|html|htm|xyzzy|emacs|scm|ini|vbs|js|py|pyw|cfg|kif)$/i)){
} else if (PPx.GetFileInformation(PPx.Extract("%*extract(C\"%%FCDN\")")) == ":DIR"){ // ディレクトリなら何もしない
} else{
  PPx.Execute('*cliptext '+PPx.Extract("%*extract(C\"%%R\")")); // クリップボードにファイル名をコピー
  PPx.Execute('%K\"^@V\"'); // Ctrl+Vで貼付け
  PPx.Quit(-1); // 以降のコマンド実行を中止
}

クリップボードにカーソル下のファイル名をコピーし、それをCtrl+VでPPvに貼り付けています。

以下を編集して取込。これは前回と変わりなし。

KV_main = { ; PPvメイン窓
LEFT ,*execute C,*cursor 6,-1,4,B0000,0,B0000 %: *script %0\Script\stop.js %: *execute C,*ppv -bootid:A -r %%*name(CD,"%%R","%%1")
RIGHT ,*execute C,*cursor 6, 1,4,B0000,0,B0000 %: *script %0\Script\stop.js %: *execute C,*ppv -bootid:A -r %%*name(CD,"%%R","%%1")
UP ,*execute C,*cursor 2,-1,4,B0000,5,B0000 %: *script %0\Script\stop.js %: *execute C,*ppv -bootid:A -r %%*name(CD,"%%R","%%1")
DOWN ,*execute C,*cursor 2, 1,4,B0000,5,B0000 %: *script %0\Script\stop.js %: *execute C,*ppv -bootid:A -r %%*name(CD,"%%R","%%1")
SPACE ,*execute C,*script %0\Script\togglemark.js %: *execute C,*cursor 2, 1,4,B0000,5,B0000 %: *script %0\Script\stop.js %: *execute C,*ppv -bootid:A -r %%*name(CD,"%%R","%%1")
\SPACE ,*execute C,*script %0\Script\togglemark.js %: *execute C,*cursor 2,-1,4,B0000,5,B0000 %: *script %0\Script\stop.js %: *execute C,*ppv -bootid:A -r %%*name(CD,"%%R","%%1")
}

思ったこととか


クリップボードを利用するというのが少しだけ不満。クリップボード管理ツールと相性が悪いからだ。もっといい方法あれば教えてくだしあ

2015年5月13日水曜日

PPeを少しxyzzyっぽいキーバインドに

挨拶


つかさです。
小さいテキストファイルのちょっとした修正をする時は、PPeが使えるのではないかと気づいた。起動速度が非常に速いからだ。PPeでの編集は、PPcであればShift+E。PPvであればShift+EかCtrl+Eで可能。

そこで、よく使う最低限必要なキーバインドだけ、普段使っているxyzzyにあわせるようにしてみる。


やり方


  • C-x s ファイルを保存
  • C-x C-c 閉じる

とりあえずこの二つのみができるようにする。2ストロークキー入力に必要なので、入れてない場合はTORO's Libraryに行き、Paper Plane xUI Key Moduleを入れておこう。

以下を編集して取込。

-|K_xyzzy =

K_ppe = { ; PPe(K_ppeに該当しない場合はK_editも参照)
^X ,*setnextkey K_xyzzy
}

K_xyzzy = { ** comment **
S ,%k"^S"
^C ,%k"&F4"
}

2015年2月26日木曜日

ImageMagickで画像処理

ImageMagickを使ってPPx上で画像処理する方法のメモ。

  • 左に90度回転
  • 右に90度回転
  • 拡大縮小

ができるようにする。



以下を編集して取込。これで、拡張子がJPG、PNG、JPEG、BMPのファイル上でShift+Enterを押せば、画像処理メニューが出る。
-|M_Picture =

M_Picture = { ** comment **
&Azpainter = %Ob D:\bin\azpt\AzPainter2.exe %FCD
ペイント(&P) = mspaint %FCD
-- = 
左に90度回転(&L) = %Ob "C:\Program Files\ImageMagick-6.9.0-Q16\convert.exe"  -rotate 270 %FCD %FCD
右に90度回転(&R) = %Ob "C:\Program Files\ImageMagick-6.9.0-Q16\convert.exe"  -rotate 90 %FCD %FCD
拡大縮小 = %Ob "C:\Program Files\ImageMagick-6.9.0-Q16\convert.exe"  -geometry %"数値を入力してください"%{30%}%% %FCD "%1\%*nowdatetime(Y-N-D-HMS).%T"
-- = 
壁紙にする(&W) = *customize X_bg:Path=%FDC %: *customize X_bg:Type=10
}

E_scr = { ; \[Enter]用判別
JPG ,%M_Picture,A
PNG ,%M_Picture,A
JPEG ,%M_Picture,A
BMP ,%M_Picture,A
}


追記 2016/09/26


機能しなくなったので修正した。

ImageMagickで画像処理(改)

2015年2月12日木曜日

PPvの連動ビューで除外設定


僕はPPv上から連動ビューをしているのだが、Exeファイル他PPvで表示したくないファイルがある。



情報として不要だし、読み込むときに処理が重くなるので、これを表示しないようにしたい。
そこで、アクティブPPcのカーソル下ファイルの拡張子を判別し、それ以降の処理を止めるスクリプトを作成する。
以下をScriptフォルダに保存

stop.js

//!*script

if (PPx.Extract("%*extract(C\"%%t\")").match(/^(txt|text|howm|jpg|jpeg|bmp|png|gif|cpp|h|c|l|el|html|htm|xyzzy|emacs|scm|ini|vbs|js|py|pyw|cfg|kif)$/i)){
} else {
  PPx.Quit(-1);
}

これは、アクティブPPcのカーソル下ファイルの拡張子が指定したもの以外なら、PPx.Quit(-1)を実行し、それ以降の処理を中止するスクリプト。

僕のやってる連動ビューは

*execute C,*cursor 2, 1,4,B0000,5,B0000 %: *execute C,*ppv -bootid:A -r %%*name(CD,"%%R","%%1")

1.PPcのカーソルを一つ動かす
2.カーソル下のファイルをPPvで表示する

という二段階で実現している。そこで、この2つの処理の真ん中に先のスクリプトを挟み込めば、拡張子判別をして、2の処理を止めれるわけだ。

以下を編集して取込

KV_main = { ; PPvメイン窓
LEFT ,*execute C,*cursor 6,-1,4,B0000,0,B0000 %: *script %0\Script\stop.js %: *execute C,*ppv -bootid:A -r %%*name(CD,"%%R","%%1")
RIGHT ,*execute C,*cursor 6, 1,4,B0000,0,B0000 %: *script %0\Script\stop.js %: *execute C,*ppv -bootid:A -r %%*name(CD,"%%R","%%1")
UP ,*execute C,*cursor 2,-1,4,B0000,5,B0000 %: *script %0\Script\stop.js %: *execute C,*ppv -bootid:A -r %%*name(CD,"%%R","%%1")
DOWN ,*execute C,*cursor 2, 1,4,B0000,5,B0000 %: *script %0\Script\stop.js %: *execute C,*ppv -bootid:A -r %%*name(CD,"%%R","%%1")
SPACE ,*execute C,*script %0\Script\togglemark.js %: *execute C,*cursor 2, 1,4,B0000,5,B0000 %: *script %0\Script\stop.js %: *execute C,*ppv -bootid:A -r %%*name(CD,"%%R","%%1")
\SPACE ,*execute C,*script %0\Script\togglemark.js %: *execute C,*cursor 2,-1,4,B0000,5,B0000 %: *script %0\Script\stop.js %: *execute C,*ppv -bootid:A -r %%*name(CD,"%%R","%%1")
}

2015年1月16日金曜日

1画面なら自窓に、2画面なら反対窓に書庫を展開

一体型PPxで、1画面なら自窓に。2画面なら反対窓に書庫を展開するようにする。

書庫を展開した時は、たいていその後展開したフォルダに潜って作業することになる。だから、この2パターンだけにしてもいいのではないかと思うのだ。

以下をScriptフォルダに保存

my_unpack.js
//!*script
// 一体型1画面なら自窓に展開
// 一体型2画面なら反対窓に展開
// それ以外なら通常動作

if (PPx.GetComboItemCount == 1){
  PPx.Execute("*unpack");
} else if (PPx.GetComboItemCount == 2){
  PPx.Execute("*unpack %2");
} else {
  PPx.Execute("%K\"@U\"");
}

以下を編集して取込
X_arcdr = 2 ; 書庫全展開は書庫名ディレクトリ内に 0:しない 1:する 2:自動
KC_main = { ; PPcメイン窓
U ,*script %0\Script\my_unpack.js
}

2015年1月9日金曜日

2画面時の比率を50:50に

僕は一体化型PPxを基本1画面、必要な時だけ2画面にして使ってる。
2画面にするときに、左右の窓の比率がずれることがあったので、必ず50:50になるようにする。


やり方


一体化PPxを1画面で使う(必要なときだけ2画面)を踏襲。

以下の2つのファイルをScriptフォルダに保存


2winTab.js
//!*script 

if (PPx.GetComboItemCount <= 1){ // 窓が一つ以下の場合
  PPx.Execute("%Ob %0\\PPCW.EXE -bootid:~ -k *pairrate 50");
  PPx.Execute("*customize XC_mvLR=4,1,6,B0100,6,B100"); // カーソル移動方法の変更
} else {
  PPx.Execute("%K\"@F6\"");
}

2winQ.js
//!*script 

var ppcid = PPx.Extract('%*extract\(C#L\"%%n\"\)'); // 左窓のPPcID
var ppcid2 = PPx.Extract('%*extract\(C#R\"%%n\"\)'); // 右窓のPPcID

if (PPx.GetComboItemCount <= 1){ // 窓が一つ以下の場合
  PPx.Execute("%K\"@Q\"");
} else {
  PPx.Execute('*closeppx ' + ppcid2); // 右窓を閉じる
  PPx.Execute("*customize XC_mvLR = 4,1,4,B0000,6,B001 ; [←][→] "); // カーソル移動方法の変更
}

以下を編集して取込
KC_main = { ; PPcメイン窓
TAB ,*script %0\Script\2winTab.js
Q ,*script %0\Script\2winQ.js
}