概要
実行する度に、開いているファイルに関連付けられている設定と、テキストファイル用の設定(Text)を行き来するマクロです。現在の拡張子に対する ConfigName をファイルに記録しています。
例えば .jsee のファイルを開いている時に実行すると .txt の設定に切り替わります。もう一度実行すると、また .jsee の設定に戻ります。強調表示を一時的にオフにしたい時などに。
ダウンロード
-
version 1.02
textswitch102.zip
- 「折り返し状態の維持」の動作がおかしかったのを修正。
コメント
- ご意見・ご感想・ご要望 何かあればどぞー -- Nanasiya
- 元の拡張子のコメント設定を取得して反映させられませんか?強調表示をOFFにしてもコメントだけは色分けされていると便利なので。 -- 2chusr
注意点
keepWrapMode を 1 にした場合、切り替え後も折り返しの状態が維持されます。ただし、維持の際に切り替え先の設定(simpleConfig)の折り返し設定が上書きされてしまうので、注意してください。keepWrapMode を 0 にしている場合は問題ありません。
これを解決するには Text をコピーした、このマクロ専用の設定を作り、その名前を simpleConfig に設定すればいいと思います。
使用者による解説
トグル(toggle)とは 「 切り替え 」 という意味です。
このマクロは 「 強調表示のONとOFFを切り替えるマクロ 」 だと思って下さい。
もしくは 「 カラーとモノクロを切り替えるマクロ 」 と認識するのも良いでしょう。
文字色や太字・斜体などの強調表示を多用して動作が重くなった時、
このマクロによって一時的に強調表示をOFFにして、
EmEditorの動作全般を軽くすることができます。
このマクロにショートカットキーを割り当てるなどして使用すれば、
強調表示の時の見易さと、非強調表示の時の軽快な動作を、
状況に応じて選択することができます。
なお、切り替えが適用されるのは現在開いているファイルのみであり、
このマクロによって強調表示の設定内容が変更されることはありません。
ですから、安心して使用、もしくは試用することができます。
ソースコード
/** 設定ここから **/
// 切り替え先に利用する設定の名前
var simpleConfig = "Text";
// 切り替え後も折り返し状態を維持するかどうか ( 1 = する, 0 = しない )
// [注意] 有効にした場合、切り替え先の設定の折り返し状態が変更されます
var keepWrapMode = 0;
/** 設定ここまで **/
var FSO = new ActiveXObject("Scripting.FileSystemObject");
var EmUtil = {
getCurrentExtension: function() {
return FSO.GetExtensionName(document.Name);
},
wrapCommands: [4208, 4209, 4210, 4318],
getWrapMode: function() {
for(var mode in this.wrapCommands) {
if ( editor.QueryStatusByID(this.wrapCommands[mode]) & eeStatusLatched ) {
return mode;
}
}
return 0;
},
setWrapMode: function(mode) {
editor.ExecuteCommandByID(this.wrapCommands[mode]);
}
}
function ConfigNameStorage() {
ConfigNameStorage = function() {
this.nameTable = { };
}
var self = ConfigNameStorage.prototype;
self.defaultFileName = ScriptFullName.replace(/\..+?$/, ".dat");
self._openFile = function(fileName, openForWrite) {
if (!fileName) { fileName = this.defaultFileName; }
var iomode = (openForWrite ? 2 : 1);
return FSO.OpenTextFile(fileName, iomode, true);
}
self.load = function(fileName) {
var f = this._openFile(fileName, false);
while(!f.AtEndOfStream) {
if (f.ReadLine().match(/^([^=]+)=(.+)$/))
{ this.nameTable[RegExp.$1] = RegExp.$2; }
}
}
self.save = function(fileName) {
var f = this._openFile(fileName, true);
for(var ext in this.nameTable) {
f.WriteLine(ext + "=" + this.nameTable[ext]);
}
}
self.memorizeConfigName = function() {
this.nameTable[EmUtil.getCurrentExtension()] = document.ConfigName;
}
self.restoreConfigName = function() {
var name = this.nameTable[EmUtil.getCurrentExtension()];
if (name) document.ConfigName = name;
}
} ConfigNameStorage();
// メイン処理
var wrapMode;
if (keepWrapMode) wrapMode = EmUtil.getWrapMode();
var storage = new ConfigNameStorage();
storage.load();
if (document.configName != simpleConfig) {
storage.memorizeConfigName();
storage.save();
document.configName = simpleConfig;
} else {
storage.restoreConfigName();
}
if (keepWrapMode) EmUtil.setWrapMode(wrapMode);
