aboutsummaryrefslogtreecommitdiffstats
path: root/twittperator/urusai-namakubi.tw
diff options
context:
space:
mode:
authoranekos2010-12-19 09:38:12 +0900
committeranekos2010-12-19 09:38:12 +0900
commit0564069bb64b43a6391bf260498a8e3e20722cdc (patch)
tree5dcc4bc18066a19bee395ff6a9bbd08e39ff66d7 /twittperator/urusai-namakubi.tw
parentbf3d8dd9f655503d53f698f7957f3627d8215ecb (diff)
downloadvimperator-plugins-0564069bb64b43a6391bf260498a8e3e20722cdc.tar.bz2
Check visible tabs only
Diffstat (limited to 'twittperator/urusai-namakubi.tw')
0 files changed, 0 insertions, 0 deletions
='n128' href='#n128'>128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
//
// _smooziee.js
// 
// LICENSE: {{{
//   Copyright (c) 2009 snaka<snaka.gml@gmail.com>
// 
//     distributable under the terms of an MIT-style license.
//     http://www.opensource.jp/licenses/mit-license.html
// }}}
//
// PLUGIN INFO: {{{
var PLUGIN_INFO =
<VimperatorPlugin>
  <name>smooziee</name>
  <description>At j,k key scrolling to be smooth.</description>
  <description lang="ja">j,kキーでのスクロールをスムースに</description>
  <minVersion>2.0</minVersion>
  <maxVersion>2.0pre</maxVersion>
  <updateURL>http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/_smooziee.js</updateURL>
  <author mail="snaka.gml@gmail.com" homepage="http://vimperator.g.hatena.ne.jp/snaka72/">snaka</author>
  <license>MIT style license</license>
  <version>0.9</version>
  <detail><![CDATA[
    == Subject ==
    j,k key scrolling to be smoothly.

    == Global variables ==
    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. 

    === Excample === 
    Set scroll amount is 300px and interval is 10ms. 
    >|| 
    let g:smooziee_scroll_amount="300" 
    let g:smooziee_scroll_interval="10" 
    ||< 

    == API ==
    >||
    smooziee.smoothScrollBy(amount);
    ||<
    Example.
    >||
    :js liberator.plugins.smooziee.smoothScrollBy(600)
    :js liberator.plugins.smooziee.smoothScrollBy(-600)
    ||<

    == ToDo ==

  ]]></detail>

  <detail lang="ja"><![CDATA[
    == 概要 ==
    普段のj,kキーのスクロールをLDRizeライクにスムースにします

    == グローバル変数 ==
    以下の変数を.vimperatorrcなどで設定することで動作を調整することができます 
    :smooziee_scroll_amount:
      1回にスクロールする幅です単位ピクセル)。デフォルトは"400"です 
    :smooziee_interval:
      スクロール時のアニメーションのインターバルです単位ミリ秒)。
      "1"以上の値を設定しますデフォルトは"20"です 
    === 設定例 === 
    スクロール量を300pxにインターバルを10msに設定します 
    >|| 
    let g:smooziee_scroll_amount="300" 
    let g:smooziee_scroll_interval="10" 
    ||< 

    == API ==
    他のキーにマップする場合やスクリプトから呼び出せるようAPIを用意してます
    >||
    smooziee.smoothScrollBy(amount);
    ||<
    amountにはスクロール量(ピクセル)を指定してください正の値で下方向へ負の値で上方向へスクロールします

    Example.
    >||
    :js liberator.plugins.smooziee.smoothScrollBy(600)
    :js liberator.plugins.smooziee.smoothScrollBy(-600)
    ||<

    == ToDo ==
    - 読み込みの順番によっては他のプラグインと競合する可能性があるのをなんとかしたい

  ]]></detail>
</VimperatorPlugin>;
// }}}

let self = liberator.plugins.smooziee = (function(){

  // Mappings  {{{
  mappings.addUserMap(
    [modes.NORMAL], 
    ["j"], 
    "Smooth scroll down", 
    function(){ 
      self.smoothScrollBy(getScrollAmount());
    }
  ); 
  mappings.addUserMap(
    [modes.NORMAL], 
    ["k"], 
    "Smooth scroll up", 
    function(){ 
      self.smoothScrollBy(getScrollAmount() * -1);
    }
  ); 
  // }}}
  // PUBLIC {{{
  var PUBLICS = {
    smoothScrollBy: function(moment) {
      win = window.content.window.wrappedJSObject;
      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(0, 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: