From: Amin Bandali Date: Sat, 14 Feb 2015 02:55:42 +0000 (-0500) Subject: add vimperator X-Git-Url: https://git.shemshak.org/~bandali/configs/commitdiff_plain/3b77b0460ecc394061aa6414c47e49117d13bf00?ds=sidebyside;hp=f3d2365f6ce1b89549c944ab278969780fb0779c add vimperator --- diff --git a/vimperator/.vimperator/plugin/_smooziee.js b/vimperator/.vimperator/plugin/_smooziee.js new file mode 100644 index 0000000..357a211 --- /dev/null +++ b/vimperator/.vimperator/plugin/_smooziee.js @@ -0,0 +1,170 @@ +// +// _smooziee.js +// +// LICENSE: {{{ +// Copyright (c) 2009 snaka +// +// distributable under the terms of an MIT-style license. +// http://www.opensource.jp/licenses/mit-license.html +// }}} +// +// INFO: {{{ +var INFO = xml` + + snaka + + MIT style license +

j,k key scrolling to be smoothly.

+

Global vriables

+

You can configure following variable as you like.

+
+
smooziee_scroll_amount
Scrolling amount(unit:px). Default value is 400px.
+
smooziee_interval
Scrolling interval(unit:ms). Default value is 20ms.
+
+

Example

+

Set scroll amount is 300px and interval is 10ms.

+ +

API

+ smooziee.smoothScrollBy(amount); +

Example

+ +
+ + snaka + + MIT style license +

普段のj,kキーのスクロールをLDRizeライクにスムースにします。

+

グローバル変数

+

以下の変数を.vimperatorrcなどで設定することで動作を調整することができます。

+
+
smooziee_scroll_amount
+
1回にスクロールする幅です(単位:ピクセル)。デフォルトは"400"です。
+
smooziee_interval
+
スクロール時のアニメーションのインターバルです(単位:ミリ秒)。 + "1"以上の値を設定します。デフォルトは"20"です。
+
+

設定例

+

スクロール量を300pxに、インターバルを10msに設定します。

+ +

API

+

他のキーにマップする場合やスクリプトから呼び出せるようAPIを用意してます。

+ smooziee.smoothScrollBy(amount); +

Example

+ +

ToDo

+
    +
  • 読み込みの順番によっては他のプラグインと競合する可能性があるのをなんとかしたい。
  • +
+
`; +// }}} + +let self = liberator.plugins.smooziee = (function(){ + + // Mappings {{{ + mappings.addUserMap( + [modes.NORMAL], + ["j"], + "Smooth scroll down", + function(count){ + self.smoothScrollBy(getScrollAmount() * (count || 1)); + }, + { + count: true + } + ); + mappings.addUserMap( + [modes.NORMAL], + ["k"], + "Smooth scroll up", + function(count){ + self.smoothScrollBy(getScrollAmount() * -(count || 1)); + }, + { + count: true + } + ); + + mappings.addUserMap( + [modes.NORMAL], + ["d"], + "Smooth scroll down page", + function(count){ + self.smoothScrollBy(getScrollAmount() * 3.5 * (count || 1)); + }, + { + count: true + } + ); + mappings.addUserMap( + [modes.NORMAL], + ["u"], + "Smooth scroll up page", + function(count){ + self.smoothScrollBy(getScrollAmount() * 3.5 * -(count || 1)); + }, + { + count: true + } + ); + // }}} + // PUBLIC {{{ + var PUBLICS = { + smoothScrollBy: function(moment) { + win = Buffer.findScrollableWindow(); + interval = window.eval(liberator.globalVariables.smooziee_scroll_interval || '20'); + destY = win.scrollY + moment; + clearTimeout(next); + smoothScroll(moment); + } + } + + // }}} + // PRIVATE {{{ + var next; + var destY; + var win; + var interval; + + function getScrollAmount() window.eval(liberator.globalVariables.smooziee_scroll_amount || '400'); + + function smoothScroll(moment) { + if (moment > 0) + moment = Math.floor(moment / 2); + else + moment = Math.ceil(moment / 2); + + win.scrollBy(0, moment); + + if (Math.abs(moment) < 1) { + setTimeout(makeScrollTo(win.scrollX, destY), interval); + destY = null; + return; + } + next = setTimeout(function() smoothScroll(moment), interval); + } + + function makeScrollTo(x, y) function() win.scrollTo(x, y); + // }}} + return PUBLICS; +})(); +// vim: sw=2 ts=2 et si fdm=marker: diff --git a/vimperator/.vimperatorrc b/vimperator/.vimperatorrc new file mode 100644 index 0000000..959c24a --- /dev/null +++ b/vimperator/.vimperatorrc @@ -0,0 +1,26 @@ +" scroll more +" noremap j 3j +" noremap k 3k + +" smooth scroll settings +let g:smooziee_scroll_amount="100" +let g:smooziee_scroll_interval="10" + + +" swap ; and : + nnoremap ; : + nnoremap : ; + vnoremap ; : + vnoremap : ; + +" J/K for prev/next tab +noremap J gT +noremap K gt + +" x for close, X for undo +noremap x d +noremap X u + +" d and u (down and up) +" noremap d +" noremap u