aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ubiquityGlue.js143
1 files changed, 0 insertions, 143 deletions
diff --git a/ubiquityGlue.js b/ubiquityGlue.js
deleted file mode 100644
index fbdf60f..0000000
--- a/ubiquityGlue.js
+++ /dev/null
@@ -1,143 +0,0 @@
-/**
- * ==VimperatorPlugin==
- * @name Ubiquity Glue
- * @description viperator-plugin for Ubiquity
- * @depend Ubiquity (ubiquity@labs.mozilla.com)
- * @version 0.1a
- * ==/VimperatorPlugin==
- *
- * USAGE:
- *
- * :ubi[quity] {ubiquityCommand}
- * {ubiquityCommand}をUbiquityに渡して実行
- *
- * :ubi[quity]
- * ランチャを起動
- *
- * - ランチャ起動キーでコマンドラインに":ubiquity "がでます(ランチャはポップアップしない)
- * 気に入らない場合は、XXX:の辺りのコードをコメントアウトしてください
- * - Ubiquityコマンド名の補完が効きます。
- * - Ubiquityコマンド入力後、引数を入力してのタブ補完をするとUbiquityのプレビューがでる(はず)
- *
- * FIXME:
- * - プレビュー時の選択範囲の取得がイマイチ出来てない
- * - プレビュー後の操作はマウス必須になってしまう(これはどうしようもない?)
- *
- */
-
-liberator.plugins.ubiquity = (function(){
-
-if (!Application.extensions.has('ubiquity@labs.mozilla.com')){
- Components.utils.reportError('Vimperator: UbiquityGlue: Ubiquity is not installed');
- return null;
-}
-function preExec(target,name,func){
- var original = target[name];
- target[name] = function(){
- var result = func.apply(this,arguments);
- var tmp = null;
- if (result != false) tmp = original.apply(target,arguments);
- return tmp;
- }
-}
-
-preExec(liberator.events, 'onEscape', function(){
- if (ubiquityManager.panel.state == 'open') gUbiquity.closeWindow();
-});
-var focusedWindow = null;
-var focusedElement = null;
-preExec(liberator.commandline, 'open', function(){
- focusedWindow = document.commandDispatcher.focusedWindow;
- focusedElement = document.commandDispatcher.focusedElement;
-});
-
-// XXX:選択範囲が必要な操作が現状上手く動かない.不便であればコメントアウトしてください.
-preExec(gUbiquity, 'openWindow', function(anchor, flag){
- if(!flag) {
- liberator.commandline.open(':', 'ubiquity ', liberator.modes.EX);
- return false;
- }
-});
-
-// -------------------------------------------------
-// Command
-// -------------------------------------------------
-liberator.commands.addUserCommand(['ubi[quity]'],'Vimperator Ubiquity Glue',
- function(args){
- if (!args){
- gUbiquity.openWindow(getBrowser(), true);
- return;
- }
- ubiquityManager.execute(args);
- },{
- completer: function(filter){
- return ubiquityManager.completer(filter);
- }
- },
- true
-);
-
-// -------------------------------------------------
-// Public Section
-// -------------------------------------------------
-var ubiquityManager = {
- get panel(){
- return gUbiquity.__msgPanel;
- },
- get cmdManager(){
- return gUbiquity.__cmdManager;
- },
- get nlParser(){
- return this.cmdManager.__nlParser;
- },
- get commands(){
- return this.cmdManager.__cmdSource.getAllCommands();
- },
- execute: function(cmds){
- var context = this.getContext();
- this.nlParser.updateSuggestionList(cmds, context);
- if (this.nlParser.getNumSuggestions() == 0){
- liberator.echoerr('No such command');
- return false;
- }
- var parsedSentence = this.nlParser.getSentence(0);
- try {
- parsedSentence.execute(context);
- } catch (e) {
- liberator.echoerr(e);
- }
- },
- completer: function(args){
- var matches = args.match(/([^\s]+)(?:\s+(.+)$)?/);
- var suggestions = [];
- for (var cmd in this.commands){
- suggestions.push([cmd , this.commands[cmd].description]);
- }
- if (!matches){
- return [0, suggestions];
- }
- var [cmd, arg] = [matches[1], matches[2]];
- if (arg || (cmd && cmd in this.commands) ){
- if ( (cmd in this.commands) && this.commands[cmd].preview){
- this.getContext();
- gUbiquity.__textBox.value = args;
- if (this.panel.state == 'closed') {
- gUbiquity.openWindow(getBrowser(), true);
- }
- gUbiquity.__updatePreview();
- }
- } else if (cmd){
- return [0, suggestions.filter(function(command){return command[0].indexOf(cmd) == 0;}) ];
- }
- return [0, []];
- },
- getContext: function(){
- gUbiquity.__focusedWindow = focusedWindow;
- gUbiquity.__focusedElement = focusedElement;
- return gUbiquity.__makeContext();
- }
-};
-
-return ubiquityManager;
-})();
-// vim:ts=4 sw=4 et: