0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
| // Grep結果から直接ファイルを関連付け実行する。
// TAB=4
// 実行には PPA.DLL が必須です。PPA.DLL を入手して sakura.exe と同じフォルダに入れておいてください。
// マクロファイルの拡張子は .PPA でなくてはなりません。
// Grep の結果形式のテキストにてこのマクロを実行すると、
// マクロ実行時の行のファイルが
// ・拡張子が TXT,C,CPP,H ならタグジャンプする
// ・拡張子が DOC,XLS なら関連付け実行する
// ・拡張子が他なら関連付け実行する
// ・行頭からの文字列がファイル名らしくなければ、実行時の位置で単語選択するだけ ※
// という動作を行います。
//
// ※ このマクロはダブルクリックに割り当てる場合用に作ってあります。
var
str:String; // 文字列変数 str を用意
ext:String; // 文字列変数 ext を用意
tmps:String; // 文字列変数 tmps を用意
pt:Integer; // 整数数値変数 pt を用意
begin
S_MoveHistSet(0); // 現在位置を移動履歴に登録
S_GoLineTop(1); // 行頭に移動(折り返し単位) - 行頭のスペースを無視する
S_Down_Sel(0); // (選択)カーソル下移動
str := S_GetSelectedString(0); // 選択部分の文字列を取得
S_CancelMode(0); // 各種モードの取り消し - [Esc]キーによる選択解除
S_MoveHistPrev(0); // 移動履歴: 前へ
// ↑↓移動するとカーソル位置が行頭に行ってしまうようなので、それを防ぐ。
S_MoveHistSet(0); // 現在位置を移動履歴に登録
S_Left(0); // カーソル左移動
S_Right(0); // カーソル右移動
S_MoveHistPrev(0); // 移動履歴: 前へ
tmps := Copy (str,1,2); // 先頭 2文字を tmps に退避
str := Delete(str,1,2); // str からは先頭 2文字を削除
pt := Pos(':',str); // str から : を探す。
if ( pt <> 0 ) then begin // : があったら( 2文字目以降に : があったという事)
str := Copy(str,1,pt); // str := 「 : までの文字列」
// str の後方から ( を探し出す。
for pt := Length(str) downto 1 do if( Copy(str,pt,1) = '(' ) then Break;
str := Copy(str,1,pt-1); // str := 先頭 〜 ( の前までの文字列
end;
str := Trim( tmps + str ); // str := 「tmps に退避してあった先頭 2文字」 + str
if ( ( str = '' ) or ( Copy(str,2,1) <> ':' ) or ( Length(str) < 3 ) ) then // ファイル名らしくない場合の処理
begin
S_SelectWord(0); // 現在位置の単語選択
Exit; // 文字列が空文字列なら何もせず終了する。
end
;
// str の後方から . を探し出す。
for pt := Length(str) downto 1 do if( Copy(str,pt,1) = '.' ) then Break;
ext := UpperCase(Copy(str,pt+1,500)); // 拡張子部分を英大文字で文字列変数 ext に取得する
// MessageBox(ext,'拡張子',0); // for Debug
if ( ext = 'TXT' ) then S_TagJump() // 拡張子が 'TXT' ならタグジャンプする(このエディタで開く)
else if ( ext = 'C' ) then S_TagJump() // 拡張子が 'C' ならタグジャンプする(このエディタで開く)
else if ( ext = 'CPP' ) then S_TagJump() // 拡張子が 'CPP' ならタグジャンプする(このエディタで開く)
else if ( ext = 'H' ) then S_TagJump() // 拡張子が 'H' ならタグジャンプする(このエディタで開く)
else if ( ext = 'DOC' ) then Shell(str,'') // 拡張子が 'DOC' なら関連付け実行する Word
else if ( ext = 'XLS' ) then Shell(str,'') // 拡張子が 'XLS' なら関連付け実行する Excel
else Shell(str,'') // 拡張子が他なら関連付け実行する。
;
end;
|