mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-23 06:38:12 +01:00
more refactoring
This commit is contained in:
@@ -194,6 +194,10 @@ vimperator.Buffer = function (browserModes) //{{{
|
|||||||
vimperator.options.setPref("accessibility.browsewithcaret", true);
|
vimperator.options.setPref("accessibility.browsewithcaret", true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
vimperator.mappings.add(modes, ["<C-c>"],
|
||||||
|
"Stop loading",
|
||||||
|
function() { BrowserStop(); });
|
||||||
|
|
||||||
// scrolling
|
// scrolling
|
||||||
vimperator.mappings.add(modes, ["j", "<Down>", "<C-e>"],
|
vimperator.mappings.add(modes, ["j", "<Down>", "<C-e>"],
|
||||||
"Scroll document down",
|
"Scroll document down",
|
||||||
|
|||||||
@@ -464,7 +464,55 @@ vimperator.Events = function () //{{{
|
|||||||
}
|
}
|
||||||
}, 100);
|
}, 100);
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////}}}
|
||||||
|
////////////////////// MAPPINGS ////////////////////////////////////////////////
|
||||||
|
/////////////////////////////////////////////////////////////////////////////{{{
|
||||||
|
|
||||||
|
vimperator.mappings.add(vimperator.modes.all,
|
||||||
|
["<Esc>", "<C-[>"], "Focus content",
|
||||||
|
function () { vimperator.events.onEscape(); });
|
||||||
|
|
||||||
|
// add the ":" mapping in all but insert mode mappings
|
||||||
|
vimperator.mappings.add([vimperator.modes.NORMAL, vimperator.modes.VISUAL, vimperator.modes.HINTS, vimperator.modes.MESSAGE, vimperator.modes.CARET, vimperator.modes.TEXTAREA],
|
||||||
|
[":"], "Enter command line mode",
|
||||||
|
function () { vimperator.commandline.open(":", "", vimperator.modes.EX); });
|
||||||
|
|
||||||
|
// focus events
|
||||||
|
vimperator.mappings.add([vimperator.modes.NORMAL, vimperator.modes.VISUAL, vimperator.modes.CARET],
|
||||||
|
["<Tab>"], "Advance keyboard focus",
|
||||||
|
function () { document.commandDispatcher.advanceFocus(); });
|
||||||
|
|
||||||
|
vimperator.mappings.add([vimperator.modes.NORMAL, vimperator.modes.VISUAL, vimperator.modes.CARET, vimperator.modes.INSERT, vimperator.modes.TEXTAREA],
|
||||||
|
["<S-Tab>"], "Rewind keyboard focus",
|
||||||
|
function () { document.commandDispatcher.rewindFocus(); });
|
||||||
|
|
||||||
|
vimperator.mappings.add(vimperator.modes.all,
|
||||||
|
["<C-q>"], "Temporarily quit Vimperator mode",
|
||||||
|
function () { vimperator.modes.passAllKeys = true; });
|
||||||
|
|
||||||
|
vimperator.mappings.add(vimperator.modes.all,
|
||||||
|
["<C-v>"], "Pass through next key",
|
||||||
|
function () { vimperator.modes.passNextKey = true; });
|
||||||
|
|
||||||
|
vimperator.mappings.add(vimperator.modes.all,
|
||||||
|
["<Nop>"], "Do nothing",
|
||||||
|
function () { return; });
|
||||||
|
|
||||||
|
// macros
|
||||||
|
vimperator.mappings.add([vimperator.modes.NORMAL, vimperator.modes.MESSAGE],
|
||||||
|
["q"], "Record a key sequence into a macro",
|
||||||
|
function (arg) { vimperator.events.startRecording(arg); },
|
||||||
|
{ flags: vimperator.Mappings.flags.ARGUMENT });
|
||||||
|
|
||||||
|
vimperator.mappings.add([vimperator.modes.NORMAL, vimperator.modes.MESSAGE],
|
||||||
|
["@"], "Play a macro",
|
||||||
|
function (count, arg)
|
||||||
|
{
|
||||||
|
if (count < 1) count = 1;
|
||||||
|
while (count--)
|
||||||
|
vimperator.events.playMacro(arg);
|
||||||
|
},
|
||||||
|
{ flags: vimperator.Mappings.flags.ARGUMENT | vimperator.Mappings.flags.COUNT });
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////}}}
|
/////////////////////////////////////////////////////////////////////////////}}}
|
||||||
////////////////////// PUBLIC SECTION //////////////////////////////////////////
|
////////////////////// PUBLIC SECTION //////////////////////////////////////////
|
||||||
|
|||||||
@@ -355,47 +355,8 @@ vimperator.Mappings = function () //{{{
|
|||||||
// NORMAL mode
|
// NORMAL mode
|
||||||
// {{{
|
// {{{
|
||||||
|
|
||||||
// vimperator management
|
|
||||||
addDefaultMap(new vimperator.Map(vimperator.modes.all, ["<F1>"],
|
|
||||||
function () { vimperator.commands.help(); },
|
|
||||||
{ shortHelp: "Open help window" }
|
|
||||||
));
|
|
||||||
addDefaultMap(new vimperator.Map(vimperator.modes.all, ["<Esc>", "<C-[>"],
|
|
||||||
function () { vimperator.events.onEscape() },
|
|
||||||
{ shortHelp: "Focus content" }
|
|
||||||
));
|
|
||||||
// add the ":" mapping in all but insert mode mappings
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL, vimperator.modes.VISUAL, vimperator.modes.HINTS, vimperator.modes.MESSAGE, vimperator.modes.CARET, vimperator.modes.TEXTAREA], [":"],
|
|
||||||
function () { vimperator.commandline.open(":", "", vimperator.modes.EX); },
|
|
||||||
{ shortHelp: "Start command line mode" }
|
|
||||||
));
|
|
||||||
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL, vimperator.modes.VISUAL, vimperator.modes.CARET], ["<Tab>"],
|
|
||||||
function () { document.commandDispatcher.advanceFocus(); },
|
|
||||||
{ shortHelp: "Advance keyboard focus" }
|
|
||||||
));
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL, vimperator.modes.VISUAL, vimperator.modes.CARET, vimperator.modes.INSERT, vimperator.modes.TEXTAREA], ["<S-Tab>"],
|
|
||||||
function () { document.commandDispatcher.rewindFocus(); },
|
|
||||||
{ shortHelp: "Rewind keyboard focus" }
|
|
||||||
));
|
|
||||||
|
|
||||||
addDefaultMap(new vimperator.Map(vimperator.modes.all, ["<C-q>"],
|
|
||||||
function () { vimperator.modes.passAllKeys = true; },
|
|
||||||
{ shortHelp: "Temporarily quit Vimperator mode" }
|
|
||||||
));
|
|
||||||
addDefaultMap(new vimperator.Map(vimperator.modes.all, ["<C-v>"],
|
|
||||||
function () { vimperator.modes.passNextKey = true; },
|
|
||||||
{ shortHelp: "Pass through next key" }
|
|
||||||
));
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["<C-c>"],
|
|
||||||
function() { BrowserStop(); },
|
|
||||||
{ shortHelp: "Stop loading" }
|
|
||||||
));
|
|
||||||
addDefaultMap(new vimperator.Map(vimperator.modes.all, ["<Nop>"],
|
|
||||||
function () { return; },
|
|
||||||
{ shortHelp: "Do nothing" }
|
|
||||||
));
|
|
||||||
|
|
||||||
|
// move to bookmarks.js:
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["a"],
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["a"],
|
||||||
function ()
|
function ()
|
||||||
{
|
{
|
||||||
@@ -410,6 +371,8 @@ vimperator.Mappings = function () //{{{
|
|||||||
function () { vimperator.bookmarks.toggle(vimperator.buffer.URL); },
|
function () { vimperator.bookmarks.toggle(vimperator.buffer.URL); },
|
||||||
{ shortHelp: "Toggle bookmarked state of current URL" }
|
{ shortHelp: "Toggle bookmarked state of current URL" }
|
||||||
));
|
));
|
||||||
|
|
||||||
|
// move to vimperator.js:
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["~"],
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["~"],
|
||||||
function () { vimperator.open("~"); },
|
function () { vimperator.open("~"); },
|
||||||
{ shortHelp: "Open home directory" }
|
{ shortHelp: "Open home directory" }
|
||||||
@@ -427,171 +390,6 @@ vimperator.Mappings = function () //{{{
|
|||||||
},
|
},
|
||||||
{ shortHelp: "Go home in a new tab" }
|
{ shortHelp: "Go home in a new tab" }
|
||||||
));
|
));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["go"],
|
|
||||||
function (arg) { vimperator.quickmarks.jumpTo(arg, vimperator.CURRENT_TAB); },
|
|
||||||
{
|
|
||||||
shortHelp: "Jump to a QuickMark in the current tab",
|
|
||||||
flags: vimperator.Mappings.flags.ARGUMENT
|
|
||||||
}
|
|
||||||
));
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["gn"],
|
|
||||||
function (arg)
|
|
||||||
{
|
|
||||||
vimperator.quickmarks.jumpTo(arg,
|
|
||||||
/\bquickmark\b/.test(vimperator.options["activate"]) ?
|
|
||||||
vimperator.NEW_TAB : vimperator.NEW_BACKGROUND_TAB);
|
|
||||||
},
|
|
||||||
{
|
|
||||||
shortHelp: "Jump to a QuickMark in a new tab",
|
|
||||||
flags: vimperator.Mappings.flags.ARGUMENT
|
|
||||||
}
|
|
||||||
));
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["m"],
|
|
||||||
function (arg)
|
|
||||||
{
|
|
||||||
if (/[^a-zA-Z]/.test(arg))
|
|
||||||
{
|
|
||||||
vimperator.beep();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
vimperator.marks.add(arg);
|
|
||||||
},
|
|
||||||
{
|
|
||||||
shortHelp: "Set mark at the cursor position",
|
|
||||||
flags: vimperator.Mappings.flags.ARGUMENT
|
|
||||||
}
|
|
||||||
));
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["M"],
|
|
||||||
function (arg)
|
|
||||||
{
|
|
||||||
if (/[^a-zA-Z0-9]/.test(arg))
|
|
||||||
{
|
|
||||||
vimperator.beep();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
vimperator.quickmarks.add(arg, vimperator.buffer.URL);
|
|
||||||
},
|
|
||||||
{
|
|
||||||
shortHelp: "Add new QuickMark for current URL",
|
|
||||||
flags: vimperator.Mappings.flags.ARGUMENT
|
|
||||||
}
|
|
||||||
));
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["o"],
|
|
||||||
function () { vimperator.commandline.open(":", "open ", vimperator.modes.EX); },
|
|
||||||
{ shortHelp: "Open one or more URLs in the current tab" }
|
|
||||||
));
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["O"],
|
|
||||||
function () { vimperator.commandline.open(":", "open " + vimperator.buffer.URL, vimperator.modes.EX); },
|
|
||||||
{ shortHelp: "Open one or more URLs in the current tab, based on current location" }
|
|
||||||
));
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["<C-l>"],
|
|
||||||
function () { vimperator.commands.redraw(); },
|
|
||||||
{
|
|
||||||
shortHelp: "Redraw the screen"
|
|
||||||
}
|
|
||||||
));
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["t"],
|
|
||||||
function () { vimperator.commandline.open(":", "tabopen ", vimperator.modes.EX); },
|
|
||||||
{ shortHelp: "Open one or more URLs in a new tab" }
|
|
||||||
));
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["T"],
|
|
||||||
function () { vimperator.commandline.open(":", "tabopen " + vimperator.buffer.URL, vimperator.modes.EX); },
|
|
||||||
{ shortHelp: "Open one or more URLs in a new tab, based on current location" }
|
|
||||||
));
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["y"],
|
|
||||||
function () { vimperator.copyToClipboard(vimperator.buffer.URL, true); },
|
|
||||||
{ shortHelp: "Yank current location to the clipboard" }
|
|
||||||
));
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL, vimperator.modes.VISUAL], ["Y"],
|
|
||||||
function ()
|
|
||||||
{
|
|
||||||
var sel = window.content.document.getSelection();
|
|
||||||
if (sel)
|
|
||||||
vimperator.copyToClipboard(sel, true);
|
|
||||||
else
|
|
||||||
vimperator.beep();
|
|
||||||
},
|
|
||||||
{ shortHelp: "Copy selected text" }
|
|
||||||
));
|
|
||||||
|
|
||||||
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["ZQ"],
|
|
||||||
function () { vimperator.quit(false); },
|
|
||||||
{ shortHelp: "Quit and don't save the session" }
|
|
||||||
));
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["ZZ"],
|
|
||||||
function () { vimperator.quit(true); },
|
|
||||||
{ shortHelp: "Quit and save the session" }
|
|
||||||
));
|
|
||||||
function incrementURL(count)
|
|
||||||
{
|
|
||||||
var url = vimperator.buffer.URL;
|
|
||||||
var regex = /(.*?)(-?\d+)(\D*)$/;
|
|
||||||
|
|
||||||
var matches = url.match(regex);
|
|
||||||
if (!matches || !matches[2]) // no number to increment
|
|
||||||
{
|
|
||||||
vimperator.beep();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var newNum = parseInt(matches[2], 10) + count + ""; // "" to make sure its a string
|
|
||||||
var nums = newNum.match(/^(-?)(\d+)$/);
|
|
||||||
var oldLength = matches[2].replace(/-/, "").length, newLength = nums[2].length;
|
|
||||||
newNum = nums[1] || "";
|
|
||||||
for (let i = 0; i < oldLength - newLength; i++)
|
|
||||||
newNum += "0"; // keep leading zeros
|
|
||||||
newNum += nums[2];
|
|
||||||
|
|
||||||
vimperator.open(matches[1] + newNum + matches[3]);
|
|
||||||
}
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["<C-x>"],
|
|
||||||
function (count) { incrementURL(-(count > 1 ? count : 1)); },
|
|
||||||
{
|
|
||||||
shortHelp: "Decrement last number in URL",
|
|
||||||
flags: vimperator.Mappings.flags.COUNT
|
|
||||||
}
|
|
||||||
));
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["<C-a>"],
|
|
||||||
function (count) { incrementURL(count > 1 ? count : 1); },
|
|
||||||
{
|
|
||||||
shortHelp: "Increment last number in URL",
|
|
||||||
flags: vimperator.Mappings.flags.COUNT
|
|
||||||
}
|
|
||||||
));
|
|
||||||
|
|
||||||
// history manipulation and jumplist, move to bookmarks.js?
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["<C-o>"],
|
|
||||||
function (count) { vimperator.history.stepTo(-(count > 1 ? count : 1)); },
|
|
||||||
{
|
|
||||||
shortHelp: "Go to an older position in the jump list",
|
|
||||||
flags: vimperator.Mappings.flags.COUNT
|
|
||||||
}
|
|
||||||
));
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["<C-i>"],
|
|
||||||
function (count) { vimperator.history.stepTo(count > 1 ? count : 1); },
|
|
||||||
{
|
|
||||||
shortHelp: "Go to a newer position in the jump list",
|
|
||||||
flags: vimperator.Mappings.flags.COUNT
|
|
||||||
}
|
|
||||||
));
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["H", "<A-Left>", "<M-Left>"],
|
|
||||||
function (count) { vimperator.history.stepTo(-(count > 1 ? count : 1)); },
|
|
||||||
{
|
|
||||||
shortHelp: "Go back in the browser history",
|
|
||||||
flags: vimperator.Mappings.flags.COUNT
|
|
||||||
}
|
|
||||||
));
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["L", "<A-Right>", "<M-Right>"],
|
|
||||||
function (count) { vimperator.history.stepTo(count > 1 ? count : 1); },
|
|
||||||
{
|
|
||||||
shortHelp: "Go forward in the browser history",
|
|
||||||
flags: vimperator.Mappings.flags.COUNT
|
|
||||||
}
|
|
||||||
));
|
|
||||||
// move to vimperator.js?
|
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["gu"],
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["gu"],
|
||||||
function (count)
|
function (count)
|
||||||
{
|
{
|
||||||
@@ -651,24 +449,124 @@ vimperator.Mappings = function () //{{{
|
|||||||
));
|
));
|
||||||
|
|
||||||
|
|
||||||
// macros, move to events.js
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["o"],
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["q"],
|
function () { vimperator.commandline.open(":", "open ", vimperator.modes.EX); },
|
||||||
function (arg) { vimperator.events.startRecording(arg); },
|
{ shortHelp: "Open one or more URLs in the current tab" }
|
||||||
|
));
|
||||||
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["O"],
|
||||||
|
function () { vimperator.commandline.open(":", "open " + vimperator.buffer.URL, vimperator.modes.EX); },
|
||||||
|
{ shortHelp: "Open one or more URLs in the current tab, based on current location" }
|
||||||
|
));
|
||||||
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["<C-l>"],
|
||||||
|
function () { vimperator.commands.redraw(); },
|
||||||
|
{ shortHelp: "Redraw the screen" }
|
||||||
|
));
|
||||||
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["t"],
|
||||||
|
function () { vimperator.commandline.open(":", "tabopen ", vimperator.modes.EX); },
|
||||||
|
{ shortHelp: "Open one or more URLs in a new tab" }
|
||||||
|
));
|
||||||
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["T"],
|
||||||
|
function () { vimperator.commandline.open(":", "tabopen " + vimperator.buffer.URL, vimperator.modes.EX); },
|
||||||
|
{ shortHelp: "Open one or more URLs in a new tab, based on current location" }
|
||||||
|
));
|
||||||
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["y"],
|
||||||
|
function () { vimperator.copyToClipboard(vimperator.buffer.URL, true); },
|
||||||
|
{ shortHelp: "Yank current location to the clipboard" }
|
||||||
|
));
|
||||||
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL, vimperator.modes.VISUAL], ["Y"],
|
||||||
|
function ()
|
||||||
{
|
{
|
||||||
shortHelp: "Record a keysequence into a macro",
|
var sel = window.content.document.getSelection();
|
||||||
|
if (sel)
|
||||||
|
vimperator.copyToClipboard(sel, true);
|
||||||
|
else
|
||||||
|
vimperator.beep();
|
||||||
|
},
|
||||||
|
{ shortHelp: "Copy selected text" }
|
||||||
|
));
|
||||||
|
|
||||||
|
// move to quickmarks:
|
||||||
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["go"],
|
||||||
|
function (arg) { vimperator.quickmarks.jumpTo(arg, vimperator.CURRENT_TAB); },
|
||||||
|
{
|
||||||
|
shortHelp: "Jump to a QuickMark in the current tab",
|
||||||
flags: vimperator.Mappings.flags.ARGUMENT
|
flags: vimperator.Mappings.flags.ARGUMENT
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["@"],
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["gn"],
|
||||||
function (count, arg)
|
function (arg)
|
||||||
{
|
{
|
||||||
if (count < 1) count = 1;
|
vimperator.quickmarks.jumpTo(arg,
|
||||||
while (count--)
|
/\bquickmark\b/.test(vimperator.options["activate"]) ?
|
||||||
vimperator.events.playMacro(arg);
|
vimperator.NEW_TAB : vimperator.NEW_BACKGROUND_TAB);
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
shortHelp: "Play a macro",
|
shortHelp: "Jump to a QuickMark in a new tab",
|
||||||
flags: vimperator.Mappings.flags.ARGUMENT | vimperator.Mappings.flags.COUNT
|
flags: vimperator.Mappings.flags.ARGUMENT
|
||||||
|
}
|
||||||
|
));
|
||||||
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["M"],
|
||||||
|
function (arg)
|
||||||
|
{
|
||||||
|
if (/[^a-zA-Z0-9]/.test(arg))
|
||||||
|
{
|
||||||
|
vimperator.beep();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
vimperator.quickmarks.add(arg, vimperator.buffer.URL);
|
||||||
|
},
|
||||||
|
{
|
||||||
|
shortHelp: "Add new QuickMark for current URL",
|
||||||
|
flags: vimperator.Mappings.flags.ARGUMENT
|
||||||
|
}
|
||||||
|
));
|
||||||
|
|
||||||
|
// move to v.Marks:
|
||||||
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["m"],
|
||||||
|
function (arg)
|
||||||
|
{
|
||||||
|
if (/[^a-zA-Z]/.test(arg))
|
||||||
|
{
|
||||||
|
vimperator.beep();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
vimperator.marks.add(arg);
|
||||||
|
},
|
||||||
|
{
|
||||||
|
shortHelp: "Set mark at the cursor position",
|
||||||
|
flags: vimperator.Mappings.flags.ARGUMENT
|
||||||
|
}
|
||||||
|
));
|
||||||
|
|
||||||
|
// history manipulation and jumplist, move to bookmarks.js
|
||||||
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["<C-o>"],
|
||||||
|
function (count) { vimperator.history.stepTo(-(count > 1 ? count : 1)); },
|
||||||
|
{
|
||||||
|
shortHelp: "Go to an older position in the jump list",
|
||||||
|
flags: vimperator.Mappings.flags.COUNT
|
||||||
|
}
|
||||||
|
));
|
||||||
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["<C-i>"],
|
||||||
|
function (count) { vimperator.history.stepTo(count > 1 ? count : 1); },
|
||||||
|
{
|
||||||
|
shortHelp: "Go to a newer position in the jump list",
|
||||||
|
flags: vimperator.Mappings.flags.COUNT
|
||||||
|
}
|
||||||
|
));
|
||||||
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["H", "<A-Left>", "<M-Left>"],
|
||||||
|
function (count) { vimperator.history.stepTo(-(count > 1 ? count : 1)); },
|
||||||
|
{
|
||||||
|
shortHelp: "Go back in the browser history",
|
||||||
|
flags: vimperator.Mappings.flags.COUNT
|
||||||
|
}
|
||||||
|
));
|
||||||
|
addDefaultMap(new vimperator.Map([vimperator.modes.NORMAL], ["L", "<A-Right>", "<M-Right>"],
|
||||||
|
function (count) { vimperator.history.stepTo(count > 1 ? count : 1); },
|
||||||
|
{
|
||||||
|
shortHelp: "Go forward in the browser history",
|
||||||
|
flags: vimperator.Mappings.flags.COUNT
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|||||||
119
content/vim.js
119
content/vim.js
@@ -33,7 +33,7 @@ const vimperator = (function () //{{{
|
|||||||
/////////////////////////////////////////////////////////////////////////////{{{
|
/////////////////////////////////////////////////////////////////////////////{{{
|
||||||
var callbacks = [];
|
var callbacks = [];
|
||||||
|
|
||||||
// Only general options are added here,
|
// Only general options are added here, which are valid for all vimperator like extensions
|
||||||
function addOptions()
|
function addOptions()
|
||||||
{
|
{
|
||||||
vimperator.options.add(["guioptions", "go"],
|
vimperator.options.add(["guioptions", "go"],
|
||||||
@@ -99,6 +99,21 @@ const vimperator = (function () //{{{
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function addMappings()
|
||||||
|
{
|
||||||
|
vimperator.mappings.add(vimperator.modes.all, ["<F1>"],
|
||||||
|
"Open help window",
|
||||||
|
function () { vimperator.commands.help(); });
|
||||||
|
|
||||||
|
vimperator.mappings.add([vimperator.modes.NORMAL], ["ZQ"],
|
||||||
|
"Quit and don't save the session",
|
||||||
|
function () { vimperator.quit(false); });
|
||||||
|
|
||||||
|
vimperator.mappings.add([vimperator.modes.NORMAL], ["ZZ"],
|
||||||
|
"Quit and save the session",
|
||||||
|
function () { vimperator.quit(true); });
|
||||||
|
}
|
||||||
|
|
||||||
// initially hide all GUI, it is later restored unless the user has :set go= or something
|
// initially hide all GUI, it is later restored unless the user has :set go= or something
|
||||||
// similar in his config
|
// similar in his config
|
||||||
function hideGUI()
|
function hideGUI()
|
||||||
@@ -461,77 +476,45 @@ const vimperator = (function () //{{{
|
|||||||
.quit(nsIAppStartup.eRestart | nsIAppStartup.eAttemptQuit);
|
.quit(nsIAppStartup.eRestart | nsIAppStartup.eAttemptQuit);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// this function is called, when the chrome is ready
|
||||||
startup: function ()
|
startup: function ()
|
||||||
{
|
{
|
||||||
window.dump("Vimperator startup\n");
|
function log(module) { vimperator.log("Loading module " + module + "...", 3); };
|
||||||
vimperator.log("Initializing vimperator object...", 1);
|
|
||||||
|
vimperator.log("Initializing vimperator object...", 1);
|
||||||
|
log("options"); vimperator.options = vimperator.Options(); addOptions();
|
||||||
|
log("commands"); vimperator.commands = vimperator.Commands();
|
||||||
|
log("mappings"); vimperator.mappings = vimperator.Mappings(); addMappings();
|
||||||
|
log("events"); vimperator.events = vimperator.Events();
|
||||||
|
log("commandline"); vimperator.commandline = vimperator.CommandLine();
|
||||||
|
log("search"); vimperator.search = vimperator.Search();
|
||||||
|
log("preview window"); vimperator.previewwindow = vimperator.InformationList("vimperator-previewwindow", { incrementalFill: false, maxItems: 10 });
|
||||||
|
log("buffer window"); vimperator.bufferwindow = vimperator.InformationList("vimperator-bufferwindow", { incrementalFill: false, maxItems: 10 });
|
||||||
|
log("statusline"); vimperator.statusline = vimperator.StatusLine();
|
||||||
|
log("buffer"); vimperator.buffer = vimperator.Buffer(vimperator.config.browserModes || [vimperator.modes.NORMAL]);
|
||||||
|
log("editor"); vimperator.editor = vimperator.Editor();
|
||||||
|
log("autocommands"); vimperator.autocommands = vimperator.AutoCommands();
|
||||||
|
log("io"); vimperator.io = vimperator.IO();
|
||||||
|
log("completion"); vimperator.completion = vimperator.Completion();
|
||||||
|
|
||||||
|
// optional modules
|
||||||
|
if (vimperator.has("bookmarks")) { log("bookmarks"); vimperator.bookmarks = vimperator.Bookmarks(); }
|
||||||
|
if (vimperator.has("history")) { log("history"); vimperator.history = vimperator.History(); }
|
||||||
|
if (vimperator.has("mail")) { log("mail"); vimperator.mail = vimperator.Mail(vimperator.config.mailModes || [vimperator.modes.NORMAL]); }
|
||||||
|
if (vimperator.has("tabs")) { log("tabs"); vimperator.tabs = vimperator.Tabs(); }
|
||||||
|
if (vimperator.has("marks")) { log("marks"); vimperator.marks = vimperator.Marks(); }
|
||||||
|
if (vimperator.has("quickmarks")) { log("quickmarks"); vimperator.quickmarks = vimperator.QuickMarks(); }
|
||||||
|
if (vimperator.has("hints")) { log("hints"); vimperator.hints = vimperator.Hints(); }
|
||||||
|
|
||||||
// these objects are created here only after the chrome is ready
|
|
||||||
vimperator.log("Loading module options...", 3);
|
|
||||||
vimperator.options = vimperator.Options(); addOptions();
|
|
||||||
vimperator.log("Loading module commands...", 3);
|
|
||||||
vimperator.commands = vimperator.Commands();
|
|
||||||
vimperator.log("Loading module mappings...", 3);
|
|
||||||
vimperator.mappings = vimperator.Mappings();
|
|
||||||
vimperator.log("Loading module events...", 3);
|
|
||||||
vimperator.events = vimperator.Events();
|
|
||||||
if (vimperator.has("bookmarks"))
|
|
||||||
{
|
|
||||||
vimperator.log("Loading module bookmarks...", 3);
|
|
||||||
vimperator.bookmarks = vimperator.Bookmarks();
|
|
||||||
}
|
|
||||||
if (vimperator.has("history"))
|
|
||||||
{
|
|
||||||
vimperator.log("Loading module history...", 3);
|
|
||||||
vimperator.history = vimperator.History();
|
|
||||||
}
|
|
||||||
vimperator.log("Loading module commandline...", 3);
|
|
||||||
vimperator.commandline = vimperator.CommandLine();
|
|
||||||
vimperator.log("Loading module search...", 3);
|
|
||||||
vimperator.search = vimperator.Search();
|
|
||||||
vimperator.log("Loading module preview window...", 3);
|
|
||||||
vimperator.previewwindow = vimperator.InformationList("vimperator-previewwindow", { incrementalFill: false, maxItems: 10 });
|
|
||||||
vimperator.log("Loading module buffer window...", 3);
|
|
||||||
vimperator.bufferwindow = vimperator.InformationList("vimperator-bufferwindow", { incrementalFill: false, maxItems: 10 });
|
|
||||||
vimperator.log("Loading module statusline...", 3);
|
|
||||||
vimperator.statusline = vimperator.StatusLine();
|
|
||||||
vimperator.log("Loading module buffer...", 3);
|
|
||||||
vimperator.buffer = vimperator.Buffer(vimperator.config.browserModes || [vimperator.modes.NORMAL]);
|
|
||||||
vimperator.log("Loading module editor...", 3);
|
|
||||||
vimperator.editor = vimperator.Editor();
|
|
||||||
if (vimperator.has("mail"))
|
|
||||||
{
|
|
||||||
vimperator.log("Loading module mail...", 3);
|
|
||||||
vimperator.mail = vimperator.Mail(vimperator.config.mailModes || [vimperator.modes.NORMAL]);
|
|
||||||
}
|
|
||||||
if (vimperator.has("tabs"))
|
|
||||||
{
|
|
||||||
vimperator.log("Loading module tabs...", 3);
|
|
||||||
vimperator.tabs = vimperator.Tabs();
|
|
||||||
}
|
|
||||||
if (vimperator.has("marks"))
|
|
||||||
{
|
|
||||||
vimperator.log("Loading module marks...", 3);
|
|
||||||
vimperator.marks = vimperator.Marks();
|
|
||||||
}
|
|
||||||
if (vimperator.has("quickmarks"))
|
|
||||||
{
|
|
||||||
vimperator.log("Loading module quickmarks...", 3);
|
|
||||||
vimperator.quickmarks = vimperator.QuickMarks();
|
|
||||||
}
|
|
||||||
if (vimperator.has("hints"))
|
|
||||||
{
|
|
||||||
vimperator.log("Loading module hints...", 3);
|
|
||||||
vimperator.hints = vimperator.Hints();
|
|
||||||
}
|
|
||||||
vimperator.log("Loading module autocommands...", 3);
|
|
||||||
vimperator.autocommands = vimperator.AutoCommands();
|
|
||||||
vimperator.log("Loading module io...", 3);
|
|
||||||
vimperator.io = vimperator.IO();
|
|
||||||
vimperator.log("Loading module completion...", 3);
|
|
||||||
vimperator.completion = vimperator.Completion();
|
|
||||||
vimperator.log("All modules loaded", 3);
|
vimperator.log("All modules loaded", 3);
|
||||||
|
|
||||||
|
// This adds options/mappings/commands which are only valid in this particular extension
|
||||||
|
if (vimperator.config.init)
|
||||||
|
{
|
||||||
|
vimperator.config.init();
|
||||||
|
// vimperator.log("Loaded additional mappings, etc. for " + vimperator.config.name, 3);
|
||||||
|
}
|
||||||
|
|
||||||
// we define some shortcuts to functions which are used often
|
// we define some shortcuts to functions which are used often
|
||||||
vimperator.echo = function (str, flags) { vimperator.commandline.echo(str, vimperator.commandline.HL_NORMAL, flags); };
|
vimperator.echo = function (str, flags) { vimperator.commandline.echo(str, vimperator.commandline.HL_NORMAL, flags); };
|
||||||
vimperator.echoerr = function (str, flags) { vimperator.commandline.echo(str, vimperator.commandline.HL_ERRORMSG, flags); };
|
vimperator.echoerr = function (str, flags) { vimperator.commandline.echo(str, vimperator.commandline.HL_ERRORMSG, flags); };
|
||||||
@@ -613,8 +596,6 @@ const vimperator = (function () //{{{
|
|||||||
|
|
||||||
shutdown: function ()
|
shutdown: function ()
|
||||||
{
|
{
|
||||||
window.dump("Vimperator shutdown\n");
|
|
||||||
|
|
||||||
// save our preferences
|
// save our preferences
|
||||||
vimperator.commandline.destroy();
|
vimperator.commandline.destroy();
|
||||||
vimperator.quickmarks.destroy();
|
vimperator.quickmarks.destroy();
|
||||||
|
|||||||
@@ -34,7 +34,43 @@ vimperator.config = {
|
|||||||
/*** optional options, there are checked for existance and a fallback provided ***/
|
/*** optional options, there are checked for existance and a fallback provided ***/
|
||||||
features: ["bookmarks", "history", "marks", "quickmarks", "hints", "tabs"],
|
features: ["bookmarks", "history", "marks", "quickmarks", "hints", "tabs"],
|
||||||
dialogs: [],
|
dialogs: [],
|
||||||
guioptions: { m: ["toolbar-menubar"], T: ["nav-bar"], b: ["PersonalToolbar"] }
|
guioptions: { m: ["toolbar-menubar"], T: ["nav-bar"], b: ["PersonalToolbar"] },
|
||||||
|
|
||||||
|
init: function()
|
||||||
|
{
|
||||||
|
function incrementURL(count)
|
||||||
|
{
|
||||||
|
var url = vimperator.buffer.URL;
|
||||||
|
var regex = /(.*?)(-?\d+)(\D*)$/;
|
||||||
|
|
||||||
|
var matches = url.match(regex);
|
||||||
|
if (!matches || !matches[2]) // no number to increment
|
||||||
|
{
|
||||||
|
vimperator.beep();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var newNum = parseInt(matches[2], 10) + count + ""; // "" to make sure its a string
|
||||||
|
var nums = newNum.match(/^(-?)(\d+)$/);
|
||||||
|
var oldLength = matches[2].replace(/-/, "").length, newLength = nums[2].length;
|
||||||
|
newNum = nums[1] || "";
|
||||||
|
for (let i = 0; i < oldLength - newLength; i++)
|
||||||
|
newNum += "0"; // keep leading zeros
|
||||||
|
newNum += nums[2];
|
||||||
|
|
||||||
|
vimperator.open(matches[1] + newNum + matches[3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
vimperator.mappings.add([vimperator.modes.NORMAL],
|
||||||
|
["<C-a>"], "Increment last number in URL",
|
||||||
|
function (count) { incrementURL(count > 1 ? count : 1); },
|
||||||
|
{ flags: vimperator.Mappings.flags.COUNT });
|
||||||
|
|
||||||
|
vimperator.mappings.add([vimperator.modes.NORMAL],
|
||||||
|
["<C-x>"], "Decrement last number in URL",
|
||||||
|
function (count) { incrementURL(-(count > 1 ? count : 1)); },
|
||||||
|
{ flags: vimperator.Mappings.flags.COUNT });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// vim: set fdm=marker sw=4 ts=4 et:
|
// vim: set fdm=marker sw=4 ts=4 et:
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ The plugin directory is named:
|
|||||||
The user's '$HOME'(~) directory is determined as follows:
|
The user's '$HOME'(~) directory is determined as follows:
|
||||||
|
|
||||||
* Unix and Mac - _$HOME_ is used.
|
* Unix and Mac - _$HOME_ is used.
|
||||||
* Windows - if _$HOME_ is set then this is used, otherwise _$USERPROFILE_ or finally
|
* Windows - if _%HOME%_ is set then this is used, otherwise _%USERPROFILE%_ or finally
|
||||||
_$HOMEDRIVE$HOMEPATH_.
|
_%HOMEDRIVE%%HOMEPATH%_.
|
||||||
|
|
||||||
_$VIMPERATOR_HOME_ can be used to override the calculated _$HOME_ directory.
|
_$VIMPERATOR_HOME_ can be used to override the calculated _$HOME_ directory.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user