From cc76a40ad3a001def2f2a9348bad82453d8fd5d6 Mon Sep 17 00:00:00 2001
From: drry
Date: Fri, 21 Mar 2008 02:11:34 +0000
Subject: lang/javascript/vimperator-plugins/trunk/xpathBlink.js
lang/javascript/vimperator-plugins/trunk/autoIgnoreKey.js
lang/javascript/vimperator-plugins/trunk/copy.js
lang/javascript/vimperator-plugins/trunk/lookupDictionary.js
lang/javascript/vimperator-plugins/trunk/splitBrowser.js
lang/javascript/vimperator-plugins/trunk/gmperator.js: * 消えたファイルを
trunk にコピーしました。 * ほか。
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@8235 d0d07461-0603-4401-acd4-de1884942a52
---
splitBrowser.js | 277 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 277 insertions(+)
create mode 100644 splitBrowser.js
(limited to 'splitBrowser.js')
diff --git a/splitBrowser.js b/splitBrowser.js
new file mode 100644
index 0000000..e87e99a
--- /dev/null
+++ b/splitBrowser.js
@@ -0,0 +1,277 @@
+/**
+ * Vimperator Plugin For "Split Browser"
+ * For vimperator 0.5.3
+ * @author teramako
+ */
+
+(function(){
+
+vimperator.commands.add(new vimperator.Command(['sp[lit]'],
+ function(args){
+ var position = null;
+ if (args) {
+ args = args.split(/ -/);
+ switch (args[args.length-1].toLowerCase()) {
+ case 'l':
+ case 'left': position = SplitBrowser.POSITION_LEFT; break;
+ case 'r':
+ case 'right': position = SplitBrowser.POSITION_RIGHT; break;
+ case 't':
+ case 'top': position = SplitBrowser.POSITION_TOP; break;
+ case 'bottom':
+ case 'b': position = SplitBrowser.POSITION_BOTTOM; break;
+ }
+ if (position) {
+ args.pop();
+ }
+ var urls = args.join(' -');
+ if (urls){
+ urls = vimperator.util.stringToURLArray(urls);
+ var url = typeof urls[0] == 'string' ? urls[0] : urls[0][0];
+ openSubBrowser(url, position);
+ return;
+ }
+ }
+ vimperator.echo('Split and load current URL.');
+ openSubBrowser(vimperator.buffer.URL, position);
+ },{
+ usage: ['sp[lit] [URL] [-POSITION]'],
+ shortHelp: 'split browser',
+ help: 'Split browser and load the [URL]
.
' +
+ 'If you don\'t specify the [URL]
argument, browser loads the current URL.
' +
+ '
You need install Split Browser.',
+ completer:function(filter){ return vimperator.completion.get_url_completions(filter); }
+ }
+));
+vimperator.commands.add(new vimperator.Command(['on[ly]'],
+ function(){
+ if (SplitBrowser.browsers.length > 0) {
+ SplitBrowser.removeAllSubBrowsers(); // 分割したブラウザをすべて閉じる
+ // 好みで↑↓選ぼう
+ // SplitBrowser.gatherSubBrowsers(); // すべての分割したブラウザをタブに集める
+ } else {
+ vimperator.echoerr('SubBrowser is none');
+ }
+ },{
+ usage: ['on[ly]'],
+ shortHelp: 'close split browsers',
+ help: 'Close all split browsers'
+ }
+));
+
+/**
+ * Close active browser
+ */
+vimperator.mappings.add(new vimperator.Map(vimperator.modes.NORMAL, ['sd'], //{{{
+ function(){
+ var b = SplitBrowser.activeBrowser;
+ if (b.mTabs.length > 1){
+ b.removeTab(b.mCurrentTab);
+ } else {
+ if (b === gBrowser){
+ vimperator.open('about:blank', vimperator.NEW_BACKGROUND_TAB);
+ gBrowser.removeTab(gBrowser.mCurrentTab);
+ } else {
+ SplitBrowser.activeBrowserCloseWindow();
+ }
+ }
+ },{
+ shortHelp: 'Close active browser'
+ }
+)); //}}}
+/**
+ * Switch browser focus
+ */
+vimperator.mappings.add(new vimperator.Map(vimperator.modes.NORMAL, [''], //{{{
+ function(){
+ var browsers = SplitBrowser.browsers;
+ if (SplitBrowser.activeBrowser === gBrowser) {
+ SplitBrowser.getSubBrowserById(browsers[0].id).browser.contentWindow.focus();
+ } else {
+ var id = SplitBrowser.activeSubBrowser.id;
+ for (var i=0; i 1){
+ for (var i=1, l=urls.length; i < l; subBrowser.browser.addTab(urls[i++],null,null,null))
+ ;
+ }
+} //}}}
+/**
+ * create new subBrowser and load url
+ * @param {String} url
+ * @param {Number} aPosition split direction
+ */
+function openSubBrowser(url, aPosition){ // {{{
+ var subBrowser = SplitBrowser.addSubBrowser(url, null, aPosition || SplitBrowser.POSITION_TOP);
+ subBrowser.addEventListener('load',function(){
+ subBrowser.removeEventListener('load',arguments.callee,true);
+ subBrowser.browser.contentWindow.focus();
+ },true);
+ return subBrowser;
+} //}}}
+
+/**
+ * Overwrite vimperator.open for SplitBrowser
+ * @see vimperator.js::vimperaotr.open
+ */
+vimperator.open = function(urls, where, callback){ //{{{
+ if (typeof urls == 'string') { urls = vimperator.util.stringToURLArray(urls); }
+ if (urls.length == 0) { return false; }
+ if (!where) { where = vimperator.CURRENT_TAB; }
+
+ var url = typeof urls[0] == 'string' ? urls[0] : urls[0][0];
+ var postdata = typeof urls[0] == 'string' ? null : urls[0][1];
+ var whichwindow = window;
+ var activeBrowser = SplitBrowser.activeBrowser;
+
+ switch (where) {
+ case vimperator.CURRENT_TAB:
+ activeBrowser.loadURI(url, null, postdata);
+ break;
+ case vimperator.NEW_TAB:
+ var firsttab = activeBrowser.addTab(url, null, null, postdata);
+ activeBrowser.selectedTab = firsttab;
+ break;
+ case vimperator.NEW_BACKGROUND_TAB:
+ activeBrowser.addTab(url, null, null, postdata);
+ break;
+ case vimperator.NEW_WINDOW:
+ window.open();
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+ whichwindow = vm.getMostRecentWindow('navigator:browser');
+ whichwindow.loadURI(url, null, postdata);
+ break;
+ default:
+ vimperator.echoerr("Exxx: Invalid 'where' directive in vimperator.open(...)");
+ return false;
+ }
+ for (var i=1, l=urls.length; i < l; i++){
+ url = typeof urls[i] == 'string' ? urls[i] : urls[i][0];
+ postdata = typeof urls[i] == 'string' ? null : urls[i][1];
+ whichwindow.SplitBrowser.activeBrowser.addTab(url, null, null, postdata);
+ }
+}; //}}}
+})();
+
+// vim: set fdm=marker sw=4 ts=4 et:
--
cgit v1.2.3