5 // Copyright (c) 2009 snaka<snaka.gml@gmail.com>
7 // distributable under the terms of an MIT-style license.
8 // http://www.opensource.jp/licenses/mit-license.html
13 <plugin name="smooziee" version="0.10.2"
14 href="https://github.com/vimpr/vimperator-plugins/raw/master/_smooziee.js"
15 summary="j,kキーでのスクロールをスムースに"
17 xmlns="http://vimperator.org/namespaces/liberator">
18 <author email="snaka.gml@gmail.com" homepage="http://vimperator.g.hatena.ne.jp/snaka72/">snaka</author>
19 <project name="Vimperator" minVersion="3.6"/>
20 <license>MIT style license</license>
21 <p>j,k key scrolling to be smoothly.</p>
22 <h3 tag="smooziee_global_variables">Global vriables</h3>
23 <p>You can configure following variable as you like.</p>
25 <dt>smooziee_scroll_amount</dt><dd>Scrolling amount(unit:px). Default value is 400px.</dd>
26 <dt>smooziee_interval</dt><dd>Scrolling interval(unit:ms). Default value is 20ms.</dd>
28 <h3 tag="smooziee_example">Example</h3>
29 <p>Set scroll amount is 300px and interval is 10ms.</p>
31 let g:smooziee_scroll_amount="300"
32 let g:smooziee_scroll_interval="10"
34 <h3 tag="smooziee_API">API</h3>
35 <code>smooziee.smoothScrollBy(amount);</code>
38 :js liberator.plugins.smooziee.smoothScrollBy(600)
39 :js liberator.plugins.smooziee.smoothScrollBy(-600)
42 <plugin name="smooziee" version="0.10.2"
43 href="https://github.com/vimpr/vimperator-plugins/raw/master/_smooziee.js"
44 summary="j,kキーでのスクロールをスムースに"
46 xmlns="http://vimperator.org/namespaces/liberator">
47 <author email="snaka.gml@gmail.com" homepage="http://vimperator.g.hatena.ne.jp/snaka72/">snaka</author>
48 <project name="Vimperator" minVersion="3.6"/>
49 <license>MIT style license</license>
50 <p>普段のj,kキーのスクロールをLDRizeライクにスムースにします。</p>
51 <h3 tag="smooziee_global_variables">グローバル変数</h3>
52 <p>以下の変数を.vimperatorrcなどで設定することで動作を調整することができます。</p>
54 <dt>smooziee_scroll_amount</dt>
55 <dd>1回にスクロールする幅です(単位:ピクセル)。デフォルトは"400"です。</dd>
56 <dt>smooziee_interval</dt>
57 <dd>スクロール時のアニメーションのインターバルです(単位:ミリ秒)。
58 "1"以上の値を設定します。デフォルトは"20"です。</dd>
60 <h3 tag="smooziee_example">設定例</h3>
61 <p>スクロール量を300pxに、インターバルを10msに設定します。</p>
63 let g:smooziee_scroll_amount="300"
64 let g:smooziee_scroll_interval="10"
66 <h3 tag="smooziee_API">API</h3>
67 <p>他のキーにマップする場合やスクリプトから呼び出せるようAPIを用意してます。</p>
68 <code>smooziee.smoothScrollBy(amount);</code>
71 :js liberator.plugins.smooziee.smoothScrollBy(600)
72 :js liberator.plugins.smooziee.smoothScrollBy(-600)
74 <h3 tag="soomziee_ToDo">ToDo</h3>
76 <li>読み込みの順番によっては他のプラグインと競合する可能性があるのをなんとかしたい。</li>
81 let self
= liberator
.plugins
.smooziee
= (function(){
89 self
.smoothScrollBy(getScrollAmount() * (count
|| 1));
100 self
.smoothScrollBy(getScrollAmount() * -(count
|| 1));
110 "Smooth scroll down page",
112 self
.smoothScrollBy(getScrollAmount() * 3.5 * (count
|| 1));
121 "Smooth scroll up page",
123 self
.smoothScrollBy(getScrollAmount() * 3.5 * -(count
|| 1));
132 smoothScrollBy: function(moment
) {
133 win
= Buffer
.findScrollableWindow();
134 interval
= window
.eval(liberator
.globalVariables
.smooziee_scroll_interval
|| '20');
135 destY
= win
.scrollY
+ moment
;
137 smoothScroll(moment
);
148 function getScrollAmount() window
.eval(liberator
.globalVariables
.smooziee_scroll_amount
|| '400');
150 function smoothScroll(moment
) {
152 moment
= Math
.floor(moment
/ 2);
154 moment
= Math
.ceil(moment
/ 2);
156 win
.scrollBy(0, moment
);
158 if (Math
.abs(moment
) < 1) {
159 setTimeout(makeScrollTo(win
.scrollX
, destY
), interval
);
163 next
= setTimeout(function() smoothScroll(moment
), interval
);
166 function makeScrollTo(x
, y
) function() win
.scrollTo(x
, y
);
170 // vim: sw=2 ts=2 et si fdm=marker: