「すべて閉じる」の版間の差分
| 145行目: | 145行目: | ||
= 他のタブをすべて閉じる(オプションつき) = | = 他のタブをすべて閉じる(オプションつき) = | ||
※「未保存*」のタブにたいして 保存の確認ダイログを表示するか/しないか | ※「未保存*」のタブにたいして 保存の確認ダイログを表示するか/しないか のオプションを設定できます。<br> | ||
※設定項目で動作モードを 1 や 2 に変更して別名の .JS ファイルに保存すれば、「右側/左側のタブをすべて閉じる」マクロになります。 | |||
<source lang="javascript"> | <source lang="javascript"> | ||
| 189行目: | 189行目: | ||
} | } | ||
</source> | </source> | ||
= 「すべて閉じる」の統合版(モード選択) = | = 「すべて閉じる」の統合版(モード選択) = | ||
2019年4月26日 (金) 03:39時点における版
いっぺんに複数のタブを閉じます。
- 途中で「保存の確認」ダイアログを表示するタイプと表示しないタイプがあります。
※「保存の確認」ダイアログで「キャンセル」ボタンを押した場合、そのタブは閉じず、他のタブにたいしては「すべて閉じる」の処理を継続します。
ダウンロード
(sukemaru 2019/04/25②)
マクロ×7本、アイコン入り
- 統合版 を追加
- アイコンのデザインをちょっと変更
すべて閉じる
ウインドウを閉じるさいに、保存していないタブにたいして「 **** への変更を保存しますか?」の確認ダイアログを表示させずに終了できます。
※基本的に、「未保存*」の名前つきタブがあるときは、保存の確認ダイアログを表示します。
- 「未保存*」以外のタブ(変更マーク「*」がないタブ)をすべて閉じるなら、別ページに「変更なしのタブをすべて閉じる」マクロがあります。
- 「無題」をふくめたすべての「未保存*」のタブについて保存処理や確認ダイアログが必要であれば、ファイルメニューの「すべて保存して閉じる」や「すべて閉じる」を使用してください。
ファイルメニューの「すべて閉じる (Shift+Alt+X)」の マクロコード
window.Close();
ファイルメニューの「すべて保存して閉じる (Shift+Ctrl+E)」の マクロコード
editor.SaveCloseAll();
保存の確認をせずに閉じる
すべての「未保存*」タブについて、いっさい保存の確認をせずに閉じます。
※問答無用でエディタウインドウが閉じるので、ご利用は自己責任で。
#title = "すべて閉じる(保存の確認なし)"
#tooltip = "未保存のタブがあっても保存の確認をせずに終了する"
// #icon = "close_all[2].ico"
for ( var i = 0; i < editor.Documents.Count; i ++ ) {
editor.Documents.Item( i ).Saved = true;
}
window.Close();
保存の確認ダイログを出す
名前のある(実体ファイルのある)「未保存*」のタブにたいしては、保存の確認ダイログを表示します。
※「無題」のタブにたいしては、保存の確認をしません。
#title = "すべて閉じる(無題は保存の確認しない)"
#tooltip = "無題のタブは保存の確認をせずに終了する"
// #icon = "close_all[1].ico"
for ( var i = 0; i < editor.Documents.Count; i ++ ) {
if ( ! editor.Documents.Item( i ).Name ) {
editor.Documents.Item( i ).Saved = true;
}
}
window.Close();
他のタブを閉じる
アクティブなタブ以外を閉じます。
※「無題」のタブでも名前つきのタブでも、「未保存*」のタブについては保存の確認ダイアログを表示します。
左側のタブを閉じる
#title = "左側のタブをすべて閉じる"
#tooltip = "左側のタブをすべて閉じる"
// #icon = "close_left.ico"
var d = document;
var dCount = editor.Documents.Count;
var dd, docu;
for ( var i = 0; i < dCount; i ++ ) {
docu = editor.Documents.Item( i );
if ( docu == d ) {
dd = i;
break;
}
}
// 左側のタブをすべて閉じる
for ( var i = dd - 1; i >= 0; i -- ) {
docu = editor.Documents.Item( i );
if ( docu != d ) {
docu.Close();
}
}
右側のタブをすべて閉じる
#title = "右側のタブをすべて閉じる"
#tooltip = "右側のタブをすべて閉じる"
// #icon = "close_right.ico"
var d = document;
var dCount = editor.Documents.Count;
var dd, docu;
for ( var i = 0; i < dCount; i ++ ) {
docu = editor.Documents.Item( i );
if ( docu == d ) {
dd = i;
break;
}
}
// 右側のタブをすべて閉じる
for ( var i = dCount - 1; i > dd; i -- ) {
docu = editor.Documents.Item( i );
if ( docu != d ) {
docu.Close();
}
}
他のタブをすべて閉じる
#title = "他のタブをすべて閉じる"
#tooltip = "他のタブをすべて閉じる"
// #icon = "close_other.ico"
var d = document;
var dCount = editor.Documents.Count;
var docu;
// 他のタブをすべて閉じる
for ( var i = dCount - 1; i >= 0; i -- ) {
docu = editor.Documents.Item( i );
if ( docu != d ) {
docu.Close();
}
}
他のタブをすべて閉じる(オプションつき)
※「未保存*」のタブにたいして 保存の確認ダイログを表示するか/しないか のオプションを設定できます。
※設定項目で動作モードを 1 や 2 に変更して別名の .JS ファイルに保存すれば、「右側/左側のタブをすべて閉じる」マクロになります。
#title = "他のタブをすべて閉じる"
#tooltip = "他のタブをすべて閉じる"
// #icon = "close_other.ico"
// ---------- ▼ 設定項目 ▼ ----------
var closeMode = 0;
// 0: 他のタブをすべて閉じる
// 1: 右側のタブをすべて閉じる
// 2: 左側のタブをすべて閉じる
var ignoreUnNamed = false;
// true: 「無題」ドキュメントにたいしては保存の確認ダイアログを表示しない
// false: 「無題」ドキュメントにたいしても保存の確認ダイアログを表示する
// ---------- ▲ 設定項目 ▲ ----------
var d = document;
var dCount = editor.Documents.Count;
var dd, docu;
for ( var i = 0; i < dCount; i ++ ) {
docu = editor.Documents.Item( i );
if ( docu == d ) {
dd = i;
break;
}
}
// 他のタブをすべて閉じる
var start = ( closeMode == 2 ) ? dd - 1 : dCount - 1;
var end = ( closeMode == 1 ) ? dd + 1 : 0;
for ( var i = start; i + 1 > end; i -- ) {
docu = editor.Documents.Item( i );
if ( docu != d ) {
if ( ignoreUnNamed && docu.Name == "" ) {
docu.Saved = true;
}
docu.Close();
}
}
「すべて閉じる」の統合版(モード選択)


