summaryrefslogtreecommitdiff
path: root/vimperator/plugin/buftabs.js
diff options
context:
space:
mode:
Diffstat (limited to 'vimperator/plugin/buftabs.js')
-rw-r--r--vimperator/plugin/buftabs.js238
1 files changed, 0 insertions, 238 deletions
diff --git a/vimperator/plugin/buftabs.js b/vimperator/plugin/buftabs.js
deleted file mode 100644
index ad1d47e..0000000
--- a/vimperator/plugin/buftabs.js
+++ /dev/null
@@ -1,238 +0,0 @@
-// PLUGIN_INFO {{{
-let PLUGIN_INFO =
-<VimperatorPlugin>
- <name>Buftabs</name>
- <description>Add buffer tabs to the statusline to save space.</description>
- <version>1.1</version>
- <author mail="lucas@tuple-typed.org" homepage="http://tuple-typed.org/">Lucas de Vries (GGLucas)</author>
- <license>WTFPL version 2 (http://sam.zoy.org/wtfpl/)</license>
- <minVersion>2.2</minVersion>
- <maxVersion>2.2</maxVersion>
- <detail><![CDATA[
-
- == Usage ==
- When the script is loaded it hijacks the statusline to display a list of tabs,
- you can use the "buftabs" option to toggle it on or off.
-
- == Styling ==
- Use the BufTab and BufTabSelected highlight groups to style the buftabs.
- Make sure you\'ve called the "loadplugins" command before using the highlight
- groups in your vimperatorrc.
-
- == Length ==
- You can set the max length of a title before it is cut off with the
- buftabs_maxlength option. It is set to 25 by default.
-
- ]]></detail>
-</VimperatorPlugin>;
-// }}}
-
-buftabs = {
- // Update the tabs
- updateUrl: function (url)
- {
- // Get buftabbar
- var btabs = document.getElementById("liberator-statusline-buftabs");
- var urlWidget = document.getElementById("liberator-statusline-field-url");
- var browsers = window.getBrowser().browsers;
- var position=0, selpos;
-
- // Make sure we have an appropriate amount of labels
- while (btabs.childNodes.length > browsers.length)
- {
- btabs.removeChild(btabs.lastChild);
- }
-
- while (btabs.childNodes.length < browsers.length)
- {
- var label = document.createElement("label");
- btabs.appendChild(label);
-
- label.onclick = function (ev)
- {
- if (ev.button == 0)
- tabs.select(this.tabpos);
- else if (ev.button == 1)
- tabs.remove(tabs.getTab(this.tabpos), 1, false, 0);
- }
- }
-
- // Create the new tabs
- for (let i=0; i < browsers.length; i++)
- {
- // Create label
- var browser = browsers[i];
- var label = btabs.childNodes[i];
-
- // Hook on load
- if (browser.webProgress.isLoadingDocument)
- {
- browser._buftabs_label = label;
- browser.contentDocument.addEventListener("load", function ()
- {
- buftabs.fillLabel(this._buftabs_label, this);
- }, false);
- }
-
- // Fill label
- label.tabpos = i;
- buftabs.fillLabel(label, browser);
-
- if (tabs.index() == label.tabpos)
- {
- selpos = [position, label.clientWidth+position];
- }
-
- position += label.clientWidth;
- }
-
- // Scroll
- if (selpos[0] < btabs.scrollLeft || selpos[1] > btabs.scrollLeft+btabs.clientWidth)
- btabs.scrollLeft = selpos[0];
-
- // Show the entire line if possible
- if (btabs.scrollWidth == btabs.clientWidth)
- btabs.scrollLeft = 0;
-
- // Empty url label
- urlWidget.value = "";
- },
-
- // Fill a label with browser content
- fillLabel: function(label, browser)
- {
- var maxlength = options.get("buftabs_maxlength").get();
- var tabvalue;
-
- // Get title
- if (browser.webProgress.isLoadingDocument)
- {
- tabvalue = "Loading...";
- } else {
- tabvalue = browser.contentTitle || "Untitled";
- }
-
- // Check length
- if (tabvalue.length > maxlength)
- tabvalue = tabvalue.substr(0, maxlength-3)+"...";
-
- // Bookmark icon
- if (bookmarks.isBookmarked(browser.contentDocument.location.href))
- tabvalue += "\u2764";
-
- // Brackets and index
- tabvalue = "["+(label.tabpos+1)+"-"+tabvalue+"]";
-
- label.setAttribute("value", tabvalue);
-
- // Set the correct highlight group
- if (tabs.index() == label.tabpos)
- label.setAttributeNS(NS.uri, "highlight", "BufTabSelected");
- else
- label.setAttributeNS(NS.uri, "highlight", "BufTab");
-
-
- },
-
- // Create the horizontal box for adding the tabs to
- createBar: function()
- {
- var statusline = document.getElementById("liberator-statusline");
- var buftabs = document.getElementById("liberator-statusline-buftabs");
- var urlWidget = document.getElementById("liberator-statusline-field-url");
-
- // Only create if it doesn't exist yet
- if (!buftabs)
- {
- buftabs = document.createElement("hbox");
- buftabs.setAttribute("id", "liberator-statusline-buftabs");
- buftabs.setAttribute("flex", "1");
- buftabs.style.overflow = "hidden"
-
- statusline.insertBefore(buftabs, urlWidget);
- }
- },
-
- destroyBar: function()
- {
- var statusline = document.getElementById("liberator-statusline");
- var buftabs = document.getElementById("liberator-statusline-buftabs");
-
- if (buftabs)
- statusline.removeChild(buftabs);
- }
-}
-
-/// Attach to events in order to update the tabline
-var tabContainer = window.getBrowser().mTabContainer;
-buftabs._statusline_updateUrl = statusline.updateUrl;
-
-tabContainer.addEventListener("TabMove", function (event) {
- if (options.get("buftabs").get())
- statusline.updateUrl();
-}, false);
-tabContainer.addEventListener("TabOpen", function (event) {
- if (options.get("buftabs").get())
- statusline.updateUrl();
-}, false);
-tabContainer.addEventListener("TabClose", function (event) {
- if (options.get("buftabs").get())
- setTimeout(statusline.updateUrl, 0);
-}, false);
-tabContainer.addEventListener("TabSelect", function (event) {
- if (options.get("buftabs").get())
- statusline.updateUrl();
-}, false);
-
-window.getBrowser().addEventListener("load", function (event) {
- if (options.get("buftabs").get())
- statusline.updateUrl();
-}, false);
-
-/// Initialise highlight groups
-highlight.loadCSS(String(<![CDATA[
- BufTab
- BufTabSelected font-weight: bold;
-]]>));
-
-/// Options
-options.add(["buftabs"],
- "Control whether to use buftabs in the statusline",
- "boolean", true,
- {
- setter: function (value)
- {
- if (value)
- {
- buftabs.createBar();
- buftabs.updateUrl(null);
-
- statusline.updateUrl = buftabs.updateUrl;
- } else {
- buftabs.destroyBar();
- statusline.updateUrl = buftabs._statusline_updateUrl;
- statusline.update();
- }
-
- return value;
- },
-
- completer: function (context)
- [
- [false, "Don't show buftabs, show the url"],
- [true, "Show buftabs"]
- ],
-
- validator: Option.validateCompleter
- });
-
-options.add(["buftabs_maxlength"],
- "Max length of an entry in the buftabs list",
- "number", "25",
- {
- setter: function (value)
- {
- buftabs.updateUrl();
- return value;
- }
- });