「
テーマのトグル
」を編集中
2025年12月19日 (金) 22:43時点における
Ucky
(
トーク
|
投稿記録
)
による版
(
→
変更履歴
)
(
差分
)
← 古い版
|
最新版
(
差分
) |
新しい版 →
(
差分
)
ナビゲーションに移動
検索に移動
警告: このページの古い版を編集しています。
公開すると、この版以降になされた変更がすべて失われます。
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、さまざまなメリットもあります。
スパム攻撃防止用のチェックです。 決して、ここには、値の入力は
しない
でください!
== 概要 == テーマをキーボードショートカットなどでトグルできるようになるマクロです。[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-19 ** テーマ切り替え中にステータスバーとツールチップにメッセージを表示するようにした * 2025-12-12 ** テーマの項目を INI ファイルから取得するようにした(pizz さんが作成された「[[テーマの自動変更]]」マクロのアイデアを参考にさせていただきました) ** ディレクティブ(<code>#fonticon</code>と<code>#title</code>)を追加 * 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 ** 新規作成 == ソースコード == <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) { var statusText = Status; editor.ExecuteMacro( "Status = 'テーマ切り替え中...しばらくお待ちください';" + "ShowTip('テーマ切り替え中...しばらくお待ちください', meShowTipPosMouse);", meRunText | meMacroAsync ); 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(); Status = statusText; ShowTip("", meShowTipHide); } else { Alert(newTheme + " という名前でテーマを保存してください"); } </syntaxhighlight>
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
キャンセル
編集ヘルプ
(新しいウィンドウで開きます)
スポンサーリンク
ナビゲーション メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク