スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。



サクラエディタ - pathJump.js

マクロ書き直した。ファイルは右のSkyDriveのSakura Editor Macroフォルダにありまそ。

var extNam = ["txt","log","sh" ,"csh","dat","ini","sql","js"];
var hogePth = new RegExp("\\\\hoge","i");
   OSの関連付けを無視してサクラエディタで開く拡張子と、
   アクセスを禁止したいパスの正規表現キーワード。URIでもおk

(function setPathString(){
sh = new ActiveXObject("WScript.Shell");
var s = Editor.GetSelectedString(0);
var p = s ? s : Editor.GetLineStr(0) ;
var reg0 = /(?:.*?)([A-Z]:\\|\\\\[1A-Z])(.*?)(?:(?: |\s){2,}|[<>:\|"])(?:.*)/i;
p = p.replace(reg0, "$1$2").replace(/\r|\n/gm,"");

return hogePth.test(p)
? sh.popup("このパスはアクセスできません。\n\n"+ p)
: jump(p);
})();
   関数自体を(func~)();のように括っておくと呼ばれなくても読み込み時に走る。
   ので、中でvarした変数のスコープはプライベートで使えて読みやすくなる。
   reg0はカーソルの範囲選択が面倒で、タグジャンプみたいに行から見つけてジャンプさせたかったので、
   パスを取得する正規表現。サクラエディタのgrep結果画面で
C:\Program Files\sakura\pathJump.js(39,19)  [SJIS]:~
   なら行列位置の(39,19)ごと取得。

function jump(p){
var fs = new ActiveXObject("Scripting.FileSystemObject");
var reg2 = /(.*?)(?:\(|\s{2,}?)(\d+)(?:[,]*|[\s]{2,})(\d*)(?:[\s\)]*)(?:.*)/;

if(fs.DriveExists(fs.GetDriveName(p))) {
var d = fs.GetDrive(fs.GetDriveName(p));
if((d.DriveType == 3) && (hogePth.test(d.ShareName) != -1))
return sh.popup("このパスはアクセスできません。\n\n"+p);
}
if(fs.FolderExists(p)) sh.Run('"'+ p +'"');
else if(reg2.test(p)) {
if(fs.FileExists(p)) return sakuraOpen(p);
var fileP = p.replace(reg2,"$1");
var linNm = p.replace(reg2,"$2");
var colNm = p.replace(reg2,"$3");
sh.exec(Editor.ExpandParameter("$S")+' "'+fileP+'" -X='+colNm+' -Y='+linNm);
}
else if(fs.FileExists(p)) sakuraOpen(p);
}
   reg2はサクラエディタのgrep結果書式だった場合に行列位置を取得。

   処理の順序が塩梅で、ドライブ名が取れたら共有名を取得してアク禁パスかチェック、
   フォルダならRun()でフォルダウインドウ、
   grep結果の書式ならExec()で行列位置を渡してサクラエディタで実行、
   それ以外でファイルパスなら拡張子チェックへ。

   この順番が変わるとアホな挙動になってしまう。


function sakuraOpen(p){
for(var i in extNam)
if(new RegExp("\."+extNam[i]+"$","i").test(p)) return Editor.FileOpen(p);
new ActiveXObject("Shell.Application").ShellExecute('"'+ p +'"');
}
   設定された拡張子でなかった場合、デスクトップシェル環境のShellExecute()におまかせ。

スポンサーサイト



comment

Secret

while(aho.atEndofStream)

笹部 政宏
笹部 政宏
mail




フリーソフツ
Category
はてブ
Monthly Archive
New Entry
New Comment
New Trackback
RSS
Copyright © Kittens flewby me All Rights Reserved.

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。