pentadactylでno-reading.js

個人的にはUst見るときとかに無いとやってられないno-reading.jsですが
pentadactyl(スペルも名前も覚えにくい)でそのまま動かすことが出来ませんでした。
xul周りの仕様が違うからのようです。

"liberator.xul - vimperator-labs - Project Hosting on Google Code"
http://bit.ly/bqhA2o

    <statusbar id="status-bar" liberator:highlight="StatusLine">
        <hbox insertbefore="&liberator.statusBefore;" insertafter="&liberator.statusAfter;"
              id="liberator-statusline" flex="1" hidden="false" align="center">
            <textbox class="plain" id="liberator-statusline-field-url" readonly="false" flex="1" crop="end"/>
            <label class="plain" id="liberator-statusline-field-inputbuffer"    flex="0"/>
            <label class="plain" id="liberator-statusline-field-progress"       flex="0"/>
            <label class="plain" id="liberator-statusline-field-tabcount"       flex="0"/>
            <label class="plain" id="liberator-statusline-field-bufferposition" flex="0"/>
        </hbox>
        <!-- just hide them since other elements expect them -->
        <statusbarpanel id="statusbar-display" hidden="true"/>
        <statusbarpanel id="statusbar-progresspanel" hidden="true"/>
    </statusbar>

とか
"dactyl.xul - dactyl - Project Hosting on Google Code"
http://bit.ly/a7OG7X

    <statusbar id="status-bar" dactyl:highlight="StatusLine">
        <hbox insertbefore="&dactyl.statusBefore;" insertafter="&dactyl.statusAfter;"
              id="dactyl-statusline-field-status" flex="1" hidden="false" align="center">
            <textbox class="plain" id="dactyl-statusline-field-url" readonly="false" flex="1" crop="end"/>
            <label class="plain" id="dactyl-statusline-field-inputbuffer"    flex="0"/>
            <label class="plain" id="dactyl-statusline-field-progress"       flex="0"/>
            <label class="plain" id="dactyl-statusline-field-tabcount"       flex="0"/>
            <label class="plain" id="dactyl-statusline-field-bufferposition" flex="0"/>
            <label class="plain" id="dactyl-statusline-field-zoomlevel"      flex="0"/>
        </hbox>
        <!-- just hide them since other elements expect them -->
        <statusbarpanel id="statusbar-display" hidden="true"/>
        <statusbarpanel id="statusbar-progresspanel" hidden="true"/>
    </statusbar>

とか。


で、出てるエラーは

Sourcing file: ~/.pentadactyl/plugins/no-reading.js:135: TypeError: sl is null

なので名前の変わったものをきちんとセットしようと言うことで
no-readings.jsの129行目あたりを純粋に置き換えて

// sl = document.getElementById('liberator-statusline'),
sl = document.getElementById('dactyl-statusline-field-status'),
// slfu = document.getElementById('liberator-statusline-field-inputbuffer')
slfu = document.getElementById('dactyl-statusline-field-inputbuffer')

すればいけるかと思ったら
"document.getElementById('dactyl-statusline-field-status')"がnullでだめだった。
一方で"document.getElementById('dactyl-statusline-field-inputbuffer')"は
ちゃんと取れてくるみたい。


仕方ないんでその辺りから他のものを取ってきて(適当すぎる)

// sl = document.getElementById('liberator-statusline'),
sl = document.getElementById('statusbar-progresspanel'),

したら一応動くように。

migrateの時もだったから

sl = document.getElementById('dactyl-statusline-field-container')

の方が良いのかな?


とにかくslにnullが渡ってこなければうまく動くような気もしてきた。


jsとかXULちゃんと勉強しないとだめだなぁ。。。