mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2026-01-09 13:54:12 +01:00
Merge.
This commit is contained in:
@@ -2,5 +2,5 @@ Main developer/Project founder:
|
||||
* Prathyush Thota <prathyushthota@gmail.com>
|
||||
|
||||
Developers:
|
||||
* Martin Stubenschrott (stubenschrott@gmx.net)
|
||||
* Martin Stubenschrott (stubenschrott@vimperator.org)
|
||||
* Doug Kearns (dougkearns@gmail.com)
|
||||
|
||||
2
xulmus/Makefile
Executable file → Normal file
2
xulmus/Makefile
Executable file → Normal file
@@ -1,6 +1,6 @@
|
||||
#### configuration
|
||||
|
||||
VERSION = 0.1pre
|
||||
VERSION = 0.2pre
|
||||
NAME = xulmus
|
||||
|
||||
include ../common/Makefile.common
|
||||
|
||||
5
xulmus/NEWS
Executable file → Normal file
5
xulmus/NEWS
Executable file → Normal file
@@ -1,2 +1,3 @@
|
||||
2009-XX-XX:
|
||||
* version 0.1 (probably)
|
||||
2009-03-28:
|
||||
* version 0.1
|
||||
* first public release
|
||||
|
||||
15
xulmus/TODO
15
xulmus/TODO
@@ -2,5 +2,20 @@ Priority list:
|
||||
1-9 as in Vim (9 = required for next release, 5 = would be nice, 1 = probably not)
|
||||
|
||||
BUGS:
|
||||
- broken commands:
|
||||
- SB doesn't support tab-undo yet so :undo and "u" etc don't work
|
||||
- :tabduplicate
|
||||
- :back/H, :forward,L
|
||||
- :open songbird-internal-search searchString
|
||||
Is this workable anyway? --djk
|
||||
- <C-^> is off by one when alternating with the media tab
|
||||
- numbered tabs
|
||||
|
||||
FEATURES:
|
||||
9 '?' - Reusing '/'.
|
||||
8 Playlist/SmartPlaylist operations & meta-data operations.
|
||||
7 extended hint mode for opening links in FF.
|
||||
6 :tqueue, :lqueue etc.
|
||||
5 make Player mode commands work in the Mini-Player.
|
||||
5 Check for default extensions and add commands for them. Ex. Last.fm, Seeqpod e.t.c
|
||||
Wouldn't these be provided as Xulmus plugins like Vimperator does? --djk
|
||||
|
||||
0
xulmus/chrome.manifest
Executable file → Normal file
0
xulmus/chrome.manifest
Executable file → Normal file
0
xulmus/components/chrome-data.js
Executable file → Normal file
0
xulmus/components/chrome-data.js
Executable file → Normal file
143
xulmus/content/bookmarks.js
Executable file → Normal file
143
xulmus/content/bookmarks.js
Executable file → Normal file
@@ -11,7 +11,7 @@ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
Copyright (c) 2006-2009 by Martin Stubenschrott <stubenschrott@gmx.net>
|
||||
Copyright (c) 2006-2009 by Martin Stubenschrott <stubenschrott@vimperator.org>
|
||||
|
||||
Alternatively, the contents of this file may be used under the terms of
|
||||
either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
@@ -57,7 +57,7 @@ function Bookmarks() //{{{
|
||||
/////////////////////////////////////////////////////////////////////////////{{{
|
||||
|
||||
const historyService = PlacesUtils.history; //Cc["@mozilla.org/browser/global-history;1"].getService(Ci.nsIGlobalHistory);
|
||||
const bookmarksService = PlacesUtils.bookmarks //Cc["@songbirdnest.com/servicepane/bookmarks;1"].getService(Ci.sbIBookmarks);
|
||||
const bookmarksService = PlacesUtils.bookmarks //Cc["@songbirdnest.com/servicepane/bookmarks;1"].getService(Ci.sbIBookmarks);
|
||||
const taggingService = PlacesUtils.tagging //Cc["@mozilla.org/browser/tagging-service;1"].getService(Ci.nsITaggingService);
|
||||
const faviconService = Cc["@mozilla.org/browser/favicon-service;1"].getService(Ci.nsIFaviconService);
|
||||
|
||||
@@ -571,14 +571,14 @@ function Bookmarks() //{{{
|
||||
getSuggestions: function getSuggestions(engineName, query, callback)
|
||||
{
|
||||
const responseType = "application/x-suggestions+json";
|
||||
|
||||
|
||||
let engine = services.get("browserSearch").getEngineByAlias(engineName);
|
||||
|
||||
|
||||
if (engine && engine.supportsResponseType(responseType))
|
||||
var queryURI = engine.getSubmission(query, responseType).uri.spec;
|
||||
if (!queryURI)
|
||||
return [];
|
||||
|
||||
|
||||
function process(resp)
|
||||
{
|
||||
let results = [];
|
||||
@@ -594,7 +594,7 @@ function Bookmarks() //{{{
|
||||
}
|
||||
|
||||
let resp = util.httpGet(queryURI, callback && process);
|
||||
|
||||
|
||||
if (!callback)
|
||||
return process(resp);
|
||||
},
|
||||
@@ -620,76 +620,77 @@ function Bookmarks() //{{{
|
||||
// we need to make sure our custom alias have been set, even if the user
|
||||
// did not :open <tab> once before
|
||||
this.getSearchEngines();
|
||||
|
||||
|
||||
function getShortcutOrURI(aURL, aPostDataRef)
|
||||
{
|
||||
var shortcutURL = null;
|
||||
var keyword = aURL;
|
||||
var param = "";
|
||||
var searchService = Cc['@mozilla.org/browser/search-service;1'].getService(Ci.nsIBrowserSearchService);
|
||||
var offset = aURL.indexOf(" ");
|
||||
if (offset > 0)
|
||||
{
|
||||
keyword = aURL.substr(0, offset);
|
||||
param = aURL.substr(offset + 1);
|
||||
}
|
||||
if (!aPostDataRef)
|
||||
{
|
||||
aPostDataRef = {};
|
||||
function getShortcutOrURI(aURL, aPostDataRef)
|
||||
{
|
||||
var shortcutURL = null;
|
||||
var keyword = aURL;
|
||||
var param = "";
|
||||
var searchService = Cc['@mozilla.org/browser/search-service;1'].getService(Ci.nsIBrowserSearchService);
|
||||
var offset = aURL.indexOf(" ");
|
||||
if (offset > 0)
|
||||
{
|
||||
keyword = aURL.substr(0, offset);
|
||||
param = aURL.substr(offset + 1);
|
||||
}
|
||||
var engine = searchService.getEngineByAlias(keyword);
|
||||
if (engine)
|
||||
{
|
||||
var submission = engine.getSubmission(param, null);
|
||||
aPostDataRef.value = submission.postData;
|
||||
return submission.uri.spec;
|
||||
}
|
||||
[shortcutURL, aPostDataRef.value] = PlacesUtils.getURLAndPostDataForKeyword(keyword);
|
||||
if (!shortcutURL)
|
||||
{
|
||||
return aURL;
|
||||
}
|
||||
var postData = "";
|
||||
if (aPostDataRef.value)
|
||||
{
|
||||
postData = unescape(aPostDataRef.value);
|
||||
}
|
||||
if (/%s/i.test(shortcutURL) || /%s/i.test(postData))
|
||||
{
|
||||
var charset = "";
|
||||
const re = /^(.*)\&mozcharset=([a-zA-Z][_\-a-zA-Z0-9]+)\s*$/;
|
||||
var matches = shortcutURL.match(re);
|
||||
if (matches)
|
||||
{
|
||||
[, shortcutURL, charset] = matches;
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
charset = PlacesUtils.history.getCharsetForURI(makeURI(shortcutURL));
|
||||
} catch (e) { }
|
||||
}
|
||||
var encodedParam = "";
|
||||
if (charset)
|
||||
{
|
||||
encodedParam = escape(convertFromUnicode(charset, param));
|
||||
} else {
|
||||
encodedParam = encodeURIComponent(param);
|
||||
}
|
||||
shortcutURL = shortcutURL.replace(/%s/g, encodedParam).replace(/%S/g, param);
|
||||
if (/%s/i.test(postData))
|
||||
{
|
||||
aPostDataRef.value = getPostDataStream(postData, param, encodedParam, "application/x-www-form-urlencoded");
|
||||
}
|
||||
} else if (param) {
|
||||
aPostDataRef.value = null;
|
||||
return aURL;
|
||||
if (!aPostDataRef)
|
||||
{
|
||||
aPostDataRef = {};
|
||||
}
|
||||
return shortcutURL;
|
||||
var engine = searchService.getEngineByAlias(keyword);
|
||||
if (engine)
|
||||
{
|
||||
var submission = engine.getSubmission(param, null);
|
||||
aPostDataRef.value = submission.postData;
|
||||
return submission.uri.spec;
|
||||
}
|
||||
[shortcutURL, aPostDataRef.value] = PlacesUtils.getURLAndPostDataForKeyword(keyword);
|
||||
if (!shortcutURL)
|
||||
{
|
||||
return aURL;
|
||||
}
|
||||
var postData = "";
|
||||
if (aPostDataRef.value)
|
||||
{
|
||||
postData = unescape(aPostDataRef.value);
|
||||
}
|
||||
if (/%s/i.test(shortcutURL) || /%s/i.test(postData))
|
||||
{
|
||||
var charset = "";
|
||||
const re = /^(.*)\&mozcharset=([a-zA-Z][_\-a-zA-Z0-9]+)\s*$/;
|
||||
var matches = shortcutURL.match(re);
|
||||
if (matches)
|
||||
{
|
||||
[, shortcutURL, charset] = matches;
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
charset = PlacesUtils.history.getCharsetForURI(makeURI(shortcutURL));
|
||||
} catch (e) { }
|
||||
}
|
||||
var encodedParam = "";
|
||||
if (charset)
|
||||
{
|
||||
encodedParam = escape(convertFromUnicode(charset, param));
|
||||
} else {
|
||||
encodedParam = encodeURIComponent(param);
|
||||
}
|
||||
shortcutURL = shortcutURL.replace(/%s/g, encodedParam).replace(/%S/g, param);
|
||||
if (/%s/i.test(postData))
|
||||
{
|
||||
aPostDataRef.value = getPostDataStream(postData, param, encodedParam, "application/x-www-form-urlencoded");
|
||||
}
|
||||
} else if (param) {
|
||||
aPostDataRef.value = null;
|
||||
return aURL;
|
||||
}
|
||||
return shortcutURL;
|
||||
}
|
||||
|
||||
url = getShortcutOrURI(searchString, aPostDataRef);
|
||||
|
||||
if (url == searchString)
|
||||
url = null;
|
||||
|
||||
|
||||
172
xulmus/content/config.js
Executable file → Normal file
172
xulmus/content/config.js
Executable file → Normal file
@@ -11,7 +11,7 @@ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
for the specific language governing rights and limitations under the
|
||||
License.
|
||||
|
||||
Copyright (c) 2006-2009 by Martin Stubenschrott <stubenschrott@gmx.net>
|
||||
Copyright (c) 2006-2009 by Martin Stubenschrott <stubenschrott@vimperator.org>
|
||||
|
||||
Alternatively, the contents of this file may be used under the terms of
|
||||
either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
@@ -33,12 +33,12 @@ const config = { //{{{
|
||||
//mainWindowID: "mainplayer",
|
||||
/*** optional options, there are checked for existence and a fallback provided ***/
|
||||
features: ["bookmarks", "hints", "marks", "history", "quickmarks", "session", "tabs", "windows", "player"],
|
||||
defaults: { guioptions: "rb" },
|
||||
defaults: { guioptions: "mprb" },
|
||||
|
||||
guioptions: {
|
||||
m: ["Menubar", ["main-menubar"]],
|
||||
T: ["Toolbar", ["nav-bar"]],
|
||||
B: ["Bookmark bar", ["PersonalToolbar"]]
|
||||
m: ["Menubar", ["main-menubar"]],
|
||||
T: ["Toolbar", ["nav-bar"]],
|
||||
p: ["Player controls", ["player_wrapper"]]
|
||||
},
|
||||
|
||||
//get visualbellWindow() getBrowser().mPanelContainer,
|
||||
@@ -54,53 +54,74 @@ const config = { //{{{
|
||||
["DOMLoad", "Triggered when a page's DOM content has fully loaded"],
|
||||
["DownloadPost", "Triggered when a download has completed"],
|
||||
["Fullscreen", "Triggered when the browser's fullscreen state changes"],
|
||||
["LocationChange", "Triggered when changing tabs or when naviagtion to a new location"],
|
||||
["LocationChange", "Triggered when changing tabs or when navigation to a new location"],
|
||||
["PageLoadPre", "Triggered after a page load is initiated"],
|
||||
["PageLoad", "Triggered when a page gets (re)loaded/opened"],
|
||||
["ShellCmdPost", "Triggered after executing a shell command with :!cmd"],
|
||||
["XulmusEnter", "Triggered after Xulmus starts"],
|
||||
["XulmusLeavePre", "Triggered before exiting Xulmus, just before destroying each module"],
|
||||
["XulmusLeave", "Triggered before exiting Xulmus"]],
|
||||
["TrackChangePre", "Triggered before a playing track is changed"],
|
||||
["TrackChange", "Triggered after a playing track has changed"],
|
||||
["ViewChangePre", "Triggered before a sequencer view is changed"],
|
||||
["ViewChange", "Triggered after a sequencer view is changed"],
|
||||
["StreamStart", "Triggered after a stream has started"],
|
||||
["StreamPause", "Triggered after a stream has paused"],
|
||||
["StreamEnd", "Triggered after a stream has ended"],
|
||||
["StreamStop", "Triggered after a stream has stopped"],
|
||||
["XulmusEnter", "Triggered after Songbird starts"],
|
||||
["XulmusLeavePre", "Triggered before exiting Songbird, just before destroying each module"],
|
||||
["XulmusLeave", "Triggered before exiting Songbird"]],
|
||||
|
||||
// TODO: remove those which don't make sense, can't be provided.
|
||||
dialogs: [
|
||||
["about", "About Songbird",
|
||||
function () { window.openDialog("chrome://browser/content/aboutDialog.xul", "_blank", "chrome,dialog,modal,centerscreen"); }],
|
||||
function () { window.openDialog("chrome://songbird/content/xul/about.xul", "_blank", "chrome,dialog,modal,centerscreen"); }],
|
||||
/*
|
||||
["addbookmark", "Add bookmark for the current page",
|
||||
function () { PlacesCommandHook.bookmarkCurrentPage(true, PlacesUtils.bookmarksRootId); }],
|
||||
*/
|
||||
["addons", "Manage Add-ons",
|
||||
function () { window.BrowserOpenAddonsMgr(); }],
|
||||
function () { SBOpenPreferences("paneAddons"); }],
|
||||
/*
|
||||
["bookmarks", "List your bookmarks",
|
||||
function () { window.openDialog("chrome://browser/content/bookmarks/bookmarksPanel.xul", "Bookmarks", "dialog,centerscreen,width=600,height=600"); }],
|
||||
*/
|
||||
["checkupdates", "Check for updates",
|
||||
function () { window.checkForUpdates(); }],
|
||||
["cleardata", "Clear private data",
|
||||
function () { Cc[GLUE_CID].getService(Ci.nsIBrowserGlue).sanitize(window || null); }],
|
||||
function () { Sanitizer.showUI(); }],
|
||||
["cookies", "List your cookies",
|
||||
function () { window.toOpenWindowByType("Browser:Cookies", "chrome://browser/content/preferences/cookies.xul", "chrome,dialog=no,resizable"); }],
|
||||
["console", "JavaScript console",
|
||||
function () { window.toJavaScriptConsole(); }],
|
||||
/*
|
||||
["customizetoolbar", "Customize the Toolbar",
|
||||
function () { window.BrowserCustomizeToolbar(); }],
|
||||
*/
|
||||
["dominspector", "DOM Inspector",
|
||||
function () { try { window.inspectDOMDocument(content.document); } catch (e) { liberator.echoerr("DOM Inspector extension not installed"); } }],
|
||||
["downloads", "Manage Downloads",
|
||||
function () { window.toOpenWindowByType("Download:Manager", "chrome://mozapps/content/downloads/downloads.xul", "chrome,dialog=no,resizable"); }],
|
||||
/*
|
||||
["history", "List your history",
|
||||
function () { window.openDialog("chrome://browser/content/history/history-panel.xul", "History", "dialog,centerscreen,width=600,height=600"); }],
|
||||
["import", "Import Preferences, Bookmarks, History, etc. from other browsers",
|
||||
function () { window.BrowserImport(); }],
|
||||
*/
|
||||
["openfile", "Open the file selector dialog",
|
||||
function () { window.BrowserOpenFileWindow(); }],
|
||||
function () { SBFileOpen(); }],
|
||||
/*
|
||||
["pageinfo", "Show information about the current page",
|
||||
function () { window.BrowserPageInfo(); }],
|
||||
*/
|
||||
["pagesource", "View page source",
|
||||
function () { window.BrowserViewSourceOfDocument(content.document); }],
|
||||
["places", "Places Organizer: Manage your bookmarks and history",
|
||||
function () { PlacesCommandHook.showPlacesOrganizer(ORGANIZER_ROOT_BOOKMARKS); }],
|
||||
["preferences", "Show Firefox preferences dialog",
|
||||
["preferences", "Show Songbird preferences dialog",
|
||||
function () { window.openPreferences(); }],
|
||||
/*
|
||||
["printpreview", "Preview the page before printing",
|
||||
function () { PrintUtils.printPreview(onEnterPrintPreview, onExitPrintPreview); }],
|
||||
*/
|
||||
["printsetup", "Setup the page size and orientation before printing",
|
||||
function () { PrintUtils.showPageSetup(); }],
|
||||
["print", "Show print dialog",
|
||||
@@ -112,7 +133,9 @@ const config = { //{{{
|
||||
["searchengines", "Manage installed search engines",
|
||||
function () { window.openDialog("chrome://browser/content/search/engineManager.xul", "_blank", "chrome,dialog,modal,centerscreen"); }],
|
||||
["selectionsource", "View selection source",
|
||||
function () { buffer.viewSelectionSource(); }]
|
||||
function () { buffer.viewSelectionSource(); }],
|
||||
["subscribe", "Add a new subscription",
|
||||
function () { SBSubscribe(); }]
|
||||
],
|
||||
|
||||
focusChange: function() {
|
||||
@@ -127,14 +150,14 @@ const config = { //{{{
|
||||
|
||||
//TODO : Write intro.html and tutorial.html
|
||||
// they are sorted by relevance, not alphabetically
|
||||
//helpFiles: [ "intro.html" ],
|
||||
/* "intro.html", "tutorial.html", "starting.html", "browsing.html",
|
||||
"buffer.html", "cmdline.html", "insert.html", "options.html",
|
||||
"pattern.html", "tabs.html", "hints.html", "map.html", "eval.html",
|
||||
"marks.html", "repeat.html", "autocommands.html", "print.html",
|
||||
"gui.html", "styling.html", "message.html", "developer.html",
|
||||
"various.html", "index.html", "version.html"
|
||||
], */
|
||||
helpFiles: [
|
||||
"intro.html", /*"tutorial.html",*/ "starting.html", "player.html",
|
||||
"browsing.html", "buffer.html", "cmdline.html", "insert.html",
|
||||
"options.html", "pattern.html", "tabs.html", "hints.html", "map.html",
|
||||
"eval.html", "marks.html", "repeat.html", "autocommands.html",
|
||||
"print.html", "gui.html", "styling.html", "message.html",
|
||||
"developer.html", "various.html", "index.html", "version.html"
|
||||
],
|
||||
|
||||
optionDefaults: {
|
||||
stal: 0,
|
||||
@@ -179,6 +202,31 @@ const config = { //{{{
|
||||
liberator.open(pre + newNumberStr + post);
|
||||
}
|
||||
|
||||
function openDisplayPane(id)
|
||||
{
|
||||
let pane = document.getElementById(id);
|
||||
let manager = Components.classes['@songbirdnest.com/Songbird/DisplayPane/Manager;1']
|
||||
.getService(Components.interfaces.sbIDisplayPaneManager);
|
||||
let paneinfo = manager.getPaneInfo(pane._lastURL.stringValue);
|
||||
|
||||
if (!paneinfo)
|
||||
paneinfo = manager.defaultPaneInfo;
|
||||
|
||||
pane.loadContent(paneinfo);
|
||||
}
|
||||
|
||||
// FIXME: best way to format these args? Hyphenated? One word like :dialog?
|
||||
let displayPanes = {
|
||||
"content pane bottom": "displaypane_contentpane_bottom",
|
||||
"service pane bottom": "displaypane_servicepane_bottom",
|
||||
"right sidebar": "displaypane_right_sidebar"
|
||||
};
|
||||
|
||||
completion.displayPane = function (context) {
|
||||
context.title = ["Display Pane"];
|
||||
context.completions = displayPanes; // FIXME: useful description etc
|
||||
};
|
||||
|
||||
// load Xulmus specific modules
|
||||
// FIXME: Why aren't these listed in config.scripts?
|
||||
// FIXME: Why isn't this automatic? -> how would one know which classes to load where? --mst
|
||||
@@ -198,6 +246,7 @@ const config = { //{{{
|
||||
liberator.loadModule("hints", Hints);
|
||||
// Load the Player module
|
||||
liberator.loadModule("player", Player);
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////// STYLES //////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////////{{{
|
||||
@@ -369,7 +418,7 @@ const config = { //{{{
|
||||
"Show " + config.hostApplication + " preferences",
|
||||
function (args)
|
||||
{
|
||||
if (args.bang) // open Firefox settings GUI dialog
|
||||
if (args.bang) // open Songbird settings GUI dialog
|
||||
{
|
||||
liberator.open("about:config",
|
||||
(options["newtab"] && options.get("newtab").has("all", "prefs"))
|
||||
@@ -396,66 +445,40 @@ const config = { //{{{
|
||||
},
|
||||
{ argCount: "0" });
|
||||
|
||||
// TODO: move sidebar commands to ui.js?
|
||||
commands.add(["sbcl[ose]"],
|
||||
"Close the sidebar window",
|
||||
function ()
|
||||
{
|
||||
if (!document.getElementById("sidebar-box").hidden)
|
||||
toggleSidebar();
|
||||
},
|
||||
{ argCount: "0" });
|
||||
|
||||
commands.add(["sideb[ar]", "sb[ar]", "sbope[n]"],
|
||||
"Open the sidebar window",
|
||||
commands.add(["dpcl[ose]"],
|
||||
"Close a display pane",
|
||||
function (args)
|
||||
{
|
||||
let arg = args.literalArg;
|
||||
|
||||
// focus if the requested sidebar is already open
|
||||
if (document.getElementById("sidebar-title").value == arg)
|
||||
{
|
||||
document.getElementById("sidebar-box").focus();
|
||||
return;
|
||||
}
|
||||
if (arg in displayPanes)
|
||||
document.getElementById(displayPanes[arg]).hide();
|
||||
else
|
||||
liberator.echoerr("E475: Invalid argument: " + arg);
|
||||
|
||||
let menu = document.getElementById("viewSidebarMenu");
|
||||
|
||||
for (let [,panel] in Iterator(menu.childNodes))
|
||||
{
|
||||
if (panel.label == arg)
|
||||
{
|
||||
panel.doCommand();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
liberator.echoerr("No sidebar " + arg + " found");
|
||||
},
|
||||
{
|
||||
argCount: "1",
|
||||
completer: function (context) completion.sidebar(context),
|
||||
completer: function (context) completion.displayPane(context),
|
||||
literal: 0
|
||||
});
|
||||
|
||||
commands.add(["winc[lose]", "wc[lose]"],
|
||||
"Close window",
|
||||
function () { window.close(); },
|
||||
{ argCount: "0" });
|
||||
|
||||
commands.add(["wino[pen]", "wo[pen]", "wine[dit]"],
|
||||
"Open one or more URLs in a new window",
|
||||
// TODO: this should accept a second arg to specify content
|
||||
commands.add(["displayp[ane]", "dp[ane]", "dpope[n]"],
|
||||
"Open a display pane",
|
||||
function (args)
|
||||
{
|
||||
args = args.string;
|
||||
let arg = args.literalArg;
|
||||
|
||||
if (args)
|
||||
liberator.open(args, liberator.NEW_WINDOW);
|
||||
if (arg in displayPanes)
|
||||
openDisplayPane(displayPanes[arg])
|
||||
// TODO: focus when we have better key handling of these extended modes
|
||||
else
|
||||
liberator.open("about:blank", liberator.NEW_WINDOW);
|
||||
liberator.echoerr("E475: Invalid argument: " + arg);
|
||||
},
|
||||
{
|
||||
completer: function (context) completion.url(context),
|
||||
argCount: "1",
|
||||
completer: function (context) completion.displayPane(context),
|
||||
literal: 0
|
||||
});
|
||||
|
||||
@@ -463,6 +486,9 @@ const config = { //{{{
|
||||
////////////////////// OPTIONS /////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////////{{{
|
||||
|
||||
let stal = options.get("showtabline");
|
||||
stal.value = stal.defaultValue = 2;
|
||||
|
||||
options.add(["online"],
|
||||
"Set the 'work offline' option",
|
||||
"boolean", true,
|
||||
@@ -505,8 +531,18 @@ const config = { //{{{
|
||||
options.add(["urlseparator"],
|
||||
"Set the separator regexp used to separate multiple URL args",
|
||||
"string", ",\\s");
|
||||
//}}}
|
||||
|
||||
// TODO: mention this to SB devs, they seem keen to provide these
|
||||
// functions to make porting from FF as simple as possible.
|
||||
window.toJavaScriptConsole = function () {
|
||||
toOpenWindowByType("global:console", "chrome://global/content/console.xul");
|
||||
}
|
||||
|
||||
window.BrowserStop = function () {
|
||||
getBrowser().mCurrentBrowser.stop();
|
||||
}
|
||||
}
|
||||
//}}}
|
||||
}; //}}}
|
||||
|
||||
// vim: set fdm=marker sw=4 ts=4 et:
|
||||
|
||||
0
xulmus/content/liberator.dtd
Executable file → Normal file
0
xulmus/content/liberator.dtd
Executable file → Normal file
851
xulmus/content/player.js
Executable file → Normal file
851
xulmus/content/player.js
Executable file → Normal file
@@ -1,75 +1,490 @@
|
||||
//Import Artist List as this can be huge
|
||||
|
||||
var artists = getArtistsArray();
|
||||
|
||||
function Player() // {{{
|
||||
{
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////// PRIVATE SECTION /////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////////{{{
|
||||
|
||||
let lastSearchString = "";
|
||||
let lastSearchIndex = 0;
|
||||
let lastSearchView = _SBGetCurrentView();
|
||||
|
||||
// Get the focus to the visible playlist first
|
||||
//window._SBShowMainLibrary();
|
||||
|
||||
function getArtistsArray()
|
||||
{
|
||||
var list = LibraryUtils.mainLibrary;
|
||||
|
||||
// Create an enumeration listener to count each item
|
||||
var listener = {
|
||||
count: 0,
|
||||
onEnumerationBegin: function (aMediaList) {
|
||||
this.count = 0;
|
||||
},
|
||||
onEnumeratedItem: function (aMediaList, aMediaItem) {
|
||||
this.count++;
|
||||
},
|
||||
onEnumerationEnd: function (aMediaList, aStatusCode) {}
|
||||
};
|
||||
|
||||
var artistCounts = {};
|
||||
var artists = list.getDistinctValuesForProperty(SBProperties.artistName);
|
||||
var artist;
|
||||
var artistArray = [];
|
||||
var i = 0;
|
||||
// Count the number of media items for each distinct artist
|
||||
while (artists.hasMore())
|
||||
{
|
||||
artist = artists.getNext();
|
||||
artistArray[i] = [artist, artist];
|
||||
list.enumerateItemsByProperty(SBProperties.artistName,
|
||||
artist,
|
||||
listener,
|
||||
Ci.sbIMediaList.ENUMERATIONTYPE_LOCKING);
|
||||
artistCounts[artist] = listener.count;
|
||||
i++;
|
||||
}
|
||||
|
||||
//liberator.dump("Count : "+artistCounts.toSource());
|
||||
return artistArray;
|
||||
}
|
||||
|
||||
// Get the artist names before hand.
|
||||
let artists = getArtistsArray();
|
||||
|
||||
const pageService = Components.classes["@songbirdnest.com/Songbird/MediaPageManager;1"]
|
||||
.getService(Components.interfaces.sbIMediaPageManager);
|
||||
|
||||
// Register Callbacks for searching.
|
||||
liberator.registerCallback("change", modes.SEARCH_VIEW_FORWARD, function (str) { player.onSearchKeyPress(str); });
|
||||
liberator.registerCallback("submit", modes.SEARCH_VIEW_FORWARD, function (str) { player.onSearchSubmit(str); });
|
||||
//liberator.registerCallback("cancel", modes.SEARCH_VIEW_FORWARD, function (command) { player.searchView(command);});
|
||||
|
||||
// interval (milliseconds)
|
||||
function seek(interval, direction)
|
||||
{
|
||||
let position = gMM.playbackControl ? gMM.playbackControl.position : 0;
|
||||
player.seekTo(position + (direction ? interval : -interval));
|
||||
}
|
||||
|
||||
function focusTrack(mediaItem)
|
||||
{
|
||||
SBGetBrowser().mediaTab.mediaPage.highlightItem(_SBGetCurrentView().getIndexForItem(mediaItem));
|
||||
}
|
||||
|
||||
var mediaCoreListener = {
|
||||
onMediacoreEvent: function (event)
|
||||
{
|
||||
switch (event.type)
|
||||
{
|
||||
case Ci.sbIMediacoreEvent.BEFORE_TRACK_CHANGE:
|
||||
liberator.log("Before track changed: " + event.data);
|
||||
autocommands.trigger("TrackChangePre", { track: event.data });
|
||||
break;
|
||||
case Ci.sbIMediacoreEvent.TRACK_CHANGE:
|
||||
autocommands.trigger("TrackChange", { track: event.data });
|
||||
break;
|
||||
case Ci.sbIMediacoreEvent.BEFORE_VIEW_CHANGE:
|
||||
liberator.log("Before view changed: " + event.data);
|
||||
autocommands.trigger("ViewChangePre", { view: event.data });
|
||||
break;
|
||||
case Ci.sbIMediacoreEvent.VIEW_CHANGE:
|
||||
liberator.log("View changed: " + event.data);
|
||||
autocommands.trigger("ViewChange", { view: event.data });
|
||||
break;
|
||||
case Ci.sbIMediacoreEvent.STREAM_START:
|
||||
liberator.log("Track started: " + gMM.sequencer.currentItem);
|
||||
autocommands.trigger("StreamStart", { track: gMM.sequencer.currentItem });
|
||||
break;
|
||||
case Ci.sbIMediacoreEvent.STREAM_PAUSE:
|
||||
liberator.log("Track paused: " + gMM.sequencer.currentItem);
|
||||
autocommands.trigger("StreamPause", { track: gMM.sequencer.currentItem });
|
||||
break;
|
||||
case Ci.sbIMediacoreEvent.STREAM_END:
|
||||
liberator.log("Track ended: " + gMM.sequencer.currentItem);
|
||||
autocommands.trigger("StreamEnd", { track: gMM.sequencer.currentItem });
|
||||
break;
|
||||
case Ci.sbIMediacoreEvent.STREAM_STOP:
|
||||
liberator.log("Track stopped: " + gMM.sequencer.currentItem);
|
||||
autocommands.trigger("StreamStop", { track: gMM.sequencer.currentItem });
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
gMM.addListener(mediaCoreListener);
|
||||
liberator.registerObserver("shutdown", function () {
|
||||
gMM.removeListener(mediaCoreListener);
|
||||
});
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////}}}
|
||||
////////////////////// MAPPINGS ////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////////{{{
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["x"], "Play Track",
|
||||
function ()
|
||||
{
|
||||
gMM.sequencer.play();
|
||||
});
|
||||
["x"], "Play track",
|
||||
function () { player.play(); });
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["z"], "Previous Track",
|
||||
function ()
|
||||
{
|
||||
gSongbirdWindowController.doCommand("cmd_control_previous");
|
||||
});
|
||||
["z"], "Previous track",
|
||||
function () { player.previous(); });
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["c"], "Pause/Unpause Track",
|
||||
function ()
|
||||
{
|
||||
gSongbirdWindowController.doCommand("cmd_control_playpause");
|
||||
});
|
||||
["c"], "Pause/unpause track",
|
||||
function () { player.togglePlayPause(); });
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["b"], "Next Track",
|
||||
function ()
|
||||
{
|
||||
gSongbirdWindowController.doCommand("cmd_control_next");
|
||||
});
|
||||
["b"], "Next track",
|
||||
function () { player.next(); });
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["v"], "Stop Track",
|
||||
function ()
|
||||
["v"], "Stop track",
|
||||
function () { player.stop(); });
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["f"], "Filter library",
|
||||
function () { commandline.open(":", "filter ", modes.EX); });
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["F"], "Loads current view filtered by the keywords",
|
||||
function () { commandline.open(":", "Filter ", modes.EX); });
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["i"], "Select current track",
|
||||
function () { gSongbirdWindowController.doCommand("cmd_find_current_track"); });
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["s"], "Toggle shuffle",
|
||||
function () { player.toggleShuffle(); });
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["r"], "Toggle repeat",
|
||||
function () { player.toggleRepeat(); });
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["h", "<Left>"], "Seek -10s",
|
||||
function (count) { player.seekBackward(Math.max(1, count) * 10000); },
|
||||
{ flags: Mappings.flags.COUNT });
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["l", "<Right>"], "Seek +10s",
|
||||
function (count) { player.seekForward(Math.max(1, count) * 10000); },
|
||||
{ flags: Mappings.flags.COUNT });
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["H", "<S-Left>"], "Seek -1m",
|
||||
function (count) { player.seekBackward(Math.max(1, count) * 60000); },
|
||||
{ flags: Mappings.flags.COUNT });
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["L", "<S-Right>"], "Seek +1m",
|
||||
function (count) { player.seekForward(Math.max(1, count) * 60000); },
|
||||
{ flags: Mappings.flags.COUNT });
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["=", "+"], "Increase volume by 10%",
|
||||
function () { player.increaseVolume(); });
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["-"], "Decrease volume by 10%",
|
||||
function () { player.decreaseVolume(); });
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["/"], "Search forward for a track",
|
||||
function (args) { commandline.open("/", "", modes.SEARCH_VIEW_FORWARD); });
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["n"], "Find the next track",
|
||||
function () { player.searchViewAgain(false);});
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["N"], "Find the previous track",
|
||||
function () { player.searchViewAgain(true);});
|
||||
|
||||
for (let i in util.range(0, 6))
|
||||
{
|
||||
let (rating = i) {
|
||||
mappings.add([modes.PLAYER],
|
||||
["<C-" + rating + ">"], "Rate the current media item " + rating,
|
||||
function () { player.rateMediaItem(rating); });
|
||||
}
|
||||
}
|
||||
|
||||
////////////////// ///////////////////////////////////////////////////////////}}}
|
||||
////////////////////// COMMANDS ////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////////{{{
|
||||
|
||||
// TODO: rename :Filter to :filter and move this functionality into :tqueue etc? --djk
|
||||
commands.add(["f[ilter]"],
|
||||
"Filter and play tracks",
|
||||
function (args)
|
||||
{
|
||||
// Store the old view
|
||||
// let prev_view = gMM.status.view;
|
||||
let library = LibraryUtils.mainLibrary;
|
||||
let mainView = library.createView();
|
||||
let sqncr = gMM.sequencer;
|
||||
let customProps = Cc["@songbirdnest.com/Songbird/Properties/MutablePropertyArray;1"]
|
||||
.createInstance(Ci.sbIMutablePropertyArray);
|
||||
|
||||
// args
|
||||
switch (args.length)
|
||||
{
|
||||
case 3:
|
||||
customProps.appendProperty(SBProperties.trackName, args[2].toString());
|
||||
case 2:
|
||||
customProps.appendProperty(SBProperties.albumName, args[1].toString());
|
||||
case 1:
|
||||
customProps.appendProperty(SBProperties.artistName, args[0].toString());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
sqncr.playView(mainView, mainView.getIndexForItem(library.getItemsByProperties(customProps).queryElementAt(0, Ci.sbIMediaItem)));
|
||||
player.focusPlayingTrack();
|
||||
},
|
||||
{
|
||||
argCount: "+",
|
||||
completer: function (context, args) completion.song(context, args)
|
||||
});
|
||||
|
||||
commands.add(["F[ilter]"],
|
||||
"Filter tracks based on keywords {genre/artist/album/track}",
|
||||
function (args)
|
||||
{
|
||||
let library = LibraryUtils.mainLibrary;
|
||||
let view = LibraryUtils.createStandardMediaListView(LibraryUtils.mainLibrary, args.literalArg);
|
||||
|
||||
if (view.length == 0)
|
||||
liberator.echoerr("No Tracks matching the keywords");
|
||||
else
|
||||
{
|
||||
SBGetBrowser().loadMediaList(LibraryUtils.mainLibrary, null, null, view,
|
||||
"chrome://songbird/content/mediapages/filtersPage.xul");
|
||||
// TODO: make this focusTrack work ?
|
||||
focusTrack(view.getItemByIndex(0));
|
||||
}
|
||||
},
|
||||
{
|
||||
argCount: "1",
|
||||
literal: 0
|
||||
//completer: function (context, args) completion.tracks(context, args);
|
||||
});
|
||||
|
||||
commands.add(["load"],
|
||||
"Load a playlist",
|
||||
function (args)
|
||||
{
|
||||
let arg = args.literalArg;
|
||||
|
||||
if (arg)
|
||||
{
|
||||
// load the selected playlist/smart playlist
|
||||
let playlists = player.getPlaylists();
|
||||
|
||||
for ([i, list] in Iterator(playlists))
|
||||
{
|
||||
if (util.compareIgnoreCase(arg, list.name) == 0)
|
||||
{
|
||||
SBGetBrowser().loadMediaList(playlists[i]);
|
||||
focusTrack(_SBGetCurrentView().getItemByIndex(0));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
liberator.echoerr("E475: Invalid argument: " + arg);
|
||||
}
|
||||
else
|
||||
{
|
||||
// load main library if there are no args
|
||||
_SBShowMainLibrary();
|
||||
}
|
||||
},
|
||||
{
|
||||
argCount: "?",
|
||||
completer: function (context, args) completion.playlist(context, args),
|
||||
literal: 0
|
||||
});
|
||||
|
||||
// TODO: better off as a single command (:player play) or cmus compatible (:player-play)? --djk
|
||||
commands.add(["playerp[lay]"],
|
||||
"Play track",
|
||||
function () { player.play(); });
|
||||
|
||||
commands.add(["playerpa[use]"],
|
||||
"Pause/unpause track",
|
||||
function () { player.togglePlayPause(); });
|
||||
|
||||
commands.add(["playern[ext]"],
|
||||
"Play next track",
|
||||
function () { player.next(); });
|
||||
|
||||
commands.add(["playerpr[ev]"],
|
||||
"Play previous track",
|
||||
function () { player.previous(); });
|
||||
|
||||
commands.add(["players[top]"],
|
||||
"Stop track",
|
||||
function () { player.stop(); });
|
||||
|
||||
commands.add(["see[k]"],
|
||||
"Seek to a track position",
|
||||
function (args)
|
||||
{
|
||||
let arg = args[0];
|
||||
|
||||
// intentionally supports 999:99:99
|
||||
if (!/^[+-]?(\d+[smh]?|(\d+:\d\d:|\d+:)?\d{2})$/.test(arg))
|
||||
{
|
||||
liberator.echoerr("E475: Invalid argument: " + arg);
|
||||
return;
|
||||
}
|
||||
|
||||
function ms(t, m) Math.abs(parseInt(t, 10) * { s: 1000, m: 60000, h: 3600000 }[m])
|
||||
|
||||
if (/:/.test(arg))
|
||||
{
|
||||
let [seconds, minutes, hours] = arg.split(":").reverse();
|
||||
hours = hours || 0;
|
||||
var value = ms(seconds, "s") + ms(minutes, "m") + ms(hours, "h");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!/[smh]/.test(arg.substr(-1)))
|
||||
arg += "s"; // default to seconds
|
||||
|
||||
value = ms(arg.substring(arg, arg.length - 1), arg.substr(-1));
|
||||
}
|
||||
|
||||
if (/^[-+]/.test(arg))
|
||||
arg[0] == "-" ? player.seekBackward(value) : player.seekForward(value)
|
||||
else
|
||||
player.seekTo(value)
|
||||
|
||||
},
|
||||
{ argCount: "1" });
|
||||
|
||||
commands.add(["mediav[iew]"],
|
||||
"Change the current media view",
|
||||
function (args)
|
||||
{
|
||||
// FIXME: is this a SB restriction? --djk
|
||||
if (!gBrowser.currentMediaPage)
|
||||
{
|
||||
liberator.echoerr("Exxx: Can only set the media view from the media tab"); // XXX
|
||||
return;
|
||||
}
|
||||
|
||||
let arg = args[0];
|
||||
|
||||
if (arg)
|
||||
{
|
||||
let pages = player.getMediaPages();
|
||||
|
||||
for ([,page] in Iterator(pages))
|
||||
{
|
||||
if (util.compareIgnoreCase(arg, page.contentTitle) == 0)
|
||||
{
|
||||
player.loadMediaPage(page, gBrowser.currentMediaListView.mediaList, gBrowser.currentMediaListView);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
liberator.echoerr("E475: Invalid argument: " + arg);
|
||||
}
|
||||
},
|
||||
{
|
||||
argCount: "1",
|
||||
completer: function (context) completion.mediaView(context),
|
||||
literal: 0
|
||||
});
|
||||
|
||||
// TODO: maybe :vol! could toggle mute on/off? --djk
|
||||
commands.add(["vol[ume]"],
|
||||
"Set the volume",
|
||||
function (args)
|
||||
{
|
||||
let arg = args[0];
|
||||
|
||||
if (!/^[+-]?\d+$/.test(arg))
|
||||
{
|
||||
liberator.echoerr("E488: Trailing characters");
|
||||
return;
|
||||
}
|
||||
|
||||
let level = parseInt(arg, 10) / 100;
|
||||
|
||||
if (/^[+-]/.test(arg))
|
||||
level = player.volume + level;
|
||||
|
||||
player.volume = Math.min(Math.max(level, 0), 1);
|
||||
},
|
||||
{ argCount: "1" });
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////}}}
|
||||
////////////////////// PUBLIC SECTION //////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////////{{{
|
||||
|
||||
return {
|
||||
|
||||
// TODO: check bounds and round, 0 - 1 or 0 - 100?
|
||||
get volume() gMM.volumeControl.volume,
|
||||
set volume(value)
|
||||
{
|
||||
gMM.volumeControl.volume = value;
|
||||
},
|
||||
|
||||
// FIXME: can't be called from non-media tabs since 840e78
|
||||
play: function play()
|
||||
{
|
||||
// Check if there is any selection in place, else play first item of the visible view.
|
||||
if (_SBGetCurrentView().selection.count != 0)
|
||||
{
|
||||
// Play the selection.
|
||||
gMM.sequencer.playView(_SBGetCurrentView(), _SBGetCurrentView().getIndexForItem(_SBGetCurrentView().selection.currentMediaItem));
|
||||
focusTrack(gMM.sequencer.currentItem);
|
||||
}
|
||||
else
|
||||
{
|
||||
gMM.sequencer.playView(SBGetBrowser().currentMediaListView, 0);
|
||||
focusTrack(gMM.sequencer.currentItem);
|
||||
}
|
||||
},
|
||||
|
||||
stop: function stop()
|
||||
{
|
||||
gMM.sequencer.stop();
|
||||
});
|
||||
},
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["l"], "Play Media",
|
||||
function ()
|
||||
next: function next()
|
||||
{
|
||||
commandline.open(":", "playmedia ", modes.EX);
|
||||
});
|
||||
gSongbirdWindowController.doCommand("cmd_control_next");
|
||||
gSongbirdWindowController.doCommand("cmd_find_current_track");
|
||||
},
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["s"], "Toggle Shuffle",
|
||||
function ()
|
||||
previous: function previous()
|
||||
{
|
||||
gSongbirdWindowController.doCommand("cmd_control_previous");
|
||||
gSongbirdWindowController.doCommand("cmd_find_current_track");
|
||||
},
|
||||
|
||||
togglePlayPause: function togglePlayPause()
|
||||
{
|
||||
gSongbirdWindowController.doCommand("cmd_control_playpause");
|
||||
focusTrack(gMM.sequencer.currentItem);
|
||||
},
|
||||
|
||||
toggleShuffle: function toggleShuffle()
|
||||
{
|
||||
if (gMM.sequencer.mode != gMM.sequencer.MODE_SHUFFLE)
|
||||
gMM.sequencer.mode = gMM.sequencer.MODE_SHUFFLE;
|
||||
else
|
||||
gMM.sequencer.mode = gMM.sequencer.MODE_FORWARD;
|
||||
});
|
||||
},
|
||||
|
||||
mappings.add([modes.PLAYER],
|
||||
["r"], "Toggle Repeat",
|
||||
function ()
|
||||
// FIXME: not really toggling - good enough for now.
|
||||
toggleRepeat: function toggleRepeat()
|
||||
{
|
||||
switch (gMM.sequencer.repeatMode)
|
||||
{
|
||||
@@ -86,131 +501,249 @@ function Player() // {{{
|
||||
gMM.sequencer.repeatMode = gMM.sequencer.MODE_REPEAT_NONE;
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////}}}
|
||||
////////////////////// COMMANDS ////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////////{{{
|
||||
|
||||
commands.add(["playmedia"],
|
||||
"Play Media",
|
||||
function (args)
|
||||
{
|
||||
//Store the old view
|
||||
//var prev_view = gMM.status.view;
|
||||
var library = LibraryUtils.mainLibrary;
|
||||
var mainView = library.createView();
|
||||
var sqncr = gMM.sequencer;
|
||||
var customProps = Cc["@songbirdnest.com/Songbird/Properties/MutablePropertyArray;1"]
|
||||
.createInstance(Ci.sbIMutablePropertyArray);
|
||||
|
||||
//args
|
||||
if (args.length == 1)
|
||||
{
|
||||
customProps.appendProperty(SBProperties.artistName,args[0].toString());
|
||||
}
|
||||
else if (args.length == 2)
|
||||
{
|
||||
customProps.appendProperty(SBProperties.artistName,args[0].toString());
|
||||
customProps.appendProperty(SBProperties.albumName,args[1].toString());
|
||||
}
|
||||
else if (args.length == 3)
|
||||
{
|
||||
customProps.appendProperty(SBProperties.artistName,args[0].toString());
|
||||
customProps.appendProperty(SBProperties.albumName,args[1].toString());
|
||||
customProps.appendProperty(SBProperties.trackName,args[2].toString());
|
||||
}
|
||||
|
||||
sqncr.playView(mainView, mainView.getIndexForItem(library.getItemsByProperties(customProps).queryElementAt(0,Ci.sbIMediaItem)));
|
||||
},
|
||||
|
||||
seekForward: function seekForward(interval)
|
||||
{
|
||||
completer: function (context, args) completion.song(context, args)
|
||||
});
|
||||
seek(interval, true);
|
||||
},
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////}}}
|
||||
////////////////////// PUBLIC SECTION //////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////////{{{
|
||||
seekBackward: function seekBackward(interval)
|
||||
{
|
||||
seek(interval, false);
|
||||
},
|
||||
|
||||
seekTo: function seekTo(position)
|
||||
{
|
||||
// FIXME: if not playing
|
||||
if (!gMM.playbackControl)
|
||||
this.play();
|
||||
|
||||
let min = 0;
|
||||
let max = gMM.playbackControl.duration - 5000; // TODO: 5s buffer like cmus desirable?
|
||||
|
||||
gMM.playbackControl.position = Math.min(Math.max(position, min), max);
|
||||
},
|
||||
|
||||
// FIXME: 10% ?
|
||||
// I think just general increments of say 0.05 might be better --djk
|
||||
increaseVolume: function increaseVolume()
|
||||
{
|
||||
gMM.volumeControl.volume = gMM.volumeControl.volume * 1.1;
|
||||
},
|
||||
|
||||
decreaseVolume: function decreaseVolume()
|
||||
{
|
||||
if (gMM.volumeControl.volume == 0)
|
||||
gMM.volumeControl.volume = 0.1;
|
||||
else
|
||||
gMM.volumeControl.volume = gMM.volumeControl.volume * 0.9;
|
||||
},
|
||||
|
||||
focusPlayingTrack :function focusPlayingTrack()
|
||||
{
|
||||
focusTrack(gMM.sequencer.currentItem);
|
||||
},
|
||||
|
||||
listTracks: function listTracks(view)
|
||||
{
|
||||
//let myView = LibraryUtils.createStandardMediaListView(LibraryUtils.mainLibrary, args);
|
||||
let length = view.length;
|
||||
let tracksList = [];
|
||||
|
||||
for (let i = 0; i < length; i++)
|
||||
{
|
||||
let mediaItem = view.getItemByIndex(i);
|
||||
let trackName = mediaItem.getProperty(SBProperties.trackName);
|
||||
let albumName = mediaItem.getProperty(SBProperties.albumName);
|
||||
let artistName = mediaItem.getProperty(SBProperties.artistName);
|
||||
|
||||
tracksList[i] = [trackName, "Album : " + albumName + " Artist : " + artistName];
|
||||
}
|
||||
|
||||
return tracksList;
|
||||
},
|
||||
|
||||
searchView: function searchView (args)
|
||||
{
|
||||
let currentView = _SBGetCurrentView();
|
||||
let mediaItemList = currentView.mediaList;
|
||||
let search = _getSearchString(currentView);
|
||||
let searchString = "";
|
||||
|
||||
if (search != "")
|
||||
searchString = args + " " + search;
|
||||
else
|
||||
searchString = args;
|
||||
|
||||
lastSearchString = searchString;
|
||||
|
||||
let mySearchView = LibraryUtils.createStandardMediaListView(mediaItemList, searchString);
|
||||
|
||||
if (mySearchView.length)
|
||||
{
|
||||
lastSearchView = mySearchView;
|
||||
lastSearchIndex = 0;
|
||||
focusTrack(mySearchView.getItemByIndex(lastSearchIndex));
|
||||
}
|
||||
else
|
||||
{
|
||||
liberator.echoerr("E486 Pattern not found: " + searchString, commandline.FORCE_SINGLELINE);
|
||||
}
|
||||
},
|
||||
|
||||
searchViewAgain: function searchViewAgain(reverse)
|
||||
{
|
||||
function echo(str)
|
||||
{
|
||||
setTimeout(function () {
|
||||
commandline.echo(str, commandline.HL_WARNINGMSG, commandline.APPEND_TO_MESSAGES | commandline.FORCE_SINGLELINE);
|
||||
}, 0);
|
||||
}
|
||||
|
||||
if (reverse)
|
||||
{
|
||||
if (lastSearchIndex == 0)
|
||||
{
|
||||
lastSearchIndex = lastSearchView.length - 1;
|
||||
echo("Search hit TOP, continuing at BOTTOM");
|
||||
}
|
||||
else
|
||||
lastSearchIndex = lastSearchIndex - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (lastSearchIndex == (lastSearchView.length - 1))
|
||||
{
|
||||
lastSearchIndex = 0;
|
||||
echo("Search hit BOTTOM, continuing at TOP");
|
||||
}
|
||||
else
|
||||
lastSearchIndex = lastSearchIndex + 1;
|
||||
}
|
||||
|
||||
//FIXME: Implement for "?" --ken
|
||||
commandline.echo("/" + lastSearchString, null, commandline.FORCE_SINGLELINE);
|
||||
focusTrack(lastSearchView.getItemByIndex(lastSearchIndex));
|
||||
|
||||
},
|
||||
|
||||
onSearchKeyPress: function (str)
|
||||
{
|
||||
if (options["incsearch"])
|
||||
this.searchView(str);
|
||||
},
|
||||
|
||||
onSearchSubmit: function (str)
|
||||
{
|
||||
this.searchView(str);
|
||||
},
|
||||
|
||||
getPlaylists: function getPlaylists()
|
||||
{
|
||||
let mainLibrary = LibraryUtils.mainLibrary;
|
||||
let playlists = [mainLibrary];
|
||||
let listener = {
|
||||
onEnumerationBegin: function () { },
|
||||
onEnumerationEnd: function () { },
|
||||
onEnumeratedItem: function (list, item)
|
||||
{
|
||||
// FIXME: why are there null items and duplicates?
|
||||
if (!playlists.some(function (list) list.name == item.name) && item.name != null)
|
||||
{
|
||||
playlists.push(item);
|
||||
}
|
||||
return Components.interfaces.sbIMediaListEnumerationListener.CONTINUE;
|
||||
}
|
||||
};
|
||||
|
||||
mainLibrary.enumerateItemsByProperty("http://songbirdnest.com/data/1.0#isList", "1", listener);
|
||||
|
||||
return playlists;
|
||||
},
|
||||
|
||||
// Play track at 'row' in 'playlist'
|
||||
playPlaylist: function playPlaylist(playlist, row)
|
||||
{
|
||||
gMM.sequencer.playView(playlist.createView(), row);
|
||||
},
|
||||
|
||||
getMediaPages: function getMediaPages()
|
||||
{
|
||||
let list = gBrowser.currentMediaPage.mediaListView.mediaList;
|
||||
let pages = pageService.getAvailablePages(list);
|
||||
return ArrayConverter.JSArray(pages).map(function (page) page.QueryInterface(Components.interfaces.sbIMediaPageInfo));
|
||||
},
|
||||
|
||||
loadMediaPage: function loadMediaList(page, list, view)
|
||||
{
|
||||
pageService.setPage(list, page);
|
||||
gBrowser.loadMediaList(list, null, null, view, null);
|
||||
},
|
||||
|
||||
rateMediaItem: function rateMediaItem(rating)
|
||||
{
|
||||
if (gMM.sequencer.currentItem)
|
||||
gMM.sequencer.currentItem.setProperty(SBProperties.rating, rating);
|
||||
},
|
||||
|
||||
getArtists: function getArtists()
|
||||
{
|
||||
return artists;
|
||||
},
|
||||
|
||||
getAlbums: function getAlbums(artist)
|
||||
{
|
||||
var list = LibraryUtils.mainLibrary;
|
||||
var albumArray = [], returnArray = [];
|
||||
var items = list.getItemsByProperty(SBProperties.artistName, artist).enumerate();
|
||||
var i = 0, j = 0;
|
||||
|
||||
while (items.hasMoreElements())
|
||||
{
|
||||
album = items.getNext().getProperty(SBProperties.albumName);
|
||||
albumArray[i] = [album, album];
|
||||
|
||||
if (i == 0)
|
||||
{
|
||||
returnArray[j] = albumArray[i];
|
||||
j++;
|
||||
}
|
||||
else if (albumArray[i-1].toString() != albumArray[i].toString())
|
||||
{
|
||||
returnArray[i] = albumArray[i];
|
||||
j++;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
return returnArray;
|
||||
},
|
||||
|
||||
getTracks: function getTracks(artist, album)
|
||||
{
|
||||
var list = LibraryUtils.mainLibrary;
|
||||
var tracksArray = [];
|
||||
var pa = Cc["@songbirdnest.com/Songbird/Properties/MutablePropertyArray;1"]
|
||||
.createInstance(Ci.sbIMutablePropertyArray);
|
||||
var i = 0;
|
||||
|
||||
pa.appendProperty(SBProperties.artistName, artist.toString());
|
||||
pa.appendProperty(SBProperties.albumName, album.toString());
|
||||
var items = list.getItemsByProperties(pa).enumerate();
|
||||
|
||||
while (items.hasMoreElements())
|
||||
{
|
||||
track = items.getNext().getProperty(SBProperties.trackName);
|
||||
tracksArray[i] = [track, track];
|
||||
i++;
|
||||
}
|
||||
|
||||
return tracksArray;
|
||||
}
|
||||
|
||||
};
|
||||
//}}}
|
||||
} // }}}
|
||||
|
||||
function getArtists()
|
||||
{
|
||||
return this.artists;
|
||||
}
|
||||
|
||||
function getArtistsArray()
|
||||
{
|
||||
var list = LibraryUtils.mainLibrary;
|
||||
|
||||
// Create an enumeration listener to count each item
|
||||
var listener = {
|
||||
count: 0,
|
||||
onEnumerationBegin: function (aMediaList) {
|
||||
this.count = 0;
|
||||
},
|
||||
onEnumeratedItem: function (aMediaList, aMediaItem) {
|
||||
this.count++;
|
||||
},
|
||||
onEnumerationEnd: function (aMediaList, aStatusCode) {}
|
||||
};
|
||||
|
||||
var artistCounts = {};
|
||||
var artists = list.getDistinctValuesForProperty(SBProperties.artistName);
|
||||
var artist;
|
||||
var artistArray = [];
|
||||
var i = 0;
|
||||
// Count the number of media items for each distinct artist
|
||||
while (artists.hasMore()) {
|
||||
artist = artists.getNext();
|
||||
artistArray[i] = [artist,artist];
|
||||
list.enumerateItemsByProperty(SBProperties.artistName,
|
||||
artist,
|
||||
listener,
|
||||
Ci.sbIMediaList.ENUMERATIONTYPE_LOCKING);
|
||||
artistCounts[artist] = listener.count;
|
||||
i++;
|
||||
}
|
||||
|
||||
//liberator.dump("Count : "+artistCounts.toSource());
|
||||
return artistArray;
|
||||
}
|
||||
|
||||
function getAlbums(artist)
|
||||
{
|
||||
var list = LibraryUtils.mainLibrary;
|
||||
var albumArray = [];
|
||||
var items = list.getItemsByProperty(SBProperties.artistName, artist).enumerate();
|
||||
var i = 0;
|
||||
|
||||
while (items.hasMoreElements()) {
|
||||
album = items.getNext().getProperty(SBProperties.albumName);
|
||||
albumArray[i] = [album, album];
|
||||
i++;
|
||||
}
|
||||
|
||||
return util.Array.uniq(albumArray);
|
||||
}
|
||||
|
||||
function getTracks(artist,album)
|
||||
{
|
||||
var list = LibraryUtils.mainLibrary;
|
||||
var tracksArray = [];
|
||||
var pa = Cc["@songbirdnest.com/Songbird/Properties/MutablePropertyArray;1"]
|
||||
.createInstance(Ci.sbIMutablePropertyArray);
|
||||
var i = 0;
|
||||
|
||||
pa.appendProperty(SBProperties.artistName,artist.toString());
|
||||
pa.appendProperty(SBProperties.albumName,album.toString());
|
||||
var items = list.getItemsByProperties(pa).enumerate();
|
||||
|
||||
while (items.hasMoreElements()) {
|
||||
track = items.getNext().getProperty(SBProperties.trackName);
|
||||
tracksArray[i] = [track, track];
|
||||
i++;
|
||||
}
|
||||
|
||||
return tracksArray;
|
||||
}
|
||||
|
||||
// vim: set fdm=marker sw=4 ts=4 et:
|
||||
|
||||
BIN
xulmus/content/xulmus.png
Executable file → Normal file
BIN
xulmus/content/xulmus.png
Executable file → Normal file
Binary file not shown.
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 1.1 KiB |
8
xulmus/content/xulmus.svg
Executable file → Normal file
8
xulmus/content/xulmus.svg
Executable file → Normal file
@@ -15,9 +15,9 @@
|
||||
inkscape:version="0.46"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/home/maxauthority/code/vimperator"
|
||||
sodipodi:docname="vimperator.svg"
|
||||
sodipodi:docname="xulmus.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
inkscape:export-filename="/home/maxauthority/code/vimperator/vimperator.png"
|
||||
inkscape:export-filename="/home/maxauthority/code/vimperator/xulmus.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90">
|
||||
<defs
|
||||
@@ -73,10 +73,10 @@
|
||||
sodipodi:role="line"
|
||||
id="tspan2231"
|
||||
x="6.2673268"
|
||||
y="29.896835">vimperator_</tspan></text>
|
||||
y="29.896835">xulmus_</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:24px;font-style:normal;font-weight:normal;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono"
|
||||
style="font-size:24px;font-style:normal;font-weight:normal;fill:#00ff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono"
|
||||
x="6.4079518"
|
||||
y="53.183945"
|
||||
id="text2233"><tspan
|
||||
|
||||
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
0
xulmus/content/xulmus.xul
Executable file → Normal file
0
xulmus/content/xulmus.xul
Executable file → Normal file
0
xulmus/contrib/vim/Makefile
Executable file → Normal file
0
xulmus/contrib/vim/Makefile
Executable file → Normal file
0
xulmus/contrib/vim/ftdetect/xulmus.vim
Executable file → Normal file
0
xulmus/contrib/vim/ftdetect/xulmus.vim
Executable file → Normal file
0
xulmus/contrib/vim/mkvimball.txt
Executable file → Normal file
0
xulmus/contrib/vim/mkvimball.txt
Executable file → Normal file
0
xulmus/contrib/vim/syntax/xulmus.vim
Executable file → Normal file
0
xulmus/contrib/vim/syntax/xulmus.vim
Executable file → Normal file
45
xulmus/install.rdf
Executable file → Normal file
45
xulmus/install.rdf
Executable file → Normal file
@@ -5,54 +5,15 @@
|
||||
<em:id>{3703dcdb-6ba3-4331-8de8-c18373fb05d1}</em:id>
|
||||
<em:type>2</em:type>
|
||||
<em:name>xulmus@vimperator.org</em:name>
|
||||
<em:version>0.1</em:version>
|
||||
<em:version>###VERSION###</em:version>
|
||||
<em:creator>Prathyush Thota</em:creator>
|
||||
|
||||
|
||||
<em:description>VIM for SongBird brothers.</em:description>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<em:description>Makes Songbird behave like Vim and CMus.</em:description>
|
||||
<em:targetApplication>
|
||||
<Description>
|
||||
<em:id>songbird@songbirdnest.com</em:id>
|
||||
<em:minVersion>0.8.0pre</em:minVersion>
|
||||
<em:maxVersion>1.1.0pre</em:maxVersion>
|
||||
<em:maxVersion>1.2.0pre</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Register a pane to be displayed below the service sidebar.
|
||||
See http://wiki.songbirdnest.com/Developer/Articles/Getting_Started/Display_Panes -->
|
||||
<songbird:displayPane>
|
||||
<Description>
|
||||
<songbird:contentTitle>xulmus</songbird:contentTitle>
|
||||
<songbird:contentUrl>chrome://xulmus/content/pane.xul</songbird:contentUrl>
|
||||
<songbird:contentIcon>chrome://xulmus/skin/pane-icon.png</songbird:contentIcon>
|
||||
<songbird:defaultWidth>200</songbird:defaultWidth>
|
||||
<songbird:defaultHeight>100</songbird:defaultHeight>
|
||||
<songbird:suggestedContentGroups>servicepane</songbird:suggestedContentGroups>
|
||||
<songbird:showOnInstall>true</songbird:showOnInstall>
|
||||
</Description>
|
||||
</songbird:displayPane>
|
||||
|
||||
|
||||
|
||||
<!-- Register a custom media page.
|
||||
See http://wiki.songbirdnest.com/Developer/Articles/Getting_Started/Building_Media_Views -->
|
||||
<songbird:mediaPage>
|
||||
<Description>
|
||||
<songbird:contentTitle>xulmus</songbird:contentTitle>
|
||||
<songbird:contentUrl>chrome://xulmus/content/media-page.xul</songbird:contentUrl>
|
||||
</Description>
|
||||
</songbird:mediaPage>
|
||||
|
||||
</Description>
|
||||
</RDF>
|
||||
|
||||
0
xulmus/locale/en-US/Makefile
Executable file → Normal file
0
xulmus/locale/en-US/Makefile
Executable file → Normal file
8
xulmus/locale/en-US/asciidoc.conf
Executable file → Normal file
8
xulmus/locale/en-US/asciidoc.conf
Executable file → Normal file
File diff suppressed because one or more lines are too long
20
xulmus/locale/en-US/autocommands.txt
Executable file → Normal file
20
xulmus/locale/en-US/autocommands.txt
Executable file → Normal file
@@ -12,7 +12,7 @@ Execute commands automatically on events.
|
||||
|
||||
[c]:au[tocmd][c] {event} {pat} {cmd}
|
||||
|
||||
Add {cmd} to the list of commands Vimperator will execute on {event} for a URL matching {pat}:
|
||||
Add {cmd} to the list of commands Xulmus will execute on {event} for a URL matching {pat}:
|
||||
|
||||
* [c]:autocmd[!][c] {events} {pat}: list/remove autocommands filtered by {events} and {pat}
|
||||
* [c]:autocmd[!][c] {events}: list/remove autocommands matching {events}
|
||||
@@ -26,14 +26,22 @@ Available {events}:
|
||||
*ColorScheme* Triggered after a color scheme has been loaded
|
||||
*DOMLoad* Triggered when a page's DOM content has fully loaded
|
||||
*DownloadPost* Triggered when a download has completed
|
||||
*Fullscreen* Triggered when the browser's fullscreen state changes
|
||||
*Fullscreen* Triggered when the player's fullscreen state changes
|
||||
*LocationChange* Triggered when changing tabs or when navigating to a new location
|
||||
*PageLoadPre* Triggered after a page load is initiated
|
||||
*PageLoad* Triggered when a page gets (re)loaded/opened
|
||||
*ShellCmdPost* Triggered after executing a shell command with [c]:![c]#{cmd}
|
||||
*VimperatorEnter* Triggered after Firefox starts
|
||||
*VimperatorLeavePre* Triggered before exiting Firefox, just before destroying each module
|
||||
*VimperatorLeave* Triggered before exiting Firefox
|
||||
*TrackChangePre* Triggered before a playing track is changed
|
||||
*TrackChange* Triggered after a playing track has changed
|
||||
*ViewChangePre* Triggered before a sequencer view is changed
|
||||
*ViewChange* Triggered after a sequencer view is changed
|
||||
*StreamStart* Triggered after a stream has started
|
||||
*StreamPause* Triggered after a stream has paused
|
||||
*StreamEnd* Triggered after a stream has ended
|
||||
*StreamStop* Triggered after a stream has stopped
|
||||
*XulmusEnter* Triggered after Songbird starts
|
||||
*XulmusLeavePre* Triggered before exiting Songbird, just before destroying each module
|
||||
*XulmusLeave* Triggered before exiting Songbird
|
||||
--------------------------------------------------------------
|
||||
|
||||
{pat} is a regular expression, use .* if you want to match all URLs.
|
||||
@@ -53,6 +61,8 @@ The following keywords are available where relevant:
|
||||
*<file>* The target destination of a download. Only for *DownloadPost*.
|
||||
*<state>* The new fullscreen state. Only for *Fullscreen*.
|
||||
*<name>* The color scheme name. Only for *ColorScheme*.
|
||||
*<view>* The new sequencer view. Only for *ViewChangePre* and *ViewChange*.
|
||||
*<track>* The new media track. Only for *TrackChangePre*, *TrackChange* and *Stream\**.
|
||||
--------------------------------------------------------------
|
||||
|
||||
________________________________________________________________________________
|
||||
|
||||
38
xulmus/locale/en-US/browsing.txt
Executable file → Normal file
38
xulmus/locale/en-US/browsing.txt
Executable file → Normal file
@@ -2,15 +2,15 @@ HEADER
|
||||
|
||||
|surfing| |browsing| +
|
||||
|
||||
Vimperator overrides nearly all Firefox keys in order to make browsing more
|
||||
Xulmus overrides nearly all Songbird keys in order to make browsing more
|
||||
pleasant for Vim users. On the rare occasions when you want to pass a keystroke
|
||||
to Firefox, or to the web page, and have it retain its original meaning you
|
||||
to Songbird, or to the web page, and have it retain its original meaning you
|
||||
have 2 possibilities:
|
||||
|
||||
|pass-through| |<C-z>| |CTRL-Z| +
|
||||
||CTRL-Z||
|
||||
________________________________________________________________________________
|
||||
Disable all Vimperator keys except [m]<Esc>[m] and pass them to the next event
|
||||
Disable all Xulmus keys except [m]<Esc>[m] and pass them to the next event
|
||||
handler. This is especially useful, if JavaScript controlled forms like the
|
||||
RichEdit form fields of Gmail don't work anymore. To exit this mode, press
|
||||
[m]<Esc>[m]. If you also need to pass [m]<Esc>[m] in this mode to the web page,
|
||||
@@ -21,10 +21,10 @@ ________________________________________________________________________________
|
||||
||CTRL-V||
|
||||
________________________________________________________________________________
|
||||
If you only need to pass a single key to a JavaScript form field or another
|
||||
extension prefix the key with [m]<C-v>[m]. Also works to unshadow Firefox
|
||||
shortcuts like [m]<C-o>[m] which are otherwise hidden in Vimperator. When
|
||||
Vimperator mode is temporarily disabled with [m]<C-z>[m], [m]<C-v>[m] will pass
|
||||
the next key to Vimperator instead of the web page.
|
||||
extension prefix the key with [m]<C-v>[m]. Also works to unshadow Songbird
|
||||
shortcuts like [m]<C-o>[m] which are otherwise hidden in Xulmus. When
|
||||
Xulmus mode is temporarily disabled with [m]<C-z>[m], [m]<C-v>[m] will pass
|
||||
the next key to Xulmus instead of the web page.
|
||||
________________________________________________________________________________
|
||||
|
||||
section:Opening{nbsp}web{nbsp}pages[opening]
|
||||
@@ -52,7 +52,7 @@ Each token is analyzed and in this order:
|
||||
3. Opened with the default search engine or keyword (specified with the
|
||||
'defsearch' option) if the first word is no search engine ([c]:open linus
|
||||
torvalds[c] opens a Google search for linux torvalds).
|
||||
4. Passed directly to Firefox in all other cases ([c]:open www.osnews.com,
|
||||
4. Passed directly to Songbird in all other cases ([c]:open www.osnews.com,
|
||||
www.slashdot.org[c] opens OSNews in the current, and Slashdot in a new
|
||||
background tab).
|
||||
|
||||
@@ -100,13 +100,6 @@ like [m]o[m] but preselects current URL in the [c]:open[c] query.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|:winopen| |:wopen| |:winedit|
|
||||
||:wino[pen][!] [a][arg1][a], [a][arg2][a], ...|| +
|
||||
________________________________________________________________________________
|
||||
Just like [c]:tabopen[c] but opens the resulting web page(s) in a new window.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|<MiddleMouse>| |p| +
|
||||
||p||
|
||||
________________________________________________________________________________
|
||||
@@ -286,7 +279,7 @@ section:Quitting[quitting,save-session]
|
||||
||:q[uit]||
|
||||
________________________________________________________________________________
|
||||
Quit current tab. If this is the last tab in the window, close the window. If
|
||||
this was the last window, close Vimperator. When quitting Vimperator, the
|
||||
this was the last window, close Xulmus. When quitting Xulmus, the
|
||||
session is not stored.
|
||||
________________________________________________________________________________
|
||||
|
||||
@@ -294,23 +287,16 @@ ________________________________________________________________________________
|
||||
|:qa| |:qall| |:quita| |:quitall| +
|
||||
||:quita[ll]||
|
||||
________________________________________________________________________________
|
||||
Quit Vimperator. Quit Vimperator, no matter how many tabs/windows are open.
|
||||
Quit Xulmus. Quit Xulmus, no matter how many tabs/windows are open.
|
||||
The session is not stored.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|:wc| |:wclose| |:winc| |:winclose|
|
||||
||:winc[lose]|| +
|
||||
________________________________________________________________________________
|
||||
Close window.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|:xa| |:xall| |:wq| |:wqa| |:wqall|
|
||||
||:wqa[ll]|| +
|
||||
||:xa[ll]||
|
||||
________________________________________________________________________________
|
||||
Save the session and quit. Quit Vimperator, no matter how many tabs/windows
|
||||
Save the session and quit. Quit Xulmus, no matter how many tabs/windows
|
||||
are open. The session is stored. [c]:wq[c] is different from Vim, as it
|
||||
closes the window instead of just one tab by popular demand. Complain on the
|
||||
mailing list, if you want to change that.
|
||||
@@ -327,7 +313,7 @@ ________________________________________________________________________________
|
||||
|ZZ|
|
||||
||ZZ||
|
||||
________________________________________________________________________________
|
||||
Quit and save the session. Quit Vimperator, no matter how many tabs/windows
|
||||
Quit and save the session. Quit Xulmus, no matter how many tabs/windows
|
||||
are open. The session is stored. Works like [c]:xall[c].
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
4
xulmus/locale/en-US/buffer.txt
Executable file → Normal file
4
xulmus/locale/en-US/buffer.txt
Executable file → Normal file
@@ -2,7 +2,7 @@ HEADER
|
||||
|
||||
|buffer| |document| +
|
||||
|
||||
Vimperator holds exactly one buffer object for each tab. It is usually an
|
||||
Xulmus holds exactly one buffer object for each tab. It is usually an
|
||||
(X)HTML document with advanced features.
|
||||
|
||||
section:Buffer{nbsp}information[buffer-information]
|
||||
@@ -234,7 +234,7 @@ default zoom levels are 30%, 50%, 67%, 80%, 90%, 100%, 110%, 120%, 133%, 150%,
|
||||
170%, 200%, 240%, 300%.
|
||||
|
||||
The available zoom range can be changed by setting the \'zoom.minPercent' and
|
||||
\'zoom.maxPercent' Firefox preferences. The zoom levels can be changed using
|
||||
\'zoom.maxPercent' Songbird preferences. The zoom levels can be changed using
|
||||
the \'toolkit.ZoomManager.zoomLevels' preference.
|
||||
|
||||
Note: \'toolkit.ZoomManager.zoomLevels' is specified as a list of values
|
||||
|
||||
0
xulmus/locale/en-US/cmdline.txt
Executable file → Normal file
0
xulmus/locale/en-US/cmdline.txt
Executable file → Normal file
2
xulmus/locale/en-US/developer.txt
Executable file → Normal file
2
xulmus/locale/en-US/developer.txt
Executable file → Normal file
@@ -60,7 +60,7 @@ Some notes about the code above:
|
||||
automatically marked up as an argument.
|
||||
|
||||
There are also some additional asciidoc commands specifically for writing
|
||||
Vimperator documentation:
|
||||
Xulmus documentation:
|
||||
|
||||
- *$$section:Writing{nbsp}documentation[writing-docs,documentation]$$* Creates
|
||||
a new section like _Writing Documentation_ in this help file with 2 tags.
|
||||
|
||||
4
xulmus/locale/en-US/eval.txt
Executable file → Normal file
4
xulmus/locale/en-US/eval.txt
Executable file → Normal file
@@ -53,10 +53,10 @@ passing the argument to `eval()`.
|
||||
is found, and interpret them with the JavaScript _eval()_ function.
|
||||
|
||||
The special version [c]:javascript![c] opens the JavaScript console of
|
||||
Firefox.
|
||||
Songbird.
|
||||
|
||||
[m]<Tab>[m] completion is available for [c]:javascript {cmd}<Tab>[c] (but not
|
||||
yet for the [c]:js <<EOF[c] multiline widget). Be aware that Vimperator needs
|
||||
yet for the [c]:js <<EOF[c] multiline widget). Be aware that Xulmus needs
|
||||
to run {cmd} through eval() to get the completions, which could have unwanted
|
||||
side effects.
|
||||
________________________________________________________________________________
|
||||
|
||||
45
xulmus/locale/en-US/gui.txt
Executable file → Normal file
45
xulmus/locale/en-US/gui.txt
Executable file → Normal file
@@ -2,7 +2,7 @@ HEADER
|
||||
|
||||
|gui| +
|
||||
|
||||
Although Vimperator offers the most frequently used Firefox functionality via
|
||||
Although Xulmus offers the most frequently used Songbird functionality via
|
||||
Ex and Normal mode commands there may be times when directly accessing the GUI
|
||||
is required. There are commands for accessing the menu system, standard dialogs
|
||||
and the sidebar.
|
||||
@@ -11,7 +11,7 @@ and the sidebar.
|
||||
||:emenu {menu}||
|
||||
________________________________________________________________________________
|
||||
Execute {menu} from the command line. This command provides command-line access
|
||||
to all menu items available from the main Firefox menubar. {menu} is a
|
||||
to all menu items available from the main Songbird menubar. {menu} is a
|
||||
hierarchical path to the menu item with each submenu separated by a period.
|
||||
E.g. [c]:emenu File.Open File...[c]
|
||||
________________________________________________________________________________
|
||||
@@ -20,45 +20,39 @@ ________________________________________________________________________________
|
||||
|:addo| |:addons| +
|
||||
||:addo[ns]||
|
||||
________________________________________________________________________________
|
||||
Show available Browser Extensions and Themes.
|
||||
You can add/remove/disable browser extensions from this dialog.
|
||||
Be aware that not all Firefox extensions work, because Vimperator overrides
|
||||
some key bindings and changes Firefox's GUI.
|
||||
Show available Songbird Extensions and Themes.
|
||||
You can add/remove/disable extensions from this dialog.
|
||||
Be aware that not all Songbird extensions work, because Xulmus overrides
|
||||
some key bindings and changes Songbird's GUI.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|:dia| |:dialog|
|
||||
||:dia[log] [a][firefox-dialog][a]|| +
|
||||
||:dia[log] [a][songbird-dialog][a]|| +
|
||||
________________________________________________________________________________
|
||||
Open a Firefox dialog.
|
||||
Open a Songbird dialog.
|
||||
|
||||
Available dialogs:
|
||||
`------------------`-----------------------------------
|
||||
*about* About Firefox
|
||||
*addbookmark* Add bookmark for the current page
|
||||
*about* About Songbird
|
||||
*addons* Manage Add-ons
|
||||
*bookmarks* List your bookmarks
|
||||
*checkupdates* Check for updates
|
||||
*cleardata* Clear private data
|
||||
*cookies* List your cookies
|
||||
*console* JavaScript console
|
||||
*customizetoolbar* Customize the Toolbar
|
||||
*dominspector* DOM Inspector
|
||||
*downloads* Manage Downloads
|
||||
*history* List your history
|
||||
*import* Import Preferences, Bookmarks, History, etc. from other browsers
|
||||
*openfile* Open the file selector dialog
|
||||
*pageinfo* Show information about the current page
|
||||
*pagesource* View page source
|
||||
*places* Places Organizer: Manage your bookmarks and history
|
||||
*preferences* Show Firefox preferences dialog
|
||||
*printpreview* Preview the page before printing
|
||||
*preferences* Show Songbird preferences dialog
|
||||
*printsetup* Setup the page size and orientation before printing
|
||||
*print* Show print dialog
|
||||
*saveframe* Save frame to disk
|
||||
*savepage* Save page to disk
|
||||
*searchengines* Manage installed search engines
|
||||
*selectionsource* View selection source
|
||||
*subscribe* Add a new subscription
|
||||
-------------------------------------------------------
|
||||
|
||||
________________________________________________________________________________
|
||||
@@ -67,24 +61,23 @@ ________________________________________________________________________________
|
||||
|:dl| |:downl| |:downloads| +
|
||||
||:downl[oads]||
|
||||
________________________________________________________________________________
|
||||
Show progress of current downloads. Open the original Firefox download dialog
|
||||
Show progress of current downloads. Open the original Songbird download dialog
|
||||
in a new tab. Here, downloads can be paused, canceled and resumed.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|:sbcl| |:sbclose| +
|
||||
||:sbcl[ose]||
|
||||
|:dpcl| |:dpclose| +
|
||||
||:dpcl[ose] {pane}||
|
||||
________________________________________________________________________________
|
||||
Close the sidebar window.
|
||||
Close the specified display pane.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|:sbope| |:sbopen| |:sb| |:sbar| |:sideb| |:sidebar| +
|
||||
||:sidebar {name}||
|
||||
|:dpope| |:dpopen| |:dp| |:dpane| |:dislplayp| |:dislplaypane|
|
||||
||:displaypane {pane}|| +
|
||||
________________________________________________________________________________
|
||||
Open the sidebar window. {name} is any of the menu items listed under the
|
||||
standard Firefox View->Sidebar menu. Add-ons, Preferences and Downloads are
|
||||
also available in the sidebar.
|
||||
Open the specified display pane. {pane} is any of "content pane bottom",
|
||||
"service pane bottom" or "right sidebar".
|
||||
________________________________________________________________________________
|
||||
|
||||
// vim: set filetype=asciidoc:
|
||||
|
||||
0
xulmus/locale/en-US/help.js
Executable file → Normal file
0
xulmus/locale/en-US/help.js
Executable file → Normal file
2
xulmus/locale/en-US/hints.txt
Executable file → Normal file
2
xulmus/locale/en-US/hints.txt
Executable file → Normal file
@@ -25,7 +25,7 @@ ________________________________________________________________________________
|
||||
Start QuickHint mode, but open link in a new tab. Like normal QuickHint
|
||||
mode (activated with [m]f[m]) but opens the link in a new tab. The new
|
||||
tab will be loaded in background according to the
|
||||
\'browser.tabs.loadInBackground' Firefox preference.
|
||||
\'browser.tabs.loadInBackground' Songbird preference.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|
||||
64
xulmus/locale/en-US/index.txt
Executable file → Normal file
64
xulmus/locale/en-US/index.txt
Executable file → Normal file
@@ -4,6 +4,41 @@ HEADER
|
||||
|
||||
This file contains a list of all available commands.
|
||||
|
||||
section:Player{nbsp}mode[player-index]
|
||||
|
||||
||[m]x[m]|| Play the current track +
|
||||
||[m]z[m]|| Play the previous track +
|
||||
||[m]b[m]|| Play the next track +
|
||||
||[m]c[m]|| Pause/unpause the current track +
|
||||
||[m]v[m]|| Stop playing the current track +
|
||||
||[m]t[m]|| Toggle shuffle mode +
|
||||
||[m]r[m]|| Toggle repeat mode +
|
||||
||[m]i[m]|| Select the currently playing track +
|
||||
||[m]f[m]|| Filter and play tracks +
|
||||
||[m]F[m]|| Filter and show the tracks as a view +
|
||||
||[m]h[m]|| Seek -10s +
|
||||
||[m]<Left>[m]|| Seek -10s +
|
||||
||[m]l[m]|| Seek +10s +
|
||||
||[m]<Right>[m]|| Seek -10s +
|
||||
||[m]H[m]|| Seek -1m +
|
||||
||[m]<S-Left>[m]|| Seek -10s +
|
||||
||[m]L[m]|| Seek +1m +
|
||||
||[m]<S-Right>[m]|| Seek -10s +
|
||||
||[m]+[m]|| Increase volume by 10% +
|
||||
||[m]-[m]|| Decrease volume by 10% +
|
||||
|
||||
||[m]/[m]|| Search forward for a track +
|
||||
||[m]n[m]|| Find the next track +
|
||||
||[m]N[m]|| Find the previous track +
|
||||
|
||||
// TODO: better formatting
|
||||
||<C-0>|| Rate the current track with 0 stars +
|
||||
||<C-1>|| Rate the current track with 1 stars +
|
||||
||<C-2>|| Rate the current track with 2 stars +
|
||||
||<C-3>|| Rate the current track with 3 stars +
|
||||
||<C-4>|| Rate the current track with 4 stars +
|
||||
||<C-5>|| Rate the current track with 5 stars +
|
||||
|
||||
section:Insert{nbsp}mode[insert-index]
|
||||
|
||||
||[m]<C-i>[m]|| Launch the external editor +
|
||||
@@ -24,7 +59,7 @@ section:Normal{nbsp}mode[normal-index]
|
||||
||[m]<C-u>[m]|| Scroll window upwards in the buffer +
|
||||
||[m]<C-v>[m]|| Pass through next key +
|
||||
||[m]<C-x>[m]|| Decrement last number in URL +
|
||||
||[m]<C-z>[m]|| Temporarily ignore all Vimperator key bindings +
|
||||
||[m]<C-z>[m]|| Temporarily ignore all Xulmus key bindings +
|
||||
|
||||
||[m]<Esc>[m]|| Focus content +
|
||||
|
||||
@@ -141,6 +176,18 @@ section:Command-line{nbsp}editing[ex-edit-index]
|
||||
|
||||
section:Ex{nbsp}commands[ex-cmd-index,:index]
|
||||
|
||||
||[c]:playerplay[c]|| Play the current track +
|
||||
||[c]:playerprev[c]|| Play the previous track +
|
||||
||[c]:playernext[c]|| Play the next track +
|
||||
||[c]:playerpause[c]|| Pause/unpause the current track +
|
||||
||[c]:playerstop[c]|| Stop playing the current track +
|
||||
||[c]:filter[c]|| Filter and play tracks +
|
||||
||[c]:Filter[c]|| Filter and show the tracks as a view +
|
||||
||[c]:seek[c]|| Seek to an absolute or relative position in a track +
|
||||
||[c]:volume[c]|| Set the player volume +
|
||||
||[c]:load[c]|| Load a playlist +
|
||||
||[c]:mediaview[c]|| Change the media view +
|
||||
|
||||
||[c]:![c]|| Run a command +
|
||||
||[c]:abbreviate[c]|| Abbreviate a key sequence +
|
||||
||[c]:abclear[c]|| Remove all abbreviations +
|
||||
@@ -174,6 +221,8 @@ section:Ex{nbsp}commands[ex-cmd-index,:index]
|
||||
||[c]:doautoall[c]|| Apply the autocommands matching the specified URL to all buffers +
|
||||
||[c]:doautocmd[c]|| Apply the autocommands matching the specified URL to the current buffer +
|
||||
||[c]:downloads[c]|| Show progress of current downloads +
|
||||
||[c]:displaypane[c]|| Open the specified display pane +
|
||||
||[c]:dpclose[c]|| Close the specified display pane +
|
||||
||[c]:echo[c]|| Echo the expression +
|
||||
||[c]:echoerr[c]|| Echo the expression as an error message +
|
||||
||[c]:echomsg[c]|| Echo the expression as an informational message +
|
||||
@@ -184,7 +233,7 @@ section:Ex{nbsp}commands[ex-cmd-index,:index]
|
||||
||[c]:forward[c]|| Go forward in the browser history +
|
||||
||[c]:hardcopy[c]|| Print current document +
|
||||
||[c]:help[c]|| Display help +
|
||||
||[c]:highlight[c]|| Style Vimperator +
|
||||
||[c]:highlight[c]|| Style Xulmus +
|
||||
||[c]:history[c]|| Show recently visited URLs +
|
||||
||[c]:iabbrev[c]|| Abbreviate a key sequence in Insert mode +
|
||||
||[c]:iabclear[c]|| Remove all abbreviations in Insert mode +
|
||||
@@ -203,7 +252,7 @@ section:Ex{nbsp}commands[ex-cmd-index,:index]
|
||||
||[c]:mark[c]|| Mark current location within the web page +
|
||||
||[c]:marks[c]|| Show all location marks of current web page +
|
||||
||[c]:messages[c]|| Display previously given messages +
|
||||
||[c]:mkvimperatorrc[c]|| Write current key mappings and changed options to the config file +
|
||||
||[c]:mkxulmusrc[c]|| Write current key mappings and changed options to the config file +
|
||||
||[c]:nohlsearch[c]|| Remove the search highlighting +
|
||||
||[c]:noremap[c]|| Map a key sequence without remapping keys +
|
||||
||[c]:normal[c]|| Execute Normal mode commands +
|
||||
@@ -212,7 +261,7 @@ section:Ex{nbsp}commands[ex-cmd-index,:index]
|
||||
||[c]:pageinfo[c]|| Show various page information +
|
||||
||[c]:pagestyle[c]|| Select the author style sheet to apply +
|
||||
||[c]:play[c]|| Replay a recorded macro +
|
||||
||[c]:preferences[c]|| Show Firefox preferences dialog +
|
||||
||[c]:preferences[c]|| Show Songbird preferences dialog +
|
||||
||[c]:pwd[c]|| Print the current directory name +
|
||||
||[c]:qmark[c]|| Mark a URL with a letter for quick access +
|
||||
||[c]:qmarks[c]|| Show all QuickMarks +
|
||||
@@ -224,13 +273,11 @@ section:Ex{nbsp}commands[ex-cmd-index,:index]
|
||||
||[c]:restart[c]|| Force undefined to restart +
|
||||
||[c]:runtime[c]|| Source the specified file from each directory in 'runtimepath' +
|
||||
||[c]:saveas[c]|| Save current document to disk +
|
||||
||[c]:sbclose[c]|| Close the sidebar window +
|
||||
||[c]:scriptnames[c]|| List all sourced script names +
|
||||
||[c]:set[c]|| Set an option +
|
||||
||[c]:setglobal[c]|| Set global option +
|
||||
||[c]:setlocal[c]|| Set local option +
|
||||
||[c]:sidebar[c]|| Open the sidebar window +
|
||||
||[c]:style[c]|| Style Vimperator and web sites +
|
||||
||[c]:style[c]|| Style Xulmus and web sites +
|
||||
||[c]:source[c]|| Read Ex commands from a file +
|
||||
||[c]:stop[c]|| Stop loading +
|
||||
||[c]:tab[c]|| Execute a command and tell it to output in a new tab +
|
||||
@@ -252,8 +299,6 @@ section:Ex{nbsp}commands[ex-cmd-index,:index]
|
||||
||[c]:version[c]|| Show version information +
|
||||
||[c]:viewsource[c]|| View source code of current document +
|
||||
||[c]:viusage[c]|| List all mappings with a short description +
|
||||
||[c]:winclose[c]|| Close window +
|
||||
||[c]:winopen[c]|| Open one or more URLs in a new window +
|
||||
||[c]:wqall[c]|| Save the session and quit +
|
||||
||[c]:zoom[c]|| Set zoom value of current web page +
|
||||
|
||||
@@ -284,6 +329,7 @@ section:Options[option-index]
|
||||
||'laststatus'|| Show the status line +
|
||||
||'linksearch'|| Limit the search to hyperlink text +
|
||||
||'loadplugins'|| Load plugin scripts when starting up +
|
||||
||'maxitems'|| Maximum number of items to display at once in a listing +
|
||||
||'messages'|| Number of messages to store in the message history +
|
||||
||'more'|| Pause the message list window when more than one screen of listings is displayed +
|
||||
||'newtab'|| Define which commands should output in a new tab by default +
|
||||
|
||||
0
xulmus/locale/en-US/insert.txt
Executable file → Normal file
0
xulmus/locale/en-US/insert.txt
Executable file → Normal file
43
xulmus/locale/en-US/intro.txt
Executable file → Normal file
43
xulmus/locale/en-US/intro.txt
Executable file → Normal file
@@ -1,31 +1,25 @@
|
||||
LOGO
|
||||
|
||||
+++<div style="text-align: center;">+++
|
||||
*First there was a Navigator, then there was an Explorer.
|
||||
Later it was time for a Konqueror. Now it's time for an Imperator, the
|
||||
VIMperator :)*
|
||||
+++</div>+++
|
||||
|
||||
section:Introduction[intro]
|
||||
|
||||
http://vimperator.org[Vimperator] is a free browser add-on for Firefox,
|
||||
which makes it look and behave like the http://www.vim.org[Vim]
|
||||
text editor. It has similar key bindings, and you could call it a modal
|
||||
web browser, as key bindings differ according to which mode you are in.
|
||||
http://vimperator.org/Xulmus[Xulmus] is a free media player add-on for
|
||||
Songbird, which combines the best features of the
|
||||
http://cmus.sourceforge.net[CMus] music player and the http://www.vim.org[Vim]
|
||||
text editor.
|
||||
|
||||
|warning| +
|
||||
Warning:
|
||||
To provide the most authentic Vim experience, the Firefox menubar and toolbar
|
||||
are hidden. +
|
||||
If you really need them, type: [c]:set guioptions+=mT[c] to get them back. +
|
||||
If you don't like Vimperator at all, you can uninstall it by typing
|
||||
To provide the most authentic CMus/Vim experience, the Songbird toolbar
|
||||
is hidden. +
|
||||
If you really need it, type: [c]:set guioptions+=T[c] to get it back. +
|
||||
If you don't like Xulmus at all, you can uninstall it by typing
|
||||
[c]:addons[c] and remove/disable it. +
|
||||
If you like it but can't remember the shortcuts, then press [m]F1[m] or
|
||||
[c]:help[c] to get this help window back.
|
||||
|
||||
|author| |donation| +
|
||||
Vimperator was written by mailto:stubenschrott@gmx.net[Martin Stubenschrott].
|
||||
If you appreciate my work on Vimperator and want to encourage me working on it
|
||||
Xulmus was written by mailto:prathyushthota@gmail.com[Prathyush Thota].
|
||||
If you appreciate my work on Xulmus and want to encourage me working on it
|
||||
more, you can either send me greetings, patches or make a donation:
|
||||
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
@@ -38,14 +32,15 @@ more, you can either send me greetings, patches or make a donation:
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
Of course as a believer in free open source software, only make a donation
|
||||
if you really like Vimperator and the money doesn't hurt -- otherwise just use
|
||||
if you really like Xulmus and the money doesn't hurt -- otherwise just use
|
||||
it, recommend it and like it :)
|
||||
|
||||
section:Help{nbsp}topics[overview]
|
||||
|
||||
- help:Tutorial[tutorial.html]: A quick-start tutorial for new users.
|
||||
- help:Initialization[starting.html]: How Vimperator starts up, where it reads
|
||||
//- help:Tutorial[tutorial.html]: A quick-start tutorial for new users.
|
||||
- help:Initialization[starting.html]: How Xulmus starts up, where it reads
|
||||
the config file...
|
||||
- help:Player[player.html]: Interacting with the media player.
|
||||
- help:Browsing[browsing.html]: Basic mappings and commands needed for a
|
||||
browsing session (how to open a web page or go back in history).
|
||||
- help:Buffer{nbsp}commands[buffer.html]: Operations on the current document
|
||||
@@ -65,8 +60,8 @@ section:Help{nbsp}topics[overview]
|
||||
- help:Autocommands[autocommands.html]: Automatically executing code on certain
|
||||
events.
|
||||
- help:Print[print.html]: Printing pages.
|
||||
- help:GUI[gui.html]: Accessing Firefox menus, dialogs and the sidebar.
|
||||
- help:Styling[styling.html]: Changing the styling of content pages and Vimperator itself.
|
||||
- help:GUI[gui.html]: Accessing Songbird menus, dialogs and the sidebar.
|
||||
- help:Styling[styling.html]: Changing the styling of content pages and Xulmus itself.
|
||||
- help:Messages[message.html]: A description of messages and error messages.
|
||||
- help:Developer{nbsp}information[developer.html]: How to write docs or
|
||||
plugins.
|
||||
@@ -87,11 +82,11 @@ section:Features[features]
|
||||
* Advanced completion of bookmark and history URLs (searching also in title, not only URL)
|
||||
* Vim-like statusline with a wget-like progress bar
|
||||
* Minimal GUI (easily hide useless menubar and toolbar with [c]:set guioptions=[c])
|
||||
* Ability to [c]:source[c] JavaScript files, and to use a [a]~/.vimperatorrc[a] file
|
||||
with syntax highlighting if you install scripts/vimperator.vim
|
||||
* Ability to [c]:source[c] JavaScript files, and to use a [a]~/.xulmusrc[a] file
|
||||
with syntax highlighting if you install scripts/xulmus.vim
|
||||
* Easy quick searches ([c]:open foo[c] will search for "foo" in google,
|
||||
[c]:open ebay terminator[c] will search for "terminator" on ebay)
|
||||
with support for Firefox keyword bookmarks and search engines
|
||||
with support for Songbird keyword bookmarks and search engines
|
||||
* Count supported for many commands ([m]3<C-o>[m] will go back 3 pages)
|
||||
* Beep on errors
|
||||
* Marks support ([m]ma[m] to set mark a on a web page, [m]'a[m] to go there)
|
||||
|
||||
14
xulmus/locale/en-US/map.txt
Executable file → Normal file
14
xulmus/locale/en-US/map.txt
Executable file → Normal file
@@ -58,7 +58,7 @@ Map the key sequence {lhs} to {rhs}. The {rhs} is remapped, allowing for
|
||||
nested and recursive mappings.
|
||||
|
||||
Warning: Mappings are NOT saved between sessions, make sure you put them in your
|
||||
vimperatorrc file!
|
||||
xulmusrc file!
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ Map the key sequence {lhs} to {rhs} (in Command-line mode). The {rhs} is
|
||||
remapped, allowing for nested and recursive mappings.
|
||||
|
||||
Warning: Mappings are NOT saved between sessions, make sure you put them in your
|
||||
vimperatorrc file!
|
||||
xulmusrc file!
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ Map the key sequence {lhs} to {rhs} (in Insert mode). The {rhs} is remapped,
|
||||
allowing for nested and recursive mappings.
|
||||
|
||||
Warning: Mappings are NOT saved between sessions, make sure you put them in your
|
||||
vimperatorrc file!
|
||||
xulmusrc file!
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
@@ -172,7 +172,7 @@ ________________________________________________________________________________
|
||||
|
||||
section:Abbreviations[abbreviations]
|
||||
|
||||
Vimperator can automatically replace words identified as abbreviations,
|
||||
Xulmus can automatically replace words identified as abbreviations,
|
||||
which may be used to save typing or to correct commonly misspelled
|
||||
words. An abbreviation can be one of three types that are defined by the
|
||||
types of constituent characters. Whitespace and quotes are non-keyword
|
||||
@@ -319,7 +319,7 @@ Completion can be enabled by specifying one of the following arguments to the
|
||||
*buffer* buffers
|
||||
*color* color schemes
|
||||
*command* Ex commands
|
||||
*dialog* Firefox dialogs
|
||||
*dialog* Songbird dialogs
|
||||
*dir* directories
|
||||
*environment* environment variables
|
||||
*event* autocommand events
|
||||
@@ -330,8 +330,8 @@ Completion can be enabled by specifying one of the following arguments to the
|
||||
*macro* named macros
|
||||
*mapping* user mappings
|
||||
*menu* menu items
|
||||
*option* Vimperator options
|
||||
*preference* Firefox preferences
|
||||
*option* Xulmus options
|
||||
*preference* Songbird preferences
|
||||
*search* search engines and keywords
|
||||
*shellcmd* shell commands
|
||||
*sidebar* sidebar panels
|
||||
|
||||
4
xulmus/locale/en-US/marks.txt
Executable file → Normal file
4
xulmus/locale/en-US/marks.txt
Executable file → Normal file
@@ -2,14 +2,14 @@ HEADER
|
||||
|
||||
|different-marks| |marks| +
|
||||
|
||||
Vimperator supports a number of different marks:
|
||||
Xulmus supports a number of different marks:
|
||||
|
||||
- Bookmarks which allow you to mark a web page as one of your favorites for
|
||||
easy access.
|
||||
- QuickMarks allow you to define up to 62 (a-zA-Z0-9) web sites (or groups of
|
||||
web sites) which you visit most often.
|
||||
- Local marks to store the position within a web page.
|
||||
- History is also a special type of marks, as Vimperator automatically
|
||||
- History is also a special type of marks, as Xulmus automatically
|
||||
remembers sites which you have visited in the past.
|
||||
|
||||
section:Bookmarks[bookmarks]
|
||||
|
||||
2
xulmus/locale/en-US/message.txt
Executable file → Normal file
2
xulmus/locale/en-US/message.txt
Executable file → Normal file
@@ -2,7 +2,7 @@ HEADER
|
||||
|
||||
|message-history| +
|
||||
|
||||
Vimperator stores all info and error messages in a message history. The type of
|
||||
Xulmus stores all info and error messages in a message history. The type of
|
||||
info messages output can be controlled by the 'verbose' option.
|
||||
|
||||
|:mes| |:messages| +
|
||||
|
||||
76
xulmus/locale/en-US/options.txt
Executable file → Normal file
76
xulmus/locale/en-US/options.txt
Executable file → Normal file
@@ -2,7 +2,7 @@ HEADER
|
||||
|
||||
|options| +
|
||||
|
||||
Vimperator has a number of internal variables and switches which can be set to
|
||||
Xulmus has a number of internal variables and switches which can be set to
|
||||
achieve special effects. These options come in 5 forms:
|
||||
`------------`-----------------------------------------
|
||||
*boolean* can only be on or off
|
||||
@@ -155,35 +155,35 @@ Environment variables are expanded for path options like 'cdpath' and
|
||||
'runtimepath'. The variable notation is _$VAR_ (terminated by a non-word
|
||||
character) or _$\\{VAR}_. _%VAR%_ is also supported on Windows.
|
||||
|
||||
section:Setting{nbsp}Firefox{nbsp}options[firefox-options,preferences]
|
||||
section:Setting{nbsp}Songbird{nbsp}options[songbird-options,preferences]
|
||||
|
||||
Firefox options can be viewed and set with the following commands:
|
||||
Songbird options can be viewed and set with the following commands:
|
||||
|
||||
|:prefs| |:preferences|
|
||||
||:pref[erences]||
|
||||
________________________________________________________________________________
|
||||
Show the Firefox preferences dialog. You can change the browser preferences
|
||||
from this dialog. Be aware that not all Firefox preferences work, because
|
||||
Vimperator overrides some key bindings and changes Firefox's GUI.
|
||||
Show the Songbird preferences dialog. You can change the player preferences
|
||||
from this dialog. Be aware that not all Songbird preferences work, because
|
||||
Xulmus overrides some key bindings and changes Songbird's GUI.
|
||||
________________________________________________________________________________
|
||||
|
||||
|:prefs!| |:preferences!|
|
||||
||:pref[erences]!||
|
||||
________________________________________________________________________________
|
||||
Opens about:config in the current tab where you can change advanced Firefox
|
||||
Opens about:config in the current tab where you can change advanced Songbird
|
||||
preferences.
|
||||
________________________________________________________________________________
|
||||
|
||||
|:set!| |:set-!|
|
||||
||:se[t]! {preference}={value}|| +
|
||||
________________________________________________________________________________
|
||||
Change any Firefox {preference} (those in the about:config window). You can also
|
||||
reset/delete those preferences with [c]:set! {preference}&[c].
|
||||
Change any Songbird {preference} (those in the about:config window). You can
|
||||
also reset/delete those preferences with [c]:set! {preference}&[c].
|
||||
________________________________________________________________________________
|
||||
|
||||
|overridden-preferences| +
|
||||
|
||||
Vimperator sets several Firefox preferences at startup. If this is undesirable,
|
||||
Xulmus sets several Songbird preferences at startup. If this is undesirable,
|
||||
they can be changed to a different value in your RC file using
|
||||
[c]:set! {preference}={value}[c]
|
||||
|
||||
@@ -231,7 +231,7 @@ Items which are completed at the [c]:[tab]open[c] prompt. Available items:
|
||||
`---`--------------------------------------------------------------------------------
|
||||
*s* Search engines and keyword URLs
|
||||
*f* Local files
|
||||
*l* Firefox location bar entries (bookmarks and history sorted in an intelligent way)
|
||||
*l* Songbird location bar entries (bookmarks and history sorted in an intelligent way)
|
||||
*b* Bookmarks
|
||||
*S* Suggest engines
|
||||
-------------------------------------------------------------------------------------
|
||||
@@ -253,7 +253,7 @@ schwarzenegger[c] will be exactly the same as [c]:open youtube arnold
|
||||
schwarzenegger[c]. Therefore, you need to add a keyword or search engine
|
||||
"youtube" first.
|
||||
|
||||
If 'defsearch' is empty, then Firefox will always attempt to open the
|
||||
If 'defsearch' is empty, then Songbird will always attempt to open the
|
||||
raw [a][arg][a].
|
||||
____
|
||||
|
||||
@@ -265,7 +265,7 @@ Set the external text editor.
|
||||
Sets the editor to run when [m]<C-i>[m] is pressed in INSERT and TEXTAREA
|
||||
modes.
|
||||
|
||||
Warning: Vimperator will not behave correctly if the editor forks its own
|
||||
Warning: Xulmus will not behave correctly if the editor forks its own
|
||||
process, such as with gvim without the -f argument.
|
||||
____
|
||||
|
||||
@@ -331,7 +331,7 @@ Show or hide certain GUI elements like the menu or toolbar. Supported characters
|
||||
`---`-----------
|
||||
*m* Menubar
|
||||
*T* Toolbar
|
||||
*B* Bookmark bar
|
||||
*p* Player controls
|
||||
*n* Tab number
|
||||
*N* Tab number over image
|
||||
*b* Bottom scrollbar
|
||||
@@ -439,8 +439,8 @@ ____
|
||||
||'insertmode' 'im'|| boolean (default: on)
|
||||
____
|
||||
Use Insert mode as the default for text areas.
|
||||
Makes Vimperator work in a way that Insert mode is the default mode for text areas.
|
||||
Useful if you want to use Vimperator as a modeless editor, keeping the known Firefox interface for editing text areas.
|
||||
Makes Xulmus work in a way that Insert mode is the default mode for text areas.
|
||||
Useful if you want to use Xulmus as a modeless editor, keeping the known Songbird interface for editing text areas.
|
||||
____
|
||||
|
||||
|
||||
@@ -471,12 +471,20 @@ ____
|
||||
||'loadplugins' 'lpl'|| boolean (default on)
|
||||
____
|
||||
Load plugin scripts when starting up. When on, yet unloaded plugins are
|
||||
automatically loaded after the vimperatorrc file has been sourced. To
|
||||
automatically loaded after the xulmusrc file has been sourced. To
|
||||
load plugins earlier, use the [c]:loadplugins[c] command within the
|
||||
vimperatorrc.
|
||||
xulmusrc.
|
||||
____
|
||||
|
||||
|
||||
|\'maxitems'|
|
||||
||'maxitems'|| number (default: 20)
|
||||
____
|
||||
Maximum number of items to display at once in a listing.
|
||||
____
|
||||
|
||||
|
||||
|
||||
|\'msgs'| |\'messages'|
|
||||
||'messages' 'msgs'|| number (default: 100)
|
||||
____
|
||||
@@ -555,12 +563,12 @@ they always open in a new tab. Possible values:
|
||||
.---`------------------------------------------------------------------------------------------------
|
||||
*0* Force to open in the current tab (Warning: this can stop some web sites from working correctly!)
|
||||
*1* Always open in a new tab
|
||||
*2* Open in a new window if it has a specific requested size (default in Firefox)
|
||||
*2* Open in a new window if it has a specific requested size (default in Songbird)
|
||||
*3* Always open in a new window
|
||||
*4* Open in the same tab unless it has a specific requested size
|
||||
-----------------------------------------------------------------------------------------------------
|
||||
|
||||
Note: This option does not change the popup blocker of Firefox in any way.
|
||||
Note: This option does not change the popup blocker of Songbird in any way.
|
||||
____
|
||||
|
||||
|
||||
@@ -570,7 +578,7 @@ ____
|
||||
Speed up first time history/bookmark completion
|
||||
|
||||
History access can be quite slow for a large history.
|
||||
Vimperator maintains a cache to speed it up significantly on subsequent access.
|
||||
Xulmus maintains a cache to speed it up significantly on subsequent access.
|
||||
In order to also speed up first time access, it is cached at startup, if this option is set (recommended).
|
||||
____
|
||||
|
||||
@@ -587,23 +595,23 @@ link elements are those defined by 'hinttags'.
|
||||
____
|
||||
|
||||
|
||||
|$VIMPERATOR_RUNTIME|
|
||||
|$XULMUS_RUNTIME|
|
||||
|\'rtp'| |\'runtimepath'|
|
||||
||'runtimepath' 'rtp'|| stringlist
|
||||
____
|
||||
(default: _$VIMPERATOR_RUNTIME_ or Unix, Mac: "\~/.vimperator", Windows: "\~/vimperator")
|
||||
(default: _$XULMUS_RUNTIME_ or Unix, Mac: "\~/.xulmus", Windows: "\~/xulmus")
|
||||
|
||||
List of directories searched for runtime files: +
|
||||
colors/ +
|
||||
macros/ +
|
||||
plugin/ +
|
||||
|
||||
Example: [c]:set runtimepath=\~/myvimperator,\~/.vimperator[c] +
|
||||
This will search for plugins in both "\~/myvimperator/plugin" and
|
||||
"\~/.vimperator/plugin"
|
||||
Example: [c]:set runtimepath=\~/myxulmus,\~/.xulmus[c] +
|
||||
This will search for plugins in both "\~/myxulmus/plugin" and
|
||||
"\~/.xulmus/plugin"
|
||||
|
||||
On startup, if the environment variable _$VIMPERATOR_RUNTIME_ does not
|
||||
exist, Vimperator will set it to match this value.
|
||||
On startup, if the environment variable _$XULMUS_RUNTIME_ does not
|
||||
exist, Xulmus will set it to match this value.
|
||||
____
|
||||
|
||||
|
||||
@@ -690,13 +698,13 @@ ____
|
||||
|
||||
|
||||
|\'titlestring'|
|
||||
||'titlestring'|| string (default: "Vimperator")
|
||||
||'titlestring'|| string (default: "Xulmus")
|
||||
____
|
||||
Change the title of the browser window.
|
||||
Vimperator changes the browser title from "Title of web page - Mozilla Firefox" to
|
||||
"Title of web page - Vimperator". +
|
||||
Change the title of the player window.
|
||||
Xulmus changes the player title from "Songbird" to
|
||||
"Title of tab - Xulmus". +
|
||||
If you don't like that, you can restore it with:
|
||||
[c]:set titlestring=Mozilla\ Firefox[c].
|
||||
[c]:set titlestring=Songbird[c].
|
||||
____
|
||||
|
||||
|
||||
@@ -725,7 +733,7 @@ ____
|
||||
||'verbose' 'vbs'|| number (default: 1)
|
||||
____
|
||||
Define which info messages are displayed.
|
||||
When bigger than zero, Vimperator will give messages about what it is doing.
|
||||
When bigger than zero, Xulmus will give messages about what it is doing.
|
||||
These can be viewed at any time with the [c]:messages[c] command. The highest
|
||||
value is 15, being the most verbose mode.
|
||||
|
||||
|
||||
0
xulmus/locale/en-US/overlay.dtd
Executable file → Normal file
0
xulmus/locale/en-US/overlay.dtd
Executable file → Normal file
0
xulmus/locale/en-US/overlay.properties
Executable file → Normal file
0
xulmus/locale/en-US/overlay.properties
Executable file → Normal file
4
xulmus/locale/en-US/pattern.txt
Executable file → Normal file
4
xulmus/locale/en-US/pattern.txt
Executable file → Normal file
@@ -2,9 +2,9 @@ HEADER
|
||||
|
||||
|text-search-commands| +
|
||||
|
||||
Vimperator provides a Vim-like interface to Firefox's standard text search
|
||||
Xulmus provides a Vim-like interface to Songbird's standard text search
|
||||
functionality. There is no support for using regular expressions in search
|
||||
commands as Firefox does not provide native regexp support. It is unlikely that
|
||||
commands as Songbird does not provide native regexp support. It is unlikely that
|
||||
this will ever be available.
|
||||
|
||||
|/| +
|
||||
|
||||
217
xulmus/locale/en-US/player.txt
Normal file
217
xulmus/locale/en-US/player.txt
Normal file
@@ -0,0 +1,217 @@
|
||||
HEADER
|
||||
|
||||
|player-mode| |player| +
|
||||
|
||||
The following features apply to Player mode which is activated when the media
|
||||
tab has focus.
|
||||
|
||||
section:Playing{nbsp}tracks[playing-tracks]
|
||||
|
||||
|p_x| |:playerp| |:playerplay|
|
||||
||:playerp[lay]|| +
|
||||
||x||
|
||||
________________________________________________________________________________
|
||||
Play the current track.
|
||||
________________________________________________________________________________
|
||||
|
||||
|p_z| |:playerpr| |:playerprev|
|
||||
||:playerpr[ev]|| +
|
||||
||z||
|
||||
________________________________________________________________________________
|
||||
Play the previous track.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|p_b| |:playern| |:playernext|
|
||||
||:playern[ext]|| +
|
||||
||b||
|
||||
________________________________________________________________________________
|
||||
Play the next track.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|p_c| |:playerpa| |:playerpause|
|
||||
||:playerpa[use]|| +
|
||||
||c||
|
||||
________________________________________________________________________________
|
||||
Pause/unpause the current track.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|p_v| |:players| |:playerstop|
|
||||
||:players[top]|| +
|
||||
||v||
|
||||
________________________________________________________________________________
|
||||
Stop playing the current track.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|p_x|
|
||||
||x||
|
||||
________________________________________________________________________________
|
||||
Toggle shuffle mode.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|p_r|
|
||||
||r||
|
||||
________________________________________________________________________________
|
||||
Toggle repeat mode.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|p_i|
|
||||
||i||
|
||||
________________________________________________________________________________
|
||||
Select the currently playing track.
|
||||
________________________________________________________________________________
|
||||
|
||||
section:Filtering{nbsp}the{nbsp}library[filter,filtering]
|
||||
|
||||
|p_f| |:f| |:filter|
|
||||
||:f[ilter] {artist} [a][album][a] [a][track][a]|| +
|
||||
||f||
|
||||
________________________________________________________________________________
|
||||
Filter and play tracks. If only {artist} is specified then all tracks for that
|
||||
artist are played in album order. If [a][album][a] is also specified then all
|
||||
tracks for that album are played. A specific track can be specified with
|
||||
[a][track][a].
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|p_F| |:F| |:Filter|
|
||||
||:F[ilter] {keywords}|| +
|
||||
||F||
|
||||
________________________________________________________________________________
|
||||
Filter and show the tracks as a view. The tracks are filtered by the {keywords}
|
||||
provided as arguments. This text search applies over the default filter
|
||||
properties, namely: Genre, Artist, Album and Track.
|
||||
________________________________________________________________________________
|
||||
|
||||
section:Seeking{nbsp}to{nbsp}a{nbsp}track{nbsp}position[seeking]
|
||||
|
||||
|p_<Left>| |p_h|
|
||||
||[count]h||
|
||||
________________________________________________________________________________
|
||||
Seek +10s.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|p_<Right>| |p_l|
|
||||
||[count]l||
|
||||
________________________________________________________________________________
|
||||
Seek -10s.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|p_<S-Left>| |p_H|
|
||||
||[count]H||
|
||||
________________________________________________________________________________
|
||||
Seek +1m.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|p_<S-Right>| |p_L|
|
||||
||[count]L||
|
||||
________________________________________________________________________________
|
||||
Seek -1m.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|:see| |:seek|
|
||||
||:see[k] {[HH:]MM:SS]}|| +
|
||||
||:see[k] +{time[hms]} | -{time[hms]}|| +
|
||||
________________________________________________________________________________
|
||||
Seek to an absolute or relative position in a track. The position can be given
|
||||
in seconds (s), minutes (m), or hours (h). If the unit is not specified then
|
||||
seconds is assumed. The position is absolute unless the value is prefixed with
|
||||
"-" or "+".
|
||||
|
||||
Positions may also be specified in [a][HH:]MM:SS[a] format.
|
||||
________________________________________________________________________________
|
||||
|
||||
section:Adjusting{nbsp}the{nbsp}volume[volume]
|
||||
|
||||
|p_+| |p_=|
|
||||
||+|| +
|
||||
||=||
|
||||
________________________________________________________________________________
|
||||
Increase volume by 10%.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|p_-|
|
||||
||-|| +
|
||||
________________________________________________________________________________
|
||||
Decrease volume by 10%.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|:vol| |:volume|
|
||||
||:vol[ume] {value}|| +
|
||||
||:vol[ume] +{value} | -{value}|| +
|
||||
________________________________________________________________________________
|
||||
Set the player volume. {value} can be an absolute value between 0 and 100% or a
|
||||
relative value if prefixed with "-" or "+".
|
||||
________________________________________________________________________________
|
||||
|
||||
section:Managing{nbsp}playlists[playlists]
|
||||
|
||||
|:load|
|
||||
||:load [a][playlist][a]|| +
|
||||
________________________________________________________________________________
|
||||
Load [a][playlist][a]. If no playlist is specified then the main library view
|
||||
is loaded.
|
||||
________________________________________________________________________________
|
||||
|
||||
section:Changing{nbsp}media{nbsp}views[media-view,view]
|
||||
|
||||
|:mediav| |:mediaview|
|
||||
||:mediav[iew] {view}|| +
|
||||
________________________________________________________________________________
|
||||
Change the media view to {view}. This can only be run when the media tab is the
|
||||
current tab.
|
||||
________________________________________________________________________________
|
||||
|
||||
section:Search{nbsp}commands[search]
|
||||
|
||||
|p_/|
|
||||
||/{pattern}<CR>|| +
|
||||
________________________________________________________________________________
|
||||
Search forward for a track matching {pattern} in the visible media view.
|
||||
________________________________________________________________________________
|
||||
|
||||
//|p_?|
|
||||
//||?{pattern}<CR>|| +
|
||||
//________________________________________________________________________________
|
||||
//Search backwards for a track matching {pattern} in the visible media view.
|
||||
//________________________________________________________________________________
|
||||
|
||||
|p_n|
|
||||
||n|| +
|
||||
________________________________________________________________________________
|
||||
Find the next track. Repeats the last search. If the search hits BOTTOM of the
|
||||
view, it continues from TOP.
|
||||
________________________________________________________________________________
|
||||
|
||||
|p_N|
|
||||
||N|| +
|
||||
________________________________________________________________________________
|
||||
Find the previous track. Repeats the last search in the opposite direction. If
|
||||
the search hits TOP of the view, it continues from BOTTTOM.
|
||||
________________________________________________________________________________
|
||||
|
||||
section:Rating{nbsp}tracks[rating]
|
||||
|
||||
|p_<C-5>| |p_<C-4>| |p_<C-3>| |p_<C-2>| |p_<C-1>| |p_<C-0>|
|
||||
||<C-0>|| +
|
||||
||<C-1>|| +
|
||||
||<C-2>|| +
|
||||
||<C-3>|| +
|
||||
||<C-4>|| +
|
||||
||<C-5>|| +
|
||||
________________________________________________________________________________
|
||||
Rate the current track with N stars.
|
||||
________________________________________________________________________________
|
||||
|
||||
// vim: set filetype=asciidoc:
|
||||
2
xulmus/locale/en-US/print.txt
Executable file → Normal file
2
xulmus/locale/en-US/print.txt
Executable file → Normal file
@@ -18,7 +18,7 @@ As above, but write the output to {filename}.
|
||||
Note: Not available on Windows.
|
||||
________________________________________________________________________________
|
||||
|
||||
section:Firefox{nbsp}printing{nbsp}dialogs[firefox-print-dialogs]
|
||||
section:Songbird{nbsp}printing{nbsp}dialogs[songbird-print-dialogs]
|
||||
|
||||
The "Print Preview" and "Page Setup" dialogs can be opened via the [c]:dialog[c]
|
||||
command
|
||||
|
||||
18
xulmus/locale/en-US/repeat.txt
Executable file → Normal file
18
xulmus/locale/en-US/repeat.txt
Executable file → Normal file
@@ -2,7 +2,7 @@ HEADER
|
||||
|
||||
|repeat| +
|
||||
|
||||
Vimperator can repeat a number of commands and record macros.
|
||||
Xulmus can repeat a number of commands and record macros.
|
||||
|
||||
section:Macros[macros,complex-repeat]
|
||||
|
||||
@@ -52,7 +52,7 @@ ____________________________________________________________________________
|
||||
||[count].||
|
||||
____________________________________________________________________________
|
||||
Repeat the last keyboard mapping [count] times. Note that, unlike in Vim, this
|
||||
does not apply solely to editing commands, mainly because Vimperator doesn't
|
||||
does not apply solely to editing commands, mainly because Xulmus doesn't
|
||||
have them.
|
||||
____________________________________________________________________________
|
||||
|
||||
@@ -85,8 +85,8 @@ function hello2() {
|
||||
--------------------------------------------------------------------------------
|
||||
are only available within the scope of the script.
|
||||
|
||||
The _.vimperatorrc_ file in your home directory and any files in
|
||||
_\~/.vimperator/plugin/_ are always sourced at startup. \~ is supported as a
|
||||
The _.xulmusrc_ file in your home directory and any files in
|
||||
_\~/.xulmus/plugin/_ are always sourced at startup. \~ is supported as a
|
||||
shortcut for the _$HOME_ directory. If [!] is specified, errors are not
|
||||
printed.
|
||||
________________________________________________________________________________
|
||||
@@ -96,10 +96,10 @@ ________________________________________________________________________________
|
||||
||:loadplugins|| +
|
||||
________________________________________________________________________________
|
||||
Load all unloaded plugins immediately. Because plugins are automatically
|
||||
loaded after vimperatorrc is sourced, this command must be placed early
|
||||
in the vimperatorrc file if vimperatorrc also includes commands that are
|
||||
loaded after xulmusrc is sourced, this command must be placed early
|
||||
in the xulmusrc file if xulmusrc also includes commands that are
|
||||
implemented by plugins. Additionally, this command allows for sourcing
|
||||
new plugins without restarting Vimperator.
|
||||
new plugins without restarting Xulmus.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@ ________________________________________________________________________________
|
||||
|:fini| |:finish|
|
||||
||:fini[sh]|| +
|
||||
________________________________________________________________________________
|
||||
Stop sourcing a script file. This can only be called from within a Vimperator
|
||||
Stop sourcing a script file. This can only be called from within a Xulmus
|
||||
script file.
|
||||
________________________________________________________________________________
|
||||
|
||||
@@ -136,7 +136,7 @@ Profile a piece of code or a command. Run {code} [count] times (default 1)
|
||||
and returns the elapsed time. {code} is always passed to JavaScript's eval(),
|
||||
which might be slow, so take the results with a grain of salt.
|
||||
|
||||
If {code} starts with a [c]:[c], it is executed as a Vimperator command.
|
||||
If {code} starts with a [c]:[c], it is executed as a Xulmus command.
|
||||
|
||||
Use the special version with [!] if you just want to run any command multiple
|
||||
times without showing profiling statistics.
|
||||
|
||||
26
xulmus/locale/en-US/starting.txt
Executable file → Normal file
26
xulmus/locale/en-US/starting.txt
Executable file → Normal file
@@ -1,22 +1,22 @@
|
||||
HEADER
|
||||
|
||||
Vimperator does not yet read any command-line options. When it does, they will
|
||||
Xulmus does not yet read any command-line options. When it does, they will
|
||||
be documented here.
|
||||
|
||||
section:Initialization[initialization,startup]
|
||||
|
||||
At startup, Vimperator completes the following tasks in order.
|
||||
At startup, Xulmus completes the following tasks in order.
|
||||
|
||||
1. Vimperator can perform user initialization commands. When
|
||||
1. Xulmus can perform user initialization commands. When
|
||||
one of the following is successfully located, it is executed, and no
|
||||
further locations are tried.
|
||||
|
||||
a. |$VIMPERATOR_INIT|
|
||||
_$VIMPERATOR_INIT_ -- May contain a single Ex command (e.g.,
|
||||
a. |$XULMUS_INIT|
|
||||
_$XULMUS_INIT_ -- May contain a single Ex command (e.g.,
|
||||
"[c]:source {file}[c]").
|
||||
b. [a]\~/_vimperatorrc[a] -- Windows only. If this file exists, its contents
|
||||
b. [a]\~/_xulmusrc[a] -- Windows only. If this file exists, its contents
|
||||
are executed.
|
||||
c. [a]\~/.vimperatorrc[a] -- If this file exists, its contents are executed.
|
||||
c. [a]\~/.xulmusrc[a] -- If this file exists, its contents are executed.
|
||||
|
||||
2. If 'exrc' is set, then any RC file in the current directory is also sourced.
|
||||
|
||||
@@ -31,18 +31,18 @@ command).
|
||||
The user's ~ (i.e., "home") directory is determined as follows:
|
||||
|
||||
* On Unix and Mac, the environment variable _$HOME_ is used.
|
||||
* On Windows, Vimperator checks for the existence of _%HOME%_, then
|
||||
* On Windows, Xulmus checks for the existence of _%HOME%_, then
|
||||
_%USERPROFILE%_, and then _%HOMEDRIVE%%HOMEPATH%_. It uses the first one
|
||||
it finds.
|
||||
|
||||
section:Saving{nbsp}settings[save-settings]
|
||||
|
||||
|:mkv| |:mkvimperatorrc|
|
||||
||:mkv[imperatorrc][!] [a][file][a]|| +
|
||||
|:mkx| |:mkxulmusrc|
|
||||
||:mkx[ulmusrc][!] [a][file][a]|| +
|
||||
________________________________________________________________________________
|
||||
Write current key mappings and changed options to [a][file][a]. If no
|
||||
[a][file][a] is specified then _~/.vimperatorrc_ is written unless this file
|
||||
already exists. The special version [c]:mkvimperatorrc![c] will overwrite
|
||||
[a][file][a] is specified then _~/.xulmusrc_ is written unless this file
|
||||
already exists. The special version [c]:mkxulmusrc![c] will overwrite
|
||||
[a][file][a] if it exists.
|
||||
|
||||
Warning: this differs from Vim's behavior which defaults to writing the file
|
||||
@@ -54,7 +54,7 @@ section:Restarting[restarting]
|
||||
|:res| |:restart| +
|
||||
||:res[tart]||
|
||||
________________________________________________________________________________
|
||||
Force the browser to restart. Useful when installing extensions.
|
||||
Force Xulmus to restart. Useful when installing extensions.
|
||||
________________________________________________________________________________
|
||||
|
||||
// vim: set filetype=asciidoc:
|
||||
|
||||
10
xulmus/locale/en-US/styling.txt
Executable file → Normal file
10
xulmus/locale/en-US/styling.txt
Executable file → Normal file
@@ -2,9 +2,9 @@ HEADER
|
||||
|
||||
|styling| +
|
||||
|
||||
Vimperator allows you to style both the browser and any web pages you view. All
|
||||
Xulmus allows you to style both the player and any web pages you view. All
|
||||
styling is specified via CSS. Although you may style any user interface element
|
||||
via the [c]:style[c] command, most Vimperator elements can be styled with the
|
||||
via the [c]:style[c] command, most Xulmus elements can be styled with the
|
||||
[c]:highlight[c] command, for convenience.
|
||||
|
||||
|E185| |:colo| |:colorscheme| +
|
||||
@@ -22,13 +22,13 @@ ________________________________________________________________________________
|
||||
________________________________________________________________________________
|
||||
Highlight {group} with {css}. Normally, {css} is checked for
|
||||
valid syntax before it's applied. Once you're certain it's
|
||||
valid, [!] will override the check, to speed Vimperator startup.
|
||||
valid, [!] will override the check, to speed Xulmus startup.
|
||||
{selector} can be any valid CSS selector, such as [c]:hover[c], and
|
||||
if provided will restrict the match to matching elements.
|
||||
|
||||
Valid groups are:
|
||||
`--------------------`-----------------------------------
|
||||
*Bell* Vimperator's visual bell
|
||||
*Bell* Xulmus's visual bell
|
||||
*Boolean* A JavaScript Boolean object
|
||||
*CmdLine* The command line
|
||||
*CmdOutput*
|
||||
@@ -102,7 +102,7 @@ ________________________________________________________________________________
|
||||
|:sty| |:style| +
|
||||
||:sty[le][!] [-name={name}] [-append] {filter} [{css}]|| +
|
||||
________________________________________________________________________________
|
||||
Add CSS styles to the browser or to web pages. {filter} is a comma
|
||||
Add CSS styles to the player or to web pages. {filter} is a comma
|
||||
separated list of URLs to match. URLs ending with *\** are matched as
|
||||
prefixes, URLs not containing any *:* or */* characters are
|
||||
matched as domains. If {name} (short option: [c]-n[c]) is provided, any
|
||||
|
||||
31
xulmus/locale/en-US/tabs.txt
Executable file → Normal file
31
xulmus/locale/en-US/tabs.txt
Executable file → Normal file
@@ -199,20 +199,21 @@ Like [m]d[m] but selects the tab to the left of the deleted tab.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|u| |:u| |:undo|
|
||||
||:[count]u[ndo] [a][url][a]|| +
|
||||
||[count]u||
|
||||
________________________________________________________________________________
|
||||
Undo closing of a tab. If a count is given, don't undo the last but the
|
||||
[count]th last closed tab. With [a][url][a] restores the tab matching the URL.
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|:undoa| |:undoall| +
|
||||
||:undoa[ll]||
|
||||
________________________________________________________________________________
|
||||
Undo closing of all closed tabs. Firefox stores up to 10 closed tabs, even
|
||||
after a browser restart.
|
||||
________________________________________________________________________________
|
||||
// FIXME: No undo in Songbird for now.
|
||||
//|u| |:u| |:undo|
|
||||
//||:[count]u[ndo] [a][url][a]|| +
|
||||
//||[count]u||
|
||||
//________________________________________________________________________________
|
||||
//Undo closing of a tab. If a count is given, don't undo the last but the
|
||||
//[count]th last closed tab. With [a][url][a] restores the tab matching the URL.
|
||||
//________________________________________________________________________________
|
||||
//
|
||||
//
|
||||
//|:undoa| |:undoall| +
|
||||
//||:undoa[ll]||
|
||||
//________________________________________________________________________________
|
||||
//Undo closing of all closed tabs. Songbird stores up to 10 closed tabs, even
|
||||
//after a browser restart.
|
||||
//________________________________________________________________________________
|
||||
|
||||
// vim: set filetype=asciidoc:
|
||||
|
||||
0
xulmus/locale/en-US/tutorial.txt
Executable file → Normal file
0
xulmus/locale/en-US/tutorial.txt
Executable file → Normal file
4
xulmus/locale/en-US/various.txt
Executable file → Normal file
4
xulmus/locale/en-US/various.txt
Executable file → Normal file
@@ -34,14 +34,14 @@ Run a command. Runs {cmd} through system() and displays its output. Any \'!' in
|
||||
backslash before the \'!', then that backslash is removed.
|
||||
|
||||
Warning: Input redirection (< foo) not done, also do not run commands which
|
||||
require stdin or it will hang Firefox!
|
||||
require stdin or it will hang Songbird!
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
|:ve| |:version| +
|
||||
||:ve[rsion][!]||
|
||||
________________________________________________________________________________
|
||||
Show version information. You can show the Firefox version page with
|
||||
Show version information. You can show the Songbird version page with
|
||||
[c]:version![c].
|
||||
________________________________________________________________________________
|
||||
|
||||
|
||||
0
xulmus/locale/en-US/xhtml11.css
Executable file → Normal file
0
xulmus/locale/en-US/xhtml11.css
Executable file → Normal file
BIN
xulmus/skin/icon.png
Executable file → Normal file
BIN
xulmus/skin/icon.png
Executable file → Normal file
Binary file not shown.
|
Before Width: | Height: | Size: 514 B After Width: | Height: | Size: 465 B |
0
xulmus/xulmusrc.example
Executable file → Normal file
0
xulmus/xulmusrc.example
Executable file → Normal file
Reference in New Issue
Block a user