/** * 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 to install Split Browser.', completer: function(filter) 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: