「タグジャンプ」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
ページの作成:「いわゆるタグジャンプを行います。 c:\abc\def.ghi(123): ○○ のような行にカーソルを合わせ実行するとそのファイルを開き、そ...」
 
編集の要約なし
1行目: 1行目:
いわゆるタグジャンプを行います。
いわゆるタグジャンプを行います。
c:\abc\def.ghi(123): ○○
c:\abc\def.ghi(123): ○○
のような行にカーソルを合わせ実行するとそのファイルを開き、その行に移動します。
のような行にカーソルを合わせ実行するとそのファイルを開き、その行に移動します。


<source lang="javascript">
<source lang="javascript">

2013年12月16日 (月) 12:52時点における版

いわゆるタグジャンプを行います。

c:\abc\def.ghi(123): ○○

のような行にカーソルを合わせ実行するとそのファイルを開き、その行に移動します。


// タグジャンプ
// NYSL

// ファイルパスからドキュメントを開く
function FindDocument( path )
{
	path = path.toLowerCase();
	var docs  = Editor.Documents;
	var count = docs.Count;
	for( var i = 0 ; i < count ; ++i ){
		var doc = docs.Item(i);
		if( doc ){
			if( doc.FullName.toLowerCase() == path ){
				return	doc;
			}
		}
	}
	return	null;
}

// カーソル行からファイルパスと行番号検索
var line = Document.GetLine( Document.selection.GetActivePointY(mePosLogical) );
var matched = line.match( /^\s*(.+)\((\d+)\):/ );
if( matched && matched.length >= 3 ){
	// 念のためフルパスに変換
	var fso = new ActiveXObject( 'Scripting.FileSystemObject' );
	var path = fso.GetAbsolutePathName( matched[1] );
	
	var doc = FindDocument( path );
	if( doc ){
		// 既に開かれてるならアクティブにする
		doc.Activate();
	}else{
		// まだ開いてないなら開く
		Editor.NewFile();
		Editor.OpenFile( path );
		doc = FindDocument( path );
	}
	// 指定行に移動
	if( doc ){
		doc.selection.SetActivePoint( mePosLogical, 1, matched[2], false );
	}
}
スポンサーリンク