「
「クリップボード履歴」メニューのマクロ化
」を編集中 (節単位)
ナビゲーションに移動
検索に移動
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、さまざまなメリットもあります。
スパム攻撃防止用のチェックです。 決して、ここには、値の入力は
しない
でください!
== 概要 == 「クリップボード履歴」と「スニペット (テンプレート)」機能とをひとまとめにしたマクロです。 * 2in1+α の機能をひとつのツールバーアイコンから利用できます。 * 「クリップボード履歴」と「スニペット」間のデータの受け渡しができるようになります。 * 「クリップボード履歴」機能は Mery 2.8.1 以降で利用できます。 * 「スニペット」機能は [[プラグイン:スニペットプラグイン|スニペットプラグイン]] の設定ファイル '''snippets.txt''' を読み書きするというかたちにしています。 <div class="warningbox"> *'''「クリップボード履歴」機能は <span style="color:#c00;"> Mery 2.8.1 以降 </span> でしか利用できません。''' * あらかじめ「[[includeライブラリ]]」の導入が必要です。 </div> * 外部実行ファイル「[[GetKeyState.exe(キー状態取得実行ファイル)|GetKeyState.exe]]」で機能を拡張できます(なくても差し支えありません)。 * 「[[プラグイン:スニペットプラグイン|スニペットプラグイン]]」を導入していないでも「スニペット(定型文)」機能を利用できます。 : ※ '''snippets.txt''' 内のタブインデントによる階層構造をある程度ポップアップメニューに反映させられるようになっています。 : ''ref.'' 「スニペットプラグイン」のページの [[プラグイン:スニペットプラグイン#Snippets.txt の書き方|Snippets.txt の書き方]] を参照のこと。 : ※ ただし、このマクロでは '''snippets.txt''' 内の空行などの扱いについて [[#「スニペットプラグイン」と異なる部分|「スニペットプラグイン」と異なる部分]] があります。 * 動作確認は Windows XP sp3 (32bit) × Mery ベータ版 2.8.6 以降(ポータブル版)でしかしていません。 : なにかしらの支障を来たす不具合が見つかった場合は、このマクロを削除して使用を中止するか、または [https://www.haijin-boys.com/discussions フォーラム] にてご報告ください。 : ''cf.'' マクロライブラリには「[[定型文を挿入]]」機能に特化したマクロも別途あります。 ---- <div id="diff1"></div> === ツールメニューの「クリップボード履歴」と異なる部分 === (2019-11-29) * オプション設定(<code>toTop</code>)により、<span style="color:#0000c0;">貼り付けたアイテムを「履歴の先頭に移動する」ことができます。</span> : ⇒ 以後、Ctrl+V でつづけて貼り付けできるようになります。 * <span style="color:#0000c0;">クリップボード内に重複するアイテム(完全におなじ文字列データ)がある場合、ひとつを残して古いデータを削除します。</span> : ⇒ 履歴 16 件分、無駄なく活用できます。 : ※ 重複データを削除するのはこのマクロを実行したときだけです。 通常の「コピー」操作を監視するものではありません。 * 「'''クリップボードのすべての履歴を削除'''」 「'''履歴からアイテムをひとつ削除'''」 「'''貼り付けしてからアイテムを削除'''」 「'''履歴からアイテムをスニペットに登録'''」 の機能を追加してあります。 : <span style="color:#c00;">ポップアップメニュー内のアイテムの '''Ctrl+クリック''' で「貼り付けしてからアイテムを削除」する機能は、「[[GetKeyState.exe(キー状態取得実行ファイル)|GetKeyState.exe]] 」を導入している場合にかぎり利用できます。</span> (2020-06-27 追加) * クリップボード履歴内の複数のアイテムをまとめて貼り付け('''[[#n 番目から m 番目まで貼り付け|つなげて貼り付け]]''')できます。 * 「'''追加コピー/追加切り取り'''」コマンドを利用できます([[キーアサイン集#追加切り取り|キーアサイン集バージョン]]とは異なり「追加コピー/追加切り取り」前後のアイテムがクリップボード履歴に累積しません)。 : ''ref.'' 「[[追加コピー・追加切り取り]]」マクロ * <span style="color:#c00;"><u>「[[GetKeyState.exe(キー状態取得実行ファイル)|GetKeyState.exe]] 」を導入していれば</u>、アイテムを '''Ctrl+クリック''' したときに、アイテムを貼り付けし、そのアイテムをクリップボード履歴から削除します。</span> : ※ 設定項目 <syntaxhighlight lang="javascript" inline>var ctrlEscape = true</syntaxhighlight>)にすると、<code>¥</code> 記号を含むアイテム(ファイルパスなど)を '''Ctrl+クリック''' したときに <code>¥</code> を二重(<code>¥¥</code>)にして貼り付けます。 ---- <div id="diff1"></div> === 「スニペットプラグイン」と異なる部分 === (2019-11-29) * ピン止めアイテムを '''Ctrl+クリック''' した場合、アイテムを貼り付けし、そのアイテムをクリップボードにコピーします(<span style="color:#c00;">「[[GetKeyState.exe(キー状態取得実行ファイル)|GetKeyState.exe]] 」を導入している場合のみ</span>)。 : ⇒ 以後、Ctrl+V でつづけて貼り付けできるようになります。 * <span style="color:#0000c0;">このマクロからスニペットに登録したアイテムは、snippets.txt の末尾に追加されます。</span> * snippets.txt 内の '''<code>&</code>''' 記号によるアクセラレータをすべて無視します。 : ⇒ 有効文字列のある行を上から順に連番化し、番号をアクセラレータにします。 * snippets.txt 内の "半角ハイフン <code>-</code> ひとつ + 空白だけの行" をセパレータにしません。 : (ポップアップメニューのメイン階層を「クリップボード履歴」と共用しているため、体裁上の都合でメインメニュー上でのセパレータ付加は見送り) : ※ <code>-</code>×2 以上であれば、有効文字列として扱います (プラグインでは、これもセパレータになる)。 : ※「ピン止めアイテム/スニペット」サブメニュー内では、階層ごとに区切って全アイテムを列挙します。 * snippets.txt 内の「空行・空白行」の扱い方などでスニペットプラグインと異なる解釈をしている部分があります。<br><span style="color:#0000c0;">このマクロでは、snippets.txt 内の「空行」と「タブ文字/半角空白だけの空白行」を完全に無視するので、「空文字のサブメニュー見出し」を作りません</span> (ただし、全角空白や2つ以上のハイフン <code>--</code> は有効な文字列として扱います)。 : ⇒ ポップアップメニューでの表示状態がスニペットプラグインと同じ階層構造にならないことがあります。 * <span style="color:#0000c0;">snippets.txt 内で、行頭が "<code>-</code>×1 + タブ文字" ではじまる行を無視します。</span> : ⇒ 行頭が "<code>-</code>+タブ文字" の行は "コメントアウトされた行" と見做します。 : ※ スニペットプラグインではタブ文字のあとに文字列があれば <code>-</code> をラベルとしてメニューのアイテムに追加しますが、このマクロでは無効な行となります。 * <span style="color:#c00;">snippets.txt 内の空行やタブインデントでのクループ化が適切でない部分は、ポップアップメニューに正しく反映されません</span> (その行または段落/グループをスキップし、ポップアップメニューに表示しません)。 : <span style="color:#0000c0;">※ タブインデントの階層を深くするさいは、かならず一段ずつ下げてください。</span><br> 二段以上の差があるとエラーの元になったり、または予期せぬ階層に表示されたりします (これはスニペットプラグインでも起きえるものであり、不具合ではありません)。 : ※ 階層を浅くするさいは、二段以上の差があっても構いません。 (2020-06-27 追加) * オプション設定により snippets.txt 内で <code>@@@</code> または <code>@@@@</code> を含むアイテムの場合、「[[#ピン止めアイテムで選択範囲を囲う|選択範囲を囲う]]」ことができます。 === n 番目から m 番目まで貼り付け === クリップボード履歴内の連続する複数のアイテムを '''まとめて貼り付け''' します。 * 「n 番目から m 番目まで貼り付け」 : 指定した複数のアイテムを '''そのままつなげて''' 貼り付けます。 * 「n 番目から m 番目まで 任意の文字列 でつないで貼り付け...」 : 指定した複数のアイテムを '''入力ダイアログで指定した文字列''' でつなげて貼り付けます。 * 「n 番目から m 番目までを 改行 でつないで貼り付け」 : 指定した複数のアイテムを '''改行でつなげて''' 貼り付けます。 ※ 「n 番目から m 番目までを 半角空白 でつないで貼り付け」「n 番目から m 番目までを 空行 でつないで貼り付け」コマンドもあります(ソースコード内 340 行目付近でコメントアウト)。 追加コマンドを選択すると入力ダイアログが2回(「任意の文字列」では3回)表示されますので、ポップアップメニュー内での '''履歴アイテムの番号''' を指定してください。 ※ コピーした順番どおりにつなげて貼り付けするばあいは、「さいしょのアイテムの番号」'''>'''「さいごのアイテムの番号」です。 '''''e.g.''''' 最新の3件をコピーした順につなげて貼り付けするなら :「さいしょのアイテムの番号」= '''3''' :「さいごのアイテムの番号」= '''1''' ※ 入力ダイアログが "空の状態" または "無効な文字列のみが入力された状態" でキャンセルされたばあいは、なにも貼り付けしません。 ※ 設定項目 <syntaxhighlight lang="javascript" inline>var unitToTop = true;</syntaxhighlight> にすると、つなげたテキストデータをクリップボード履歴の先頭に追加登録します (ただし 16 件目にあったアイテムは消えます)。<br> <syntaxhighlight lang="javascript" inline>var unitToTop = true;</syntaxhighlight> でも <syntaxhighlight lang="javascript" inline>var unitToTop = false;</syntaxhighlight> でも、つなげる前の各アイテムは削除しません (削除する仕様だと番号指定をまちがえたときに手戻りできなくなってしまう)。 === ピン止めアイテムで選択範囲を囲う === 設定項目 <syntaxhighlight lang="javascript" inline>var sandwich = true</syntaxhighlight> にすると、snippets.txt 内で <code>@@@</code> または <code>@@@@</code> を含むアイテムは「選択範囲の囲い込み」に利用できるようになります。 ※ <span style="color:#c00;">囲い込み用文字列が改行を含んでいる場合、マルチカーソル/複数選択に非対応です</span>(正しく囲い込みできません)。 * <code>@</code> を '''3つ'''(<code>@@@</code>)ふくむアイテムは、'''選択範囲全体''' を <code>@@@</code> の前後の文字列で囲います。 :; ''e.g.'' :・snippets.txt のアイテム:<code><nowiki><pre>\n@@@\n</pre></nowiki></code> :・選択範囲の文字列: var d = editor.ActiveDocument; var s = d.selection; :: ▼ 結果 ▼ <syntaxhighlight lang="javascript"> <pre> var d = editor.ActiveDocument; var s = d.selection; </pre> </syntaxhighlight> * <code>@</code> を '''4つ'''(<code>@@@@</code>)ふくむアイテムは、'''選択範囲の各行''' を <code>@@@@</code> の前後の文字列で囲います。 :; ''e.g.'' :・snippets.txt のアイテム:<code><nowiki><code>@@@@</code></nowiki></code> :・選択範囲の文字列: var d = editor.ActiveDocument; var s = d.selection; :: ▼ 結果 ▼ <syntaxhighlight lang="javascript"> <code>var d = editor.ActiveDocument;</code> <code>var s = d.selection;</code> </syntaxhighlight> * 設定項目 <syntaxhighlight lang="javascript" inline>var cheese = "@"</syntaxhighlight> の <code>@</code> を任意の文字に変更可。
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
キャンセル
編集ヘルプ
(新しいウィンドウで開きます)
スポンサーリンク
ナビゲーション メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク