「テーマのトグル」の版間の差分
ナビゲーションに移動
検索に移動
SyntaxHighlightにcopyの追加 |
編集の要約なし |
||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
テーマをキーボードショートカットなどでトグルできるようになるマクロです。[https://www.haijin-boys.com/discussions/6141#discussion-6151 フォーラム]でucky様が作成されたものですが、フォーラムだけだと埋没してしまい検索に苦労したので、こちらにも記載させていただきました。 | テーマをキーボードショートカットなどでトグルできるようになるマクロです。[https://www.haijin-boys.com/discussions/6141#discussion-6151 フォーラム]でucky様が作成されたものですが、フォーラムだけだと埋没してしまい検索に苦労したので、こちらにも記載させていただきました。 | ||
== 動作環境 == | |||
Mery Ver 3.7.14 以降で使用できます。 | |||
== 使用方法 == | |||
あらかじめ [オプション] ダイアログの [表示] カテゴリの [テーマ] で切り替え用1・切り替え用2・切り替え用3というテーマ名で切り替えたいテーマを「名前を付けて保存」してからマクロを実行してください。 | |||
切り替えるテーマの数や保存する名前を変更したい場合は switch 文を編集してください。下記は FavoriteTheme1 と FavoriteTheme2 の二つのテーマを切り替える例です。 | |||
<syntaxhighlight lang="javascript" copy> | |||
switch (currentTheme) { | |||
case "FavoriteTheme1": | |||
newTheme = "FavoriteTheme2"; | |||
break; | |||
default: | |||
newTheme = "FavoriteTheme1"; | |||
} | |||
</syntaxhighlight> | |||
最初から入っているテーマを使用したい場合でも「名前を付けて保存」で別途保存してください。 | |||
テーマの仕様変更で追加された項目を反映させたい場合はテーマを保存しなおす必要があります。 | |||
== 変更履歴 == | == 変更履歴 == | ||
* 2025-12-12 | |||
** テーマの項目を INI ファイルから取得するようにした(pizz さんが作成された「[[テーマの自動変更]]」マクロのアイデアを参考にさせていただきました) | |||
** ディレクティブ(<code>#fonticon</code>と<code>#title</code>)を追加 | |||
* 2025-05-03 | * 2025-05-03 | ||
** Mery 3.7.13 時点の仕様に合わせて項目を追加 | ** Mery 3.7.13 時点の仕様に合わせて項目を追加 | ||
| 16行目: | 41行目: | ||
== ソースコード == | == ソースコード == | ||
<syntaxhighlight lang="javascript" copy> | <syntaxhighlight lang="javascript" copy> | ||
#fonticon = "\uE790", #4d82b8, #dddddd | |||
#title = "テーマのトグル" | |||
var currentTheme = editor.ReadSettingString("Themes", "ThemeName", ""); | |||
var newTheme; | |||
switch (currentTheme) { | |||
case "切り替え用1": | |||
newTheme = "切り替え用2"; | |||
break; | |||
case "切り替え用2": | |||
newTheme = "切り替え用3"; | |||
break; | |||
default: | |||
newTheme = "切り替え用1"; | |||
} | |||
var getItems = function () { | |||
var iniFullName = editor.FullName.replace(/\.exe$/i, ".ini"); | |||
if (!shell.FileExists(iniFullName)) { | |||
iniFullName = shell.GetEnv("APPDATA") + "\\Mery" + iniFullName.slice(iniFullName.lastIndexOf("\\")); | |||
} | |||
var iniText = shell.Exec("cmd.exe /k", "type \"" + iniFullName + "\"", true).stdOut; | |||
var sectionStart = iniText.indexOf("\r\n[Theme\\" + newTheme + "]\r\n"); | |||
if (sectionStart === -1) { | |||
return false; | |||
} | |||
var sectionEnd = iniText.indexOf("\r\n\r\n", sectionStart); | |||
var items = iniText.slice(sectionStart, sectionEnd).split("\r\n").slice(2); | |||
for (var i = 0; i < items.length; i++) { | |||
items[i] = items[i].slice(0, items[i].indexOf("=")); | |||
} | |||
return items; | |||
}; | |||
var items = getItems(); | |||
if (items) { | |||
ShowTip("テーマ切り替え中...しばらくお待ちください", meShowTipPosMouse); | |||
editor.WriteSettings(); | |||
editor.WriteSettingString("Themes", "ThemeName", newTheme); | |||
// テーマを「名前を付けて保存」したときに設定ファイルに追加される | |||
// [Theme\テーマ名] セクションを読んで [Display] セクションの該当する項目を書き換える | |||
for (var i = 0; i < items.length; i++) { | |||
editor.WriteSettingString("Display", items[i], | |||
editor.ReadSettingString("Theme\\" + newTheme, items[i], "") | |||
); | |||
} | |||
editor.ReadSettings(); | |||
ShowTip("", meShowTipHide); | |||
} else { | } else { | ||
Alert(newTheme + " という名前でテーマを保存してください"); | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
2025年12月12日 (金) 23:53時点における版
概要
テーマをキーボードショートカットなどでトグルできるようになるマクロです。フォーラムでucky様が作成されたものですが、フォーラムだけだと埋没してしまい検索に苦労したので、こちらにも記載させていただきました。
動作環境
Mery Ver 3.7.14 以降で使用できます。
使用方法
あらかじめ [オプション] ダイアログの [表示] カテゴリの [テーマ] で切り替え用1・切り替え用2・切り替え用3というテーマ名で切り替えたいテーマを「名前を付けて保存」してからマクロを実行してください。
切り替えるテーマの数や保存する名前を変更したい場合は switch 文を編集してください。下記は FavoriteTheme1 と FavoriteTheme2 の二つのテーマを切り替える例です。
switch (currentTheme) {
case "FavoriteTheme1":
newTheme = "FavoriteTheme2";
break;
default:
newTheme = "FavoriteTheme1";
}
最初から入っているテーマを使用したい場合でも「名前を付けて保存」で別途保存してください。
テーマの仕様変更で追加された項目を反映させたい場合はテーマを保存しなおす必要があります。
変更履歴
- 2025-12-12
- テーマの項目を INI ファイルから取得するようにした(pizz さんが作成された「テーマの自動変更」マクロのアイデアを参考にさせていただきました)
- ディレクティブ(
#fonticonと#title)を追加
- 2025-05-03
- Mery 3.7.13 時点の仕様に合わせて項目を追加
- 2024-12-29
- Mery 3.7.9 時点の仕様に合わせて項目を追加
- 2024-04-09
- メニュー等から変更した INI ファイルに書き込まれる前の設定が破棄されるのを修正
- 2024-03-03
- Mery 3.7.0 時点の仕様に合わせて項目を追加
- 2021-06-26
- 新規作成
ソースコード
#fonticon = "\uE790", #4d82b8, #dddddd
#title = "テーマのトグル"
var currentTheme = editor.ReadSettingString("Themes", "ThemeName", "");
var newTheme;
switch (currentTheme) {
case "切り替え用1":
newTheme = "切り替え用2";
break;
case "切り替え用2":
newTheme = "切り替え用3";
break;
default:
newTheme = "切り替え用1";
}
var getItems = function () {
var iniFullName = editor.FullName.replace(/\.exe$/i, ".ini");
if (!shell.FileExists(iniFullName)) {
iniFullName = shell.GetEnv("APPDATA") + "\\Mery" + iniFullName.slice(iniFullName.lastIndexOf("\\"));
}
var iniText = shell.Exec("cmd.exe /k", "type \"" + iniFullName + "\"", true).stdOut;
var sectionStart = iniText.indexOf("\r\n[Theme\\" + newTheme + "]\r\n");
if (sectionStart === -1) {
return false;
}
var sectionEnd = iniText.indexOf("\r\n\r\n", sectionStart);
var items = iniText.slice(sectionStart, sectionEnd).split("\r\n").slice(2);
for (var i = 0; i < items.length; i++) {
items[i] = items[i].slice(0, items[i].indexOf("="));
}
return items;
};
var items = getItems();
if (items) {
ShowTip("テーマ切り替え中...しばらくお待ちください", meShowTipPosMouse);
editor.WriteSettings();
editor.WriteSettingString("Themes", "ThemeName", newTheme);
// テーマを「名前を付けて保存」したときに設定ファイルに追加される
// [Theme\テーマ名] セクションを読んで [Display] セクションの該当する項目を書き換える
for (var i = 0; i < items.length; i++) {
editor.WriteSettingString("Display", items[i],
editor.ReadSettingString("Theme\\" + newTheme, items[i], "")
);
}
editor.ReadSettings();
ShowTip("", meShowTipHide);
} else {
Alert(newTheme + " という名前でテーマを保存してください");
}
スポンサーリンク