var PLUGIN_INFO =
localkeymode
assign temporary keymap
一時的なキーマップの割り当て
0.2.1c
pekepeke
2.0pre
2.0pre
http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/localkeymode.js
||
let g:localkeymode_enable = "true"
javascript <?', {noremap:true}],
['q', 'd', {noremap:true}],
],
];
EOM
||<
Url_RegExp:
設定を有効にしたいURL(正規表現での指定)
key:
割り当てたいキー名(Arrayで複数指定可能)
command/function:
キーに割り当てたいコマンド/メソッド。
コマンドは ':hoge' のように先頭に':'を付加してください。
extra:
noremap, count 等の指定。addUserMap にて使用されます。
]]>
;
liberator.plugins.LocalKeyMode = (function() {
// アイコン定義
const DISABLE_ICON = 'data:image/png;base64,'
+'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAZ0lEQVR4nGNcvXo1AymAiSTV'
+'WDSEhISEhITg0cDy+PFjTFGsgmQ6ieXz58+YolgFybXh06dPmKJYBcm1gY+PD1MUqyC5NvDy'
+'8mKKYhWEasAqWlhYiCbS398PYTDOmTOHJCdRnPgIAgBfBxpKyax43AAAAABJRU5ErkJg'
+'gg==';
const ENABLE_ICON = 'data:image/png;base64,'
+'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAa0lEQVR4nGP0+OzAQApgIkk1Fg3b'
+'efZv59mPRwMjwycU/n/e/wwMDIyfGanmJBaG16gCvAwMDAzogpTZ8AJVQImBgYEBXZAyGySwCWMV'
+'JNcGUWzCWAWhGrABSPQhA3hUMvo9Js1JFCc+ggAAYtsQ+fmaz5UAAAAASUVORK5CYII=';
const BINDING_ICON = 'data:image/png;base64,'
+ 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAVElEQVR4nGP8v5eBJMBEmnIs'
+ 'Gpz+Mzj9x6OBheEZNmGsguQ5iYXhHjZhrILk2vAVmzBWQXJt4MYmjFWQXBuUsAljFYRqwApi'
+ 'MCJ7CSOEZqR/4iMEAOh5DfER9lQKAAAAAElFTkSuQmCC';
const rhsRegExp = /[ \r\n]+/g;
var _isEnable;
var _isBindLocalKey = false;
var _enableTabs = [];
var _names;
var feedKeys = liberator.modules ? liberator.modules.events.feedkeys
: liberator.events.feedkeys;
// utility function
function cloneMap(org, key) {
return new Map(
org.modes, key || org.names, org.description, org.action,
{flags:org.flags, rhs:org.rhs, noremap:org.noremap }
);
}
var Class = function() function() {this.initialize.apply(this, arguments);};
var LocalKeyMode = new Class();
LocalKeyMode.prototype = {
// 初期化メソッド
initialize: function() {
this.storekeymaps = []; //キー待避用(戻し)
this.delkeychars = []; //キー待避用(削除)
this.keymapnames = []; // 対応URI保持
this.localkeymaps = []; // キーマップ保持用
this.completeNames; // 補完用
this.tabinfo = []; // タブごとの状態保持用
this.helpstring = '';
var global = liberator.globalVariables;
this.panel = this.setupStatusBar();
this.isEnable = global.localkeymode_enable != undefined ?
window.eval(global.localkeymode_enable) : false;
this.setupEnvironment();
this.initLocalKeyMap();
},
// ステータスバーにアイコンを生成
setupStatusBar: function() {
var self = this;
var panel = document.getElementById('localkeymode-status');
if (panel) {
let parent = panel.parentNode;
parent.removeChild(panel);
}
panel = document.createElement('statusbarpanel');
panel.setAttribute('id', 'localkeymode-status');
panel.setAttribute('class', 's
// Vimperator plugin: uaSwitch
// Maintainer: mattn <mattn.jp@gmail.com> - http://mattn.kaoriya.net
// Require: User Agent Switcher - https://addons.mozilla.org/firefox/addon/59
// Usage:
// :ua MyUserAgent - set user agent named MyUserAgent.
// :ua Default - reset user agent to default.
// :ua! - open user agent switcher setting dialog.
// :ua - show current user agent.
(function() {
if (typeof useragentswitcher_reset != 'function') return;
// activate user agent siwtcher
useragentswitcher_displayUserAgentSwitcherMenu(document.getElementById('useragentswitcher-popup-menu'), 'menu');
// return user agent list
function getItems()
Array.map(document.getElementById('useragentswitcher-menu')
.getElementsByAttribute('type', 'radio'),
function(n) {
return {
label : n.getAttribute('label'),
oncommand : n.getAttribute('oncommand'),
checked : n.getAttribute('checked')
}
});
// register Vimperator command
liberator.modules.commands.addUserCommand(['ua'], 'Switch User Agent', function(args){
if (args.bang) useragentswitcher_options();
else if (!arg.string) liberator.echo('UserAgent: ' + getItems().filter(function(n) n.checked)[0].label);
else window.eval(getItems().filter(function(n) n.label == arg.string)[0].oncommand);
}, {
bang: true,
completer: function(filter)
[0, getItems().map(function(n) [n.label, n.label])]
});
})();