設定
Cygwin Emacs で、部分的に動作するセットアップがありorg-protocol
ます。Org-protocol は、ブラウザーから情報を取得して Emacs に渡す方法です。Windows 7 レジストリの変更を使用してorg-protocol
、既知のプロトコルのリストに追加し、cygwinbash
を起動emacsclient
してそれらの要求を処理できるようにしました。以下の問題の場合を除いて、ブックマークレットと emacs の読み込み操作が成功することを意味します。
問題
ページ上の興味深いテキストを選択し、ブックマークレットを呼び出しますが、一部の文字encodeURIComponent
(つまり、括弧と単一引用符) を単独で使用すると正しくエスケープされません。これは大混乱を引き起こし、bash の解析エラーを引き起こします。この潜在的な引用の問題を bash だけで処理する方法がわからないので、ブックマークレットを変更して、問題のある文字を置き換えることを考えました。
以下のコードは、Chrome の JS コンソール内で呼び出された場合は機能しますが、ブックマークレットとして呼び出された場合は機能しません。(function(){...})()
また、同じ失敗した結果の構文でやり直そうとしました。
どのような解決策 (bash、bookmarklet、その他?) がありますか?
ブックマークレットコード
javascript:location.href='org-protocol://capture://'+encodeURIComponent(location.href)+'/'+encodeURIComponent(document.title)+'/'+encodeURIComponent(window.getSelection()).replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29")
レジストリモッド
また、ここにコマンドライン呼び出しがあります-私の引用スキームに問題がある場合に備えて。
REGEDIT4
[HKEY_CLASSES_ROOT\org-protocol]
@="URL:Org Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\org-protocol\shell]
[HKEY_CLASSES_ROOT\org-protocol\shell\open]
[HKEY_CLASSES_ROOT\org-protocol\shell\open\command]
@="\"cmd.exe\" \"/k\" \"C:\\cygwin\\bin\\bash.exe\" \"--login\" \"-c\" \"DISPLAY=:0 /usr/local/bin/emacsclient -c %1\""