Created
February 24, 2011 05:41
-
-
Save honda0510/841819 to your computer and use it in GitHub Desktop.
【EmEditor,マクロ】ソースに書かれたメソッド名やファイル名を選択してファイルを開く (PHPの静的メソッド, php, css, js, tplファイルに対応)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var fso = new ActiveXObject('Scripting.FileSystemObject'); | |
var CUR_DIR = document.path; | |
var PARENT_DIR = fso.GetParentFolderName(CUR_DIR); | |
var FIND_OPTTION = eeFindAround + eeFindNext + eeFindReplaceCase + eeFindReplaceOnlyWord + eeFindSaveHistory; | |
// 選択中のテキスト | |
var selection = document.selection.Text; | |
// 選択中のテキストがファイル名だったら拡張子を小文字で取得 | |
var extension = fso.GetExtensionName(selection).toLowerCase(); | |
// 検索するフォルダのリスト | |
var dirs = [CUR_DIR, PARENT_DIR]; | |
var file_name = ''; | |
switch (extension) { | |
// 静的メソッド | |
case '': | |
if ( selection.indexOf('::') !== -1 ) { | |
// クラス名とメソッド名を取得 | |
var class_info = selection.split('::'); | |
var class_name = class_info[0]; | |
if ( class_name === 'self' ) { | |
var file_name = document.Name; | |
} else { | |
var file_name = class_name + '.class.php'; | |
} | |
var method_name = class_info[1]; | |
dirs.push( fso.BuildPath(CUR_DIR, 'lib') ); | |
dirs.push( fso.BuildPath(PARENT_DIR, 'lib') ); | |
} | |
break; | |
// phpファイル | |
case 'php': | |
var file_name = selection; | |
dirs.push( fso.BuildPath(CUR_DIR, 'lib') ); | |
dirs.push( fso.BuildPath(PARENT_DIR, 'lib') ); | |
break; | |
// CSSファイルとJavaScriptファイル | |
case 'css': | |
case 'js': | |
var file_name = selection; | |
dirs.push( fso.BuildPath(CUR_DIR, extension) ); | |
dirs.push( fso.BuildPath(PARENT_DIR, extension) ); | |
break; | |
// テンプレートファイル | |
case 'tpl': | |
var file_name = selection; | |
dirs.push( fso.BuildPath(CUR_DIR, 'templates') ); | |
dirs.push( fso.BuildPath(PARENT_DIR, 'templates') ); | |
break; | |
// その他 | |
default: | |
break; | |
} | |
for ( var i = 0, n = dirs.length; i < n; i++ ) { | |
var file_path = fso.BuildPath(dirs[i], file_name); | |
// ファイルの存在確認 | |
if ( fso.FileExists(file_path) ) { | |
// ファイルを開く | |
var shell = new ActiveXObject('WScript.Shell'); | |
shell.Run('EmEditor ' + file_path, 1, true); | |
// メソッドを検索する | |
if ( method_name !== undefined ) { | |
document.selection.Find(method_name, FIND_OPTTION); | |
document.HighlightFind = false; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment