1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-01-09 13:54:12 +01:00
This commit is contained in:
Kris Maglione
2009-03-30 01:14:46 -04:00
113 changed files with 1839 additions and 712 deletions

View File

@@ -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
View 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
View File

@@ -1,2 +1,3 @@
2009-XX-XX:
* version 0.1 (probably)
2009-03-28:
* version 0.1
* first public release

View File

@@ -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
View File

0
xulmus/components/chrome-data.js Executable file → Normal file
View File

143
xulmus/content/bookmarks.js Executable file → Normal file
View 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
View 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
View File

851
xulmus/content/player.js Executable file → Normal file
View 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

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
View 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
View File

0
xulmus/contrib/vim/Makefile Executable file → Normal file
View File

0
xulmus/contrib/vim/ftdetect/xulmus.vim Executable file → Normal file
View File

0
xulmus/contrib/vim/mkvimball.txt Executable file → Normal file
View File

0
xulmus/contrib/vim/syntax/xulmus.vim Executable file → Normal file
View File

45
xulmus/install.rdf Executable file → Normal file
View 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
View 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
View 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
View 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
View 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
View File

2
xulmus/locale/en-US/developer.txt Executable file → Normal file
View 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
View 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
View 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
View File

2
xulmus/locale/en-US/hints.txt Executable file → Normal file
View 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
View 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
View File

43
xulmus/locale/en-US/intro.txt Executable file → Normal file
View 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
View 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
View 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
View 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
View 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
View File

0
xulmus/locale/en-US/overlay.properties Executable file → Normal file
View File

4
xulmus/locale/en-US/pattern.txt Executable file → Normal file
View 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.
|/| +

View 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
View 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
View 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
View 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
View 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
View 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
View File

4
xulmus/locale/en-US/various.txt Executable file → Normal file
View 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
View 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
View File