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(){
84 /* mappings.addUserMap(
89 self.smoothScrollBy(getScrollAmount() * (count || 1));
100 self.smoothScrollBy(getScrollAmount() * -(count || 1));
111 "Smooth scroll down page",
113 self
.smoothScrollBy(getScrollAmount() * 3.5 * (count
|| 1));
122 "Smooth scroll up page",
124 self
.smoothScrollBy(getScrollAmount() * 3.5 * -(count
|| 1));
133 smoothScrollBy: function(moment
) {
134 win
= Buffer
.findScrollableWindow();
135 interval
= window
.eval(liberator
.globalVariables
.smooziee_scroll_interval
|| '20');
136 destY
= win
.scrollY
+ moment
;
138 smoothScroll(moment
);
149 function getScrollAmount() window
.eval(liberator
.globalVariables
.smooziee_scroll_amount
|| '400');
151 function smoothScroll(moment
) {
153 moment
= Math
.floor(moment
/ 2);
155 moment
= Math
.ceil(moment
/ 2);
157 win
.scrollBy(0, moment
);
159 if (Math
.abs(moment
) < 1) {
160 setTimeout(makeScrollTo(win
.scrollX
, destY
), interval
);
164 next
= setTimeout(function() smoothScroll(moment
), interval
);
167 function makeScrollTo(x
, y
) function() win
.scrollTo(x
, y
);
171 // vim: sw=2 ts=2 et si fdm=marker: