追加コピー・追加切り取り
ナビゲーションに移動
検索に移動
すでにマクロライブラリ内の「キーアサイン集」のページに「追加コピー」と「追加切り取り」マクロがありますが、クリップボード履歴に「追加コピー (切り取り)」前/後のアイテムが累積されていき、ばあいによってはクリップボード履歴を無駄に圧迫することになってしまいます。
このページの「追加コピー」と「追加切り取り」マクロはクリップボード履歴の 2 件目以降のデータを保持したまま、最新のデータだけを「追加コピー」または「追加切り取り」の結果に置きかえるものです。
- このページの「追加コピー」と「追加切り取り」マクロは Mery 2.8.1 以降 でしか利用できません。
- Mary ver 2.8.0 以前、または「追加コピー」や「追加切り取り」ごとにクリップボード履歴にデータを累積させていきたい場合は、「キーアサイン集」の「追加コピー」と「追加切り取り」を利用してください。
- たぶん Windows OS のクリップボードには「追加コピー」前/後のデータが累積されていきます…。(未確認)
- クリップボード履歴に累積しているデータの任意の範囲を「つなげて貼り付け」したい場合は、「『クリップボード履歴』メニューのマクロ化」マクロと「追加コード:『n 番目から m 番目まで貼り付け』」を利用してください。
設定項目[編集]
allowCopyLine
/allowCutLine
true
: 標準コマンドの「コピー」や「切り取り」と同様に、選択範囲がないときにはキャレットのある論理行全体を「追加コピー」または「追加切り取り」します。 (初期値)false
: 選択範囲がないときには「追加コピー」または「追加切り取り」しません。
appendix
- 「追加コピー」または「追加切り取り」する前からあったクリップボードのテキストと、「追加コピー」または「追加切り取り」したテキストとの間に任意の文字列を挟みこむことができます。
【例】
""
: なにも付加しない。 (初期値)" "
: 「半角空白」を挟みこむ。"\n"
: 「改行」を挟みこむ。
allowCollapse
(「追加コピー」マクロのみ)
true
: 選択範囲を「追加コピー」後に解除します。false
: 選択範囲を解除しません。 (初期値)
ソースコード[編集]
- ダウンロード >> 「ファイル:追加コピー/追加切り取り.zip」 (アイコン入り)
追加コピー[編集]
#title = "追加コピー"
#tooltip = "追加コピー"
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",214
// #icon = "copy_plus.ico"
/**
* sukemaru (2020/04/23 - 2020/06/05)
* ver 2.8.1 以降用「追加コピー」
* ※ クリップボード履歴に累積させずに、最新のデータに上書きで追加コピーする
* (クリップボード履歴の 2 件目以降のデータを保持)
*/
// ---------- ▼ 設定項目 ▼ ---------- //
// ■ 選択範囲がないときは論理行全体を追加コピーする
var allowCopyLine = true; // true 行コピーする / false 行コピーはしない
// ■ 追加コピー後に選択範囲を解除する(範囲選択していたときのみ)
var allowCollapse = false; // true 解除する / false 解除しない
// ■ 追加コピーするテキストの前に付加する文字列
var appendix = ""; // 半角空白 → " " / 改行 → "\n"
// ---------- ▲ 設定項目 ▲ ---------- //
var d = editor.ActiveDocument, s = d.selection;
var line = d.GetLine( s.GetActivePointY( mePosLogical ), meGetLineWithNewLines );
var str = s.Text ? s.Text
: ( allowCopyLine && line ? line : "" );
appendix = appendix || "";
if ( str ) {
var cb = ClipboardData;
var oldData = cb.GetData( 0 ) || cb.GetData() || "";
cb.ClearData( 0 );
cb.SetData( oldData + appendix + str );
}
if ( s.Text && allowCollapse ) {
s.SetActivePos( s.GetActivePos() );
}
追加切り取り[編集]
#title = "追加切り取り"
#tooltip = "追加切り取り"
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",213
// #icon = "cut_plus.ico"
/**
* sukemaru (2020/06/05)
* ver 2.8.1 以降用「追加切り取り」
* ※ クリップボード履歴に累積させずに、最新のデータに上書きで追加切り取りする
* (クリップボード履歴の 2 件目以降のデータを保持)
*/
// ---------- ▼ 設定項目 ▼ ---------- //
// ■ 選択範囲がないときは論理行全体を「追加切り取り」する
var allowCutLine = true; // true 行切り取りする / false 行切り取りはしない
// ■ 「追加切り取り」するテキストの前に付加する文字列
var appendix = ""; // 半角空白 → " " / 改行 → "\n"
// ---------- ▲ 設定項目 ▲ ---------- //
var d = editor.ActiveDocument, s = d.selection;
if ( ! d.ReadOnly ) {
if ( s.IsEmpty && allowCutLine ) { s.SelectLine(); }
var str = s.Text;
appendix = appendix || "";
if ( str ) {
var cb = ClipboardData;
var oldData = cb.GetData( 0 ) || cb.GetData() || "";
cb.ClearData( 0 );
cb.SetData( oldData + appendix + str );
}
s.Delete();
}
else { Status = "ドキュメントは書きかえ禁止です。"; }
スポンサーリンク