fc2ブログ

ぼちぼち散歩

ここ数日のVimperatorのバグを直すつもりのパッチ

とりあえずこれで良さそう?

diff --git a/content/options.js b/content/options.js
index be173f5..4777c42 100644
--- a/content/options.js
+++ b/content/options.js
@@ -947,7 +947,7 @@ function Options() //{{{
             let context = CompletionContext("");
             let res = this.completer(context);
             if (!res)
-                res = context.allItems.map(function (item) [item.text]);
+                res = context.allItems.items.map(function (item) [item.text]);
             return Array.concat(values).every(
                 function (value) res.some(function (item) item[0] == value));
         },

あと,タブにOverlayされるとTreeStyleTabがぶっ壊れるので回避してみる.TODO見る限りは,将来的にはset guioptionsでどうにかできるようになる模様.

diff --git a/content/tabs.js b/content/tabs.js
index 25f4c94..3f86a7e 100644
--- a/content/tabs.js
+++ b/content/tabs.js
@@ -220,8 +220,8 @@ function Tabs() //{{{
                 validator: options.validateCompleter
             });
         // TODO: Add option, or only apply when go~=[nN]
-        styles.addSheet("tab-binding", "chrome://*",
-            ".tabbrowser-tab { -moz-binding: url(chrome://liberator/content/vimperator/bindings.xml#tab) !important; }", true);
+        // styles.addSheet("tab-binding", "chrome://*",
+            // ".tabbrowser-tab { -moz-binding: url(chrome://liberator/content/vimperator/bindings.xml#tab) !important; }", true);
 
     }
スポンサーサイト



2008/11/29 22:24 | Firefox | トラックバック(0) | コメント(0)

ページの先頭へ

VimにあってVimperatorにも欲しいもの

arpeggio.vimをVimperatorに移植しようと試みたけど,完全に実装しようと思うと以下の機能がないととても難しいか無理だと思った.

  • <Plug>
  • autoload
  • timeout, timeoutlen

2008/11/25 18:42 | Firefox | トラックバック(0) | コメント(0)

ページの先頭へ

Vimperatorいろいろ

.vimperatorrcの改行コード

2.0preで.vimperatorrcを書くときに気をつけること - どんごどんごとあったので,Vimperator 2.0preで.vimperatorrcの改行コード問題を解決する(できたつもりの)パッチを晒してみる.文字コードはわからないです(-.-;)

diff --git a/content/io.js b/content/io.js
index 3083e06..1c3fe4b 100644
--- a/content/io.js
+++ b/content/io.js
@@ -805,7 +805,7 @@ lookup:
                 {
                     let heredoc = "";
                     let heredocEnd = null; // the string which ends the heredoc
-                    let lines = str.split("\n");
+                    let lines = str.split(/\r?\n|\r/); // considering \r\n, \n and \r
 
                     for (let [i, line] in Iterator(lines))
                     {

ちょっとだけMacっぽいテーマ

微妙だけど,.vimperator/color/mac.vimp とかに保存して,.vimperatorrcで colorscheme mac とかすればよい.

hi StatusLine color: black
hi StatusLineSecure color: green
hi StatusLineBroken color: red

hi CompItem[selected] background: #1e46f3 ;color: white

hi Hint -append background: #1e46f3; color: white;
set linkbgcolor = #eeeeff
set linkfgcolor = #000000
set activelinkbgcolor =  #aaaaff
set activelinkfgcolor =  #000000

その他,.vimperatorrcの小ネタ

set! でabout:configの設定できるので,新しくプロファイル作ったときでも設定持ち歩ける.

" disable accesskey
set! ui.key.generalAccessKey=0
" hide close button
set! browser.tabs.closeButtons=2
" open bookmarks in background
set! browser.tabs.loadBookmarksInBackground=true
" open tabs by javascript in background
set! browser.tabs.loadDivertedInBackground=true
" allow lots of popups for ldr or fastladder
set! dom.popup_maximum=9999

補完候補を上下キーでも選択できるようにする

cnoremap <Up> <S-Tab>
cnoremap <Down> <Tab>

適当にスペースで区切られた長い文字列(プログラムのソースとか)がクリップボードにあるときに,pとかPが暴発するとえらいことになるので,gPだけを使うことにする.

noremap p <Nop>
noremap P <Nop>

2008/11/20 22:32 | Firefox | トラックバック(0) | コメント(0)

ページの先頭へ

livedoor Readerでフィードを読むのがちょっとだけ早くなるかも知れないUser CSS

各アイテムの高さを制限することによって,全文配信のフィードでも素早く読み飛ばせて,かつ気になる記事はその場でスクロールして読める.

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("reader.livedoor.com") {
  .item {
    max-height: 250px !important; /* ここの値はお好みで */
    /* overflow: auto !important; */
    overflow-x: hidden !important;
    overflow-y: auto !important;
  }
}

フィード中の広告を消す.

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain(reader.livedoor.com) {
  img[src^="http://rss.rssad.jp/"] { display: none !important; }
  /* 他にも足したらよさそう */
}

2008/11/20 追記: overflow-xとoverflow-y別々に指定した方が良さそう.

2008/11/14 02:33 | CSS | トラックバック(0) | コメント(0)

ページの先頭へ

Vimperatorでarpeggio.jsを作り始めてみた

kanaさんが作ったarpeggio.vimがすごかったので,Vimperatorでも同じことができないかと思ってやってみた.

とりあえず作り始めてみたものはGitHubのarpeggio.jsに置いてあるけど,まだいろいろと未完成.分かっている問題としては,以下のような感じ.

  • 2.0preでしか動作確認していない
  • .vimperaotrrcで設定を書くためにsource "~/.vimperator/plugin/arpeggio.vim" とか書かないといけない
  • :Arpeggioなんとか系のコマンドがちゃんと実装できてない
  • unmap系の動作がない
  • noremapがちゃんと設定できていない
  • もともとあったマッピングを上書きしてしまう(組み込みのマッピングは大丈夫)
  • マッピングできるキーとできないキーがある

特に最後の問題は,Vimperatorのキーマッピングにタイムアウトが(多分)ないことが原因.例えば,

map a hoge
map ab fuga

と,設定してあった場合,Vimの場合は,aと入力されたのち一定時間内にbの入力があればfugaが実行され,なければhogeが実行されるという風になってて,arpeggio.vimはそのタイムアウト時間を巧みに制御することによって同時押しの認識を実現している(という理解であっているはず).それに対して,Vimperatorの場合は,aと入力されたときabというマッピングが存在するとaの段階ではコマンドは実行されず,次にbが入力されればfugaが,b以外なら何もしないという動作になっている.

一方で,今のarpeggio.jsの実装はarpeggioに参加するキー全てを新たにマッピングし,そのマッピングで残りの入力を一瞬待って,その一瞬のうちに残りの入力があった場合に,同時押しがあったと判断する.したがって,zなどをarpeggioに参加させようとしても,もともとzzなどと2キーにマッピングされているため,z単体にarpeggio用マッピングを割り振っても今のところ実行されることはない.

そのほか,Vimperatorにautoloadがないとか,そもそも自分があんまりよくわかっていなかったりという理由で,実装できていない機能がたくさんある.

時間があればもう少しがんばってみる予定.

2008/11/12 03:47 | Firefox | トラックバック(0) | コメント(0)

ページの先頭へ

トップページへ