
Windows用のエディタ、Emeditor用のマクロとして以前、ネット検索マクロ改良版

Twitterでは、次のURL
https://twitter.com/intent/tweet/
にアクセスすれば入力欄を出せるが、そのURLに文字を入れて、
https://twitter.com/intent/tweet?text=【ツイートする文字】
にアクセスすれば、入力欄に文字が入った状態になるので、エディタなどからでも転送可能になる。
ただし、タグの指定文字「#」などはURLにそのまま送れず、コードに変換しないといけない。
例えば、
の文字を送信したい場合、URLは、空牙・狼牙・骸牙 #deco
Firefoxなどのブラウザでは、URLに漢字を入れると自動でエンコードしてくれのでこれでもいいが、本来は、https://twitter.com/intent/tweet?text=空牙・狼牙・骸牙 %23deco
ここまで必要。https://twitter.com/intent/tweet?text=%E7%A9%BA%E7%89%99%E3%83%BB%E7%8B%BC%E7%89%99%E3%83%BB%E9%AA%B8%E7%89%99%20%23deco
と言う事で、EmEditorから、このエンコードまでしてTwitterに送信するマクロを作ってみた。
マクロの前に、前回書いたネット検索マクロ改良版

そして次のマクロ2つを登録。
ネット検索定義用マクロ
("NetSearch.jsee"のファイル名で保存)
// ネット検索定義
function NetSearch(ComTop , ComEnd , CpCt) {
if ( document.selection.IsEmpty ) // 範囲指定無ければ
document.selection.SelectLine(); // 1行選択
SWord = encodeURIComponent(document.selection.Text)
.replace(/^(%0D%0A)+/, "")
.replace(/(%0D%0A)+$/, "");
// エンコード・前後の改行を削除
switch (CpCt) { // 指定パラメータにより
case "Copy": // コピー
document.selection.Copy();
break;
case "Cut": // カット
document.selection.Cut();
break;
case "Del": // 削除
document.selection.Delete(1);
break;
}
editor.ExecuteCommandByID(4096); // 新規作成
document.selection.Text =
ComTop + SWord + ComEnd; // URL貼付
document.selection.SelectAll(); // 全て選択
editor.ExecuteCommandByID( 8192 + 0 ); // 外部ツールの実行
editor.ExecuteCommandByID(4120); // 文書破棄
}
実行用マクロ
("Twitter.jsee"など好きなファイル名で保存)
#tooltip = "Twitter投稿"
#include "NetSearch.jsee"
// Twitter投稿
NetSearch(
"http://twitter.com/intent/tweet?text=" , "" , "Cut"
);
Emeditor上で、2つのうち実行用マクロを動かす事にで、文字が範囲指定されていればその部分を、無ければ1行を切り取ってツイートしてくれる。ツイートは改行にも対応。
マクロ解説
主な処理は、function指定している「NetSearch」で行っているが、そこに送る各パラメーターは、
NetSearch(ComTop , ComEnd , CpCt)
ComTop | : | 文字の前に挿入するURL |
ComEnd | : | 文字の後に挿入するURL |
CpCt | : | ブラウザ転送後の処理 |
Copy・文字をコピー | ||
Cut・文字をカット | ||
Del・文字を削除 | ||
他 or 無指定・処理無し |
処理方法としては、文字の操作のために新規文書を立ち上げて貼り付け、エンコード、URLを貼り付けてブラウザに送る。送ったらその文書を破棄するという流れ。
これも、文字をURLとして送っているだけなので、パラメーターを変更すれば色々な使い方が出来ると思う。
(2014/01/12追記)
マクロを大幅に変更。
最初はエンコードに「encodeURI」命令を使っていたけど、この時、URLとして使えない文字もエンコードできる「encodeURIComponent」の存在を知らなかった(汗)。おかげでわざわざそれを変換するマクロも付けていたという。