またプラグインを作ってしまった。
現状、開いているURLのコピーはできるが、タイトルのコピーにちょっと困る。CopyURL+のようなことをコマンドで出来たら良いなと思って作ってみた。作っていたら欲が出ていろいろ追加してしまったがw
インストールはいつものようにしてくださいな。今回はちょっと長いのでここに貼り付けずにファイルとしてサーバにアップしました。
:copy copyStringとすることでクリップボードへcopyStringがコピーされます。
copyStringが登録された文字列である場合には、対応する値がコピーされます。登録されたものに関してはタブによる補完が効きます。
コピーされる時、対象に特定の以下のような文字列がある場合は置換されてコピーされます。
copy %TITLE%copy titleAndURLまた、登録された文字列の値はオプションの登録されるので:setコマンドで値の表示や変更が可能です。(現在セッションのみ有効です)
set titleAndURLset anchor = <a href="%URL%" title="%TITLE%">%TITLE%</a>コード中の先頭の方にあるtemplateオブジェクトに幾つか用意してあるので参考にしつつ自分で好きなように変更すると良いでしょう。
また、引数を省略した場合にはコード中のdefaultの値が用いられます。よく使うものを指定しておくと良いでしょう。
マップに登録してキータイプひとつで、という使い方もあるかと思います。
:copy! exprとcopyの後ろに!をつけると拡張コピーとなり、JavaScriptコードの結果をコピーできます。
コードが実際に実行されることに注意してください。また、コードの補完も効きます。:echoコマンドの出力結果がコピーされるような感じです。
:copy! version:copy! options.hintstyleそれと、コードがエラーを起こした場合はエラーメッセージがコピーされます。エラーメッセージをコピーしたい時もあるかなと思い、こういう仕様にしました。
%HTMLSEL%の置換と補完機能に苦労しました。
%HTMLSEL%は選択範囲の文字列ではなくSelectionオブジェクトを取って来なければならず...とまぁ、これは前回(安全にSelectionオブジェクトを得る(XPCNativeWrapperの使用) - hogehoge @teramako)を参照してください。さらにSelectionオブジェクトからRangeオブジェクトを得て、cloneContents()メソッドでDocumentFragmentオブジェクトを得て、XMLSerializerで文字列化ということをしてます。
補完機能はvimperatorのバグなのか仕様なのか、!があると上手く作動しないので修正のために既存のコードを上書きしたりしてます。