JavaScript

ファイル変更を監視して自動で :so する

プラグインかいた。 プラグイン開発なんか向け。 :autoso[urce] i_love_vimperator.js のようにすると、"i_love_vimperator.js" を監視するようになる。 そして、ファイルに変更があったときに スクリプト が実行される。 監視の中止は "!" 付きコマンドで行…

getter 付きのオブジェクトの生成が重い

ただのオブジェクトに比べて、50倍くらい時間がかかる。 Vimperator でテスト。 テストコード let time = function (name, func) { let [a, r, b] = [new Date(), func(), new Date()]; log(name + ": " + ((b.getTime() - a.getTime()) / 1000) + "msec"); …

i_love_echo にいくつかメソッド追加

http://coderepos.org/share/log/lang/javascript/vimperator-plugins/trunk?rev=23334&stop_rev=23331 $a(Array) に first/last 追加 (配列の最初と最後を返す) $s(String) に evaluate 追加 (xpath とみなして、evaluate したものを$a(配列)で返す) :echo …

添削

function escape (s) s.toSource().replace(/^[^"]+"|"[^"]+$/g,''); OoooOoOoO こんな風にできるのか…なるほど。 http://coderepos.org/share/changeset/23254/lang/javascript/vimperator-plugins/trunk

echoしつつコピー

echo コマンドで "!" するとクリップボードへのコピーも行うようになるプラギン。 :echo! liberator.plugins ただそれだけのこと。 http://coderepos.org/share/browser/lang/javascript/vimperator-plugins/trunk/echopy.js 教訓 ディスプレイはちゃんと見…

Unicodeエスケープするプラギン

:uc 猫のかわいさは異常!! で \u732b\u306e\u304b\u308f\u3044\u3055\u306f\u7570\u5e38!!こういうのが echo されて、クリップボードにコピーされる。 ":uc! .." だと逆。 ただそれだけのプラギン。 http://coderepos.org/share/browser/lang/javascript/vim…

マップされていないキーを表示する

だけのプラグイン。 一時的なマッピングをするときに、迷うことがあったので書いた。 引数無しで、普通にマップされていないキーのリストを出力。 引数にキーシーケンスをいれると、それに続くパターンで調べる。 ("gX" みたいな2ストローク系を調べられる) …

そんな!

ここまで書いた後で Date クラスの持つメソッドを調べてみたら ( https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Objects/Date ) toLocaleString とか toUTCString とか普通にあった。 JavaScript の Date はけっこう親切だなぁ。 …

プロファイルで切り替え

http://d.hatena.ne.jp/nokturnalmortum/20081105#1225877001 の方法。うちの環境でも動くのを確認。ただ、これだと vimperatorrc をわけることができないので細かい制御ができないけどプロファイル名の認識を自動でやってくれるのでたとえば 2.0pre しか使…

プロファイル切り替え、1.2対応版

http://d.hatena.ne.jp/janus_wel/20081104/1225823130 を受けてじゃあ 1.2 用の環境を作ろうかなと思ったらすでに id:nokturnalmortum が動き出していた。速いよ。そして最後に書いてあるように 1.2 には runtimepath オプションがないので動かなかった。 2…

プロファイル毎に runtimepath を設定する。

以下のように配置する前提。 変えたい場合は適当にコードをいじるべし。 .vimperator/ default/ colors/ plugin/ profile2/ colors/ plugin/ profile3/ colors/ plugin/ ... .vimperatorrc に埋め込むコード { let defaultName = 'default'; let option = li…

Firefox3 でプロファイル名を得る

なんだか気色悪いが、jslib を参考に書いた物。 homeDir を return すれば、プロファイルのディレクトリパスが得られるようになる。 function getCurrentProfileName () { let homeDir = Cc['@mozilla.org/file/directory_service;1'] .getService(Ci.nsIPro…

every.js

指定の間隔で指定のコマンドを実行するためのプラグイン。 MLで誰かに先にポストされてしまったけれど、書いてしまったので… いちおう、こっちのほうが高機能? :[INTERVAL]every [INTERVAL] 間隔で を走らせる。:[INTERVAL]delay 3j [INTERVAL] 秒後に を走…

jscompletion.js がお漏らし

(function (){})(); で囲まれていないので、変数が漏れてる。 そして、vimperator.org 落ちてる。 よい子のみんなは、スクリプトをちゃんと (function (){ foooooooooooobar(); })(); みたいに囲みましょう。 Vimperator.org復活 していたのでコメントしてお…

Head 対応

そんなわけで、いろいろコミットさせていただきました。 2.0pre の nightly 対応で。(問題かなー?と思いきや、ほかのプラグインで対応しているのが結構あったので…) rc.js での怪しい小細工をやめて、こちらもいくつか対応&コミット。 svn ci migemized_fi…

お買い物用スクリプト

外国為替換算をするスクリプトを書いた。 Usage-ja: 引数書式 :kawase[!] [ []] ソースをターゲットに換算します。 "!" 指定でクリップボードにコピーされます。Example: :kawase 30000 JPY THB http://coderepos.org/share/browser/lang/javascript/vimpera…

プラグインにマルチバイト文字のリテラルは駄目

drryさんにまた添削もらった! http://coderepos.org/share/changeset/22343 一行化されていたりして楽しい。 プラグインのマルチバイト文字リテラル問題 この diff をみていたら、マルチバイト文字がそのまま入っているのに気づいたので修正。 http://codere…

jscompletion.js

jscompletion.js ( http://vimperator.org/trac/ticket/20 ) * id:otsune に教えてもらった。まだちゃんと動いてないみたいなんだけど期待 age 。 getElementsByTagName や getElementById なんかで特定した DOM object がもつプロパティやメソッドを補完対…

hintでマルチバイト文字でのマッチングが可能に

なった(CVS Head)。 hintモードに入ると、コマンドラインに Follow hint: というようなのが出て、そこに絞り込むための文字列を入力できるようになった。 コマンドラインなのでマルチバイト文字もOKという寸法。 で、 liberator.modules.hints.show の使い方…

nico_related_videos をタグ検索に対応してみた。

:nicorelated :猫 で、「猫」タグで検索する。 ":" は全角でもOK。 また、補完に動画につけられているタグが出るようになった。http://d.hatena.ne.jp/nokturnalmortum/20080910#1220991406 http://coderepos.org/share/browser/lang/javascript/vimperator-…

指を伸ばすのがめんどくさい人向けプラグイン

Hintモードで、asdfghjkl; を使って数字入力を出来るようにします。 でこのモードをオンオフ可能。 migemo_hint は使いたいけど、毎度毎度数字キーまで指を伸ばして指を骨折するのはいやなので書いた。 let g:asdfghjkl_default = "true" と、しておくとヒン…

また仕様変更

commands.addUserCommand(commands, name, action, ...) の action に渡される引数がかわったぽい。 前はオプションを指定していたときだけこんな風になったけれど、常にこのオブジェクトが渡されるようになったみたいだ。 渡されるのは (args, special, cou…

プラグインをCVS Head で動かす。

if (1) { for (let name in liberator.modules) { if (!(name in liberator)) liberator[name] = liberator.modules[name]; } let accept = 'globalVariables echo log echoerr mode open dump execute plugins'.split(/\s+/); for each (let name in accept…

liberator.execute パッチの修正

通常は、コマンドの文字列を指定できるのみだが let liexe = liberator.execute; liberator.execute = function (fun, modifiers) { if (fun instanceof Function) { return fun(); } liexe.apply(liberator, arguments); }; これはもう動かなくなっているの…

1001匹のサイ本

bk1 で、1001 albums と JavaScript 5th を注文。 1001 albums 日本版は 5800 円くらいするのに、ブラジルでは US$28 で買えたらしい。 値段の差が激しすぎる。死ぬまでに聴きたいアルバム1001枚作者: ロバート・ディメリー,Wafers Management 1001 Project…

GMailNotifier の件数リセット

GMail に入ったときに件数を自動でリセットする。 liberator.autocommands.add('LocationChange', '^https://mail\\.google\\.com/mail/.+', function () { let svc = gGMailNotifier.nsIGMNotifierService; let c = 0; let f = function () { let username …

エラーコンソールのエラー内容がわかりやすくなっている。

temp.js に "moge.la" とだけ書いて :so すると、 エラー: moge is not defined ソースファイル: chrome://liberator/content/io.js -> /pasu/temp.js 行: 1 のように表示されるようになった。 もちろん行数もあってる。 ただし この変更によって、スクリプ…

プラグインローダ

let g:plugin_loader_roots = "/home/anekos/coderepos/vimp-plugins/ /home/anekos/my-vimp-plugins/" let g:plugin_loader_plugins = "lo,migemized_find,nico_related_videos" こうしとくと、/home/anekos/coderepos/vimp-plugins/ か /home/anekos/my-vi…

nicoantifocus.js 汎用化

helper.focus(); helper.blur(); blur !? そんなことができたのか。 イベントしてあるのは知っていたけど、フォーカス外せるとは思わなかった。 (外したらいったいどこへ行ってしまうんだ…) で、それができるのならばそのまま使えばイインジャナーイ? とい…

Migemized find - キャレットを移動するようにした

検索結果の先頭にキャレットを移動するようにした。 見た目の問題で Vimperator デフォルトのように、選択状態にはしない。 あと、フレーム関連のバグ修正。