「すべて閉じる」と「他のタブを閉じる」の機能 全部入り です。
※入力ダイアログかポップアップメニューで動作モードを指定します(ソースコード内の設定項目で「デフォルト値」を指定しておくと Enter または Space キーだけで処理を開始できます)。
※ Mode = 5, ignoreUnNamed = false で、ファイルメニューの「すべて閉じる」とおなじ動作になります。
#title = "すべて閉じる(モード選択)"
#tooltip = "すべて閉じる(入力ダイアログ)"
#icon = "close_all[4].ico"
// または #tooltip = "すべて閉じる(ポップアップメニュー)"
// ---------- ▼ 設定項目 ▼ ----------
// ■起動モード
var userModeInput = true;
// true: 入力ダイアログ
// false: ポップアップメニュー
// ■デフォルト値( 1 ~ 6 )
var defaultMode = "";
// デフォルト: 入力ダイアログでは Enter キーで確定
// ポップアップメニューでは Space キーで確定
// "": 表示しない
// 1: 他のタブをすべて閉じる
// 2: 左側のタブをすべて閉じる
// 3: 右側のタブをすべて閉じる
// 4: 変更なしのタブをすべて閉じる(「未保存*」のタブは閉じない)
// 5: すべてのタブを閉じる
// 6: 問答無用ですべて閉じる(すべてのタブの「未保存*」を無視)
// ※ 4 ですべてのタブが保存済み、かつタブの閉じるボタンを表示している場合は、
// さいごに新規「無題」タブが残る(閉じるボタン無しならウインドウが閉じる)
// ※ 4, 6 以外は、「未保存*」の名前つきドキュメントで保存の確認ダイアログ
// ※ 5, 6 で閉じた場合、「ワークスペース」の復元可(Mery ver. 2.6.15 以降)
// ■未保存* の「無題」ドキュメント
var ignoreUnNamed = false;
// true: 保存の確認ダイアログを表示しない
// false: 保存の確認ダイアログを表示する
// ※ mode = 6 では無効(表示しない)
// ---------- ▲ 設定項目 ▲ ----------
var mode;
// 入力ダイアログ
if ( userModeInput ) {
// (全角 0-9 のみ)半角変換した数字を文字列で返す
var ToHalfWidthNum = function( strVal ){
return strVal.replace( /[0-9]/g, function( tmp ) {
return String.fromCharCode( tmp.charCodeAt(0) - 0xFEE0 )
} ) };
// 1 ~ 6 以外の無効な文字列はすべて無視
mode = + ToHalfWidthNum( Prompt( "1: 他のタブ. 2: 左側. 3: 右側. 4: 変更なし. 5: すべて. 6: 強制終了.", defaultMode ) ).replace( /[^1-6]/g , "" );
}
// ポップアップメニュー
else {
var menu = CreatePopupMenu();
menu.Add( "&1:\t他のタブをすべて閉じる", 1 );
menu.Add( "&2:\t左側のタブをすべて閉じる", 2 );
menu.Add( "&3:\t右側のタブをすべて閉じる", 3 );
menu.Add( "&4:\t変更なしのタブをすべて閉じる", 4 );
menu.Add( "&5:\tすべてのタブを閉じる", 5 );
menu.Add( "&6:\t未保存* を無視してすべて閉じる", 6 );
if ( /^[0-6]$/.test( defaultMode.toString() ) ) {
menu.Add( "", 0, meMenuSeparator );
menu.Add( defaultMode + ":\tデフォルトモードを実行 ( Space& キー )", + defaultMode );
}
menu.Add( "", 0, meMenuSeparator );
menu.Add( "&0:\tキャンセル", 0 );
mode = menu.Track( mePosMouse );
}
var d = document;
var dCount = editor.Documents.Count;
var dd, docu;
switch ( mode ) {
// 他のタブをすべて閉じる
case 1: case 2: case 3:
loop:
for ( var i = 0; i < dCount; i ++ ) {
docu = editor.Documents.Item( i );
if ( docu == d ) {
dd = i;
break loop;
}
}
var start = ( mode == 2 ) ? dd - 1 : dCount - 1;
var end = ( mode == 3 ) ? dd + 1 : 0;
for ( var i = start; i + 1 > end; i -- ) {
docu = editor.Documents.Item( i );
if ( docu != d ) {
if ( ignoreUnNamed && ! docu.Name ) {
docu.Saved = true;
}
docu.Close();
}
}
d.Activate();
break;
// すべて閉じる
case 4: case 5: case 6:
for ( var i = dCount- 1; i + 1 > 0; i -- ) {
docu = editor.Documents.Item( i );
if ( mode == 4 && docu.Saved ) {
docu.Close();
}
else if ( mode == 6
|| ( mode == 5 && ignoreUnNamed && ! docu.Name ) ) {
docu.Saved = true;
}
}
if ( mode != 4 ) {
window.Close();
}
break;
default:
break;
}
いつもポップアップメニューのマクロばかりなので、少しだけヒネってみました。