概要
タイトルのとおり選択したテキストを、今開いているタブに追記できます。 ちなみに改行コードの判定処理が面倒なので、クリップボード経由で貼り付けてます。
Visual Basic なので拡張子 .vbee で保存する必要があります。
コード
Option Explicit ' ポップアップメニュー使用有無(0:未使用[自動で右のタブに追記]、1:使用) Const POP_FLG = 1 ' ポップアップに表示するタブ数の最大値(0で無効) Const TAB_MAX = 24 ' ポップアップに表示する新規ファイルタブの名称(無題) Const NEW_TAB = "無題" ' 追記後に元のタブに戻るか(0:戻らない、1:戻る) Const BAK_FLG = 0 Dim docs, doc, cdoc, i Set docs = editor.Documents If Len(document.selection.Text) = 0 Then Quit If POP_FLG Then i = PopupMenu() Else i = GetRightTabId() End If If i = 0 Then Quit ' 改行コードを追記側のタブに合わせるためクリップボードを使用 document.selection.Copy eeCopyUnicode If BAK_FLG Then Set cdoc = document If i = -1 Then editor.NewFile() Set doc = document Else Set doc = docs.Item(i + 0) doc.Activate End If With doc.selection .EndOfDocument ' 文末が行頭で終わっていない場合は改行を挿入 If Not .GetActivePointX(eePosLogicalA) = 1 Then doc.writeln vbNullString End If .Paste eeCopyUnicode ' コピー元が改行で終わっていない場合は末尾に改行を挿入 Dim clp: clp = Right(clipboardData.getData("text"), 1) If Not clp = vbCr And Not clp = vbLf Then doc.writeln vbNullString ' オートインデントを削除 If Not .GetActivePointX(eePosLogicalA) = 1 Then .SelectLine .Delete End If End If 'doc.writeln vbNullString End With Set doc = Nothing: Set docs = Nothing If BAK_FLG Then cdoc.Activate Set cdoc = Nothing End If ' -------------------------------------------------- ' ポップアップメニューで追記するタブを選択する関数 ' -------------------------------------------------- Function PopupMenu () Dim menu, ItemText, flags Set menu = CreatePopupMenu menu.Add "追記するタブを選んでください。", 0, eeMenuGrayed menu.Add vbNullString, 0, eeMenuSeparator For i = 1 To docs.Count ' ポップアップ最大表示数判定 If i > TAB_MAX And Not TAB_MAX = 0 Then Alert "タブ数が" & TAB_MAX & "個を超えています。" & vbLf & TAB_MAX + 1 & "個以降右のタブは省略しました。" Exit For End If ' 新規ファイル判定(未保存ファイルは名前が存在しない) If Len(docs.Item(i + 0).Name) > 0 Then ItemText = docs.Item(i + 0).Name Else ItemText = NEW_TAB End If ' 更新フラグ判定(末尾の*付与) If Not docs.Item(i + 0).Saved Then ItemText = ItemText & " *" End If ' ポップアップは10個まで頭文字に数字を付与(11個目以降とは区切る) If i < 11 Then ItemText = Right(i, 1) & " " & ItemText ElseIf i = 11 Then menu.Add vbNullString, 0, eeMenuSeparator End If ' 今開いているタブは無効化して表示 If docs.Item(i + 0) Is document Then flags = eeMenuGrayed Else flags = 0 End If menu.Add ItemText, i, flags Next menu.Add vbNullString, 0, eeMenuSeparator menu.Add " 新規作成", -1 PopupMenu = menu.Track(1) Set menu = Nothing End Function ' -------------------------- ' 右のタブIDを取得する関数 ' -------------------------- Function GetRightTabId() GetRightTabId = -1 For i = 1 To docs.Count - 1 If docs.Item(i + 0) Is document Then GetRightTabId = (i + 1) Exit Function End If Next End Function