「ポップアップメニューでジャンプ」の版間の差分
ナビゲーションに移動
検索に移動
ページの作成:「= 概要 = ポップアップメニューで検索にヒットした箇所へジャンプできます。 = 機能 = * 選択した文字列(選択していないと...」 |
|||
| 17行目: | 17行目: | ||
var s = sel.Text; | var s = sel.Text; | ||
var ty = sel.GetTopPointY( mePosView ); | var ty = sel.GetTopPointY( mePosView ); | ||
var p = sel.GetActivePos(); | |||
sel.Find( s, meFindNext + meFindAround ); | sel.Find( s, meFindNext + meFindAround ); | ||
sel.SetActivePos( p ); | |||
// ポップアップメニューでジャンプ先リスト | // ポップアップメニューでジャンプ先リスト | ||
| 29行目: | 31行目: | ||
var p = 0; | var p = 0; | ||
for( var i = 0, n = ary.length; i < n ; i++ ){ | for( var i = 0, n = ary.length; i < n ; i++ ){ | ||
if ( ary[i].indexOf( s ) >= 0 ){ | if ( ary[i].toLowerCase().indexOf( s.toLowerCase() ) >= 0 ){ | ||
var item = ary[i].replace( /^\s*|\t/g, "" ) | var item = ary[i].replace( /^\s*|\t/g, "" ) | ||
item = ( item.length > menu_width + 1 )? item.slice( 0, menu_width ) + "..." : item ; | item = ( item.length > menu_width + 1 )? item.slice( 0, menu_width ) + "..." : item ; | ||
| 43行目: | 45行目: | ||
sel.SetActivePoint( mePosView, line.indexOf( s ) + s.length + 1, r, false ); | sel.SetActivePoint( mePosView, line.indexOf( s ) + s.length + 1, r, false ); | ||
sel.CharLeft( true, s.length ); | sel.CharLeft( true, s.length ); | ||
ScrollY = r-10; | |||
}; | }; | ||
}; | }; | ||
2014年4月4日 (金) 19:47時点における版
概要
ポップアップメニューで検索にヒットした箇所へジャンプできます。
機能
- 選択した文字列(選択していないときはカーソルのある語)を検索します。
- ヒットした行をポップアップメニューに表示し、選択するとその行へジャンプします。
- 同一行にヒットする箇所が複数あったときは最初のヒット箇所にジャンプします。
- 検索文字列の強調解除は、変更していなければ「Alt+F3」です。
コード
// pooupJump.js
// 2014/04/04
var sel = document.selection
if ( sel.isEmpty ){ sel.SelectWord(); };
var s = sel.Text;
var ty = sel.GetTopPointY( mePosView );
var p = sel.GetActivePos();
sel.Find( s, meFindNext + meFindAround );
sel.SetActivePos( p );
// ポップアップメニューでジャンプ先リスト
var menu_width = 66;
if ( "\t .,;:(){}[]+-=\"\\".indexOf( s ) < 0 && s.length > 0 ){
var menu = CreatePopupMenu();
var ary = [];
for( var i = 0, n = document.GetLines( meGetLineView ); i < n ; i++ ){
ary.push( document.GetLine( i+1, meGetLineView ));
};
var p = 0;
for( var i = 0, n = ary.length; i < n ; i++ ){
if ( ary[i].toLowerCase().indexOf( s.toLowerCase() ) >= 0 ){
var item = ary[i].replace( /^\s*|\t/g, "" )
item = ( item.length > menu_width + 1 )? item.slice( 0, menu_width ) + "..." : item ;
var flags = ( (i+1) == ty )? meMenuChecked : 0 ; // meMenuGrayed
menu.Add( ( " " + (i + 1) ).slice( -4 ) + " : " + item, i + 1, flags );
p++;
};
};
if ( p > 1 ){ // ポップアップメニューを表示するのは、検索ヒット行が複数のとき。
var r = menu.Track( mePosMouse ); // mePosMouse
if ( r > 0 ){
var line = document.GetLine( r, meGetLineView );
sel.SetActivePoint( mePosView, line.indexOf( s ) + s.length + 1, r, false );
sel.CharLeft( true, s.length );
ScrollY = r-10;
};
};
};
履歴
- 2014/04/04 初版
その他
- 不具合があったら教えていただけると幸いです。
スポンサーリンク