mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-22 06:08:02 +01:00
add Vim modeline and whitespace formatting
This commit is contained in:
@@ -28,187 +28,187 @@ the terms of any one of the MPL, the GPL or the LGPL.
|
|||||||
|
|
||||||
vimperator.modes = (function()
|
vimperator.modes = (function()
|
||||||
{
|
{
|
||||||
var main = 1; // NORMAL
|
var main = 1; // NORMAL
|
||||||
var extended = 0; // NONE
|
var extended = 0; // NONE
|
||||||
|
|
||||||
var passNextKey = false;
|
var passNextKey = false;
|
||||||
var passAllKeys = false;
|
var passAllKeys = false;
|
||||||
|
|
||||||
function getModeMessage()
|
function getModeMessage()
|
||||||
{
|
{
|
||||||
if (passNextKey && !passAllKeys)
|
if (passNextKey && !passAllKeys)
|
||||||
return "PASS THROUGH (next)";
|
return "PASS THROUGH (next)";
|
||||||
else if (passAllKeys && !passNextKey)
|
else if (passAllKeys && !passNextKey)
|
||||||
return "PASS THROUGH";
|
return "PASS THROUGH";
|
||||||
|
|
||||||
var ext = "";
|
var ext = "";
|
||||||
switch (extended)
|
switch (extended)
|
||||||
{
|
{
|
||||||
case vimperator.modes.QUICK_HINT:
|
case vimperator.modes.QUICK_HINT:
|
||||||
ext = " (quick)"; break;
|
ext = " (quick)"; break;
|
||||||
case vimperator.modes.EXTENDED_HINT:
|
case vimperator.modes.EXTENDED_HINT:
|
||||||
ext = " (extended)"; break;
|
ext = " (extended)"; break;
|
||||||
case vimperator.modes.ALWAYS_HINT:
|
case vimperator.modes.ALWAYS_HINT:
|
||||||
ext = " (always)"; break;
|
ext = " (always)"; break;
|
||||||
case vimperator.modes.MENU: // TODO: desirable?
|
case vimperator.modes.MENU: // TODO: desirable?
|
||||||
ext = " (menu)"; break;
|
ext = " (menu)"; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (main)
|
|
||||||
{
|
|
||||||
case vimperator.modes.INSERT:
|
|
||||||
return "INSERT" + ext;
|
|
||||||
case vimperator.modes.VISUAL:
|
|
||||||
return (extended & vimperator.modes.LINE) ? "VISUAL LINE" + ext : "VISUAL" + ext;
|
|
||||||
case vimperator.modes.HINTS:
|
|
||||||
return "HINTS" + ext;
|
|
||||||
case vimperator.modes.CARET:
|
|
||||||
return "CARET" + ext;
|
|
||||||
case vimperator.modes.TEXTAREA:
|
|
||||||
return "TEXTAREA" + ext;
|
|
||||||
default:
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleModeChange(oldmode, newmode)
|
switch (main)
|
||||||
{
|
{
|
||||||
vimperator.log("switching from mode " + oldmode + " to mode " + newmode, 7);
|
case vimperator.modes.INSERT:
|
||||||
|
return "INSERT" + ext;
|
||||||
|
case vimperator.modes.VISUAL:
|
||||||
|
return (extended & vimperator.modes.LINE) ? "VISUAL LINE" + ext : "VISUAL" + ext;
|
||||||
|
case vimperator.modes.HINTS:
|
||||||
|
return "HINTS" + ext;
|
||||||
|
case vimperator.modes.CARET:
|
||||||
|
return "CARET" + ext;
|
||||||
|
case vimperator.modes.TEXTAREA:
|
||||||
|
return "TEXTAREA" + ext;
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (oldmode)
|
function handleModeChange(oldmode, newmode)
|
||||||
{
|
{
|
||||||
case vimperator.modes.TEXTAREA:
|
vimperator.log("switching from mode " + oldmode + " to mode " + newmode, 7);
|
||||||
case vimperator.modes.INSERT:
|
|
||||||
vimperator.editor.unselectText();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case vimperator.modes.VISUAL:
|
switch (oldmode)
|
||||||
if (newmode == vimperator.modes.CARET)
|
{
|
||||||
{
|
case vimperator.modes.TEXTAREA:
|
||||||
|
case vimperator.modes.INSERT:
|
||||||
|
vimperator.editor.unselectText();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case vimperator.modes.VISUAL:
|
||||||
|
if (newmode == vimperator.modes.CARET)
|
||||||
|
{
|
||||||
// clear any selection made
|
// clear any selection made
|
||||||
var selection = window.content.getSelection();
|
var selection = window.content.getSelection();
|
||||||
if (selection)
|
if (selection)
|
||||||
selection.collapseToStart();
|
selection.collapseToStart();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
vimperator.editor.unselectText();
|
vimperator.editor.unselectText();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case vimperator.modes.HINTS:
|
case vimperator.modes.HINTS:
|
||||||
// XXX: for now this does not work, but later it should be here
|
// XXX: for now this does not work, but later it should be here
|
||||||
// vimperator.hints.disableHahMode();
|
// vimperator.hints.disableHahMode();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newmode == vimperator.modes.NORMAL)
|
if (newmode == vimperator.modes.NORMAL)
|
||||||
{
|
{
|
||||||
var value = Options.getFirefoxPref("accessibility.browsewithcaret", false);
|
var value = Options.getFirefoxPref("accessibility.browsewithcaret", false);
|
||||||
if (value)
|
if (value)
|
||||||
Options.setFirefoxPref("accessibility.browsewithcaret", false);
|
Options.setFirefoxPref("accessibility.browsewithcaret", false);
|
||||||
|
|
||||||
vimperator.statusline.updateUrl();
|
vimperator.statusline.updateUrl();
|
||||||
vimperator.focusContent();
|
vimperator.focusContent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
// main modes, only one should ever be active
|
// main modes, only one should ever be active
|
||||||
NONE: 0,
|
NONE: 0,
|
||||||
NORMAL: 1 << 0,
|
NORMAL: 1 << 0,
|
||||||
INSERT: 1 << 1,
|
INSERT: 1 << 1,
|
||||||
VISUAL: 1 << 2,
|
VISUAL: 1 << 2,
|
||||||
HINTS: 1 << 3,
|
HINTS: 1 << 3,
|
||||||
COMMAND_LINE: 1 << 4,
|
COMMAND_LINE: 1 << 4,
|
||||||
CARET: 1 << 5, // text cursor is visible
|
CARET: 1 << 5, // text cursor is visible
|
||||||
TEXTAREA: 1 << 6, // text cursor is in a HTMLTextAreaElement
|
TEXTAREA: 1 << 6, // text cursor is in a HTMLTextAreaElement
|
||||||
// extended modes, can include multiple modes, and even main modes
|
// extended modes, can include multiple modes, and even main modes
|
||||||
EX: 1 << 10,
|
EX: 1 << 10,
|
||||||
INPUT_MULTILINE: 1 << 11,
|
INPUT_MULTILINE: 1 << 11,
|
||||||
OUTPUT_MULTILINE: 1 << 12,
|
OUTPUT_MULTILINE: 1 << 12,
|
||||||
SEARCH_FORWARD: 1 << 13,
|
SEARCH_FORWARD: 1 << 13,
|
||||||
SEARCH_BACKWARD: 1 << 14,
|
SEARCH_BACKWARD: 1 << 14,
|
||||||
QUICK_HINT: 1 << 15,
|
QUICK_HINT: 1 << 15,
|
||||||
EXTENDED_HINT: 1 << 16,
|
EXTENDED_HINT: 1 << 16,
|
||||||
ALWAYS_HINT: 1 << 17,
|
ALWAYS_HINT: 1 << 17,
|
||||||
MENU: 1 << 18, // a popupmenu is active
|
MENU: 1 << 18, // a popupmenu is active
|
||||||
LINE: 1 << 19, // linewise visual mode
|
LINE: 1 << 19, // linewise visual mode
|
||||||
|
|
||||||
reset: function(silent)
|
reset: function(silent)
|
||||||
{
|
{
|
||||||
this.set(vimperator.modes.NORMAL, vimperator.modes.NONE, silent);
|
this.set(vimperator.modes.NORMAL, vimperator.modes.NONE, silent);
|
||||||
},
|
},
|
||||||
|
|
||||||
show: function()
|
show: function()
|
||||||
{
|
{
|
||||||
if (!vimperator.options["showmode"])
|
if (!vimperator.options["showmode"])
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// never show mode messages if we are in command line mode
|
// never show mode messages if we are in command line mode
|
||||||
if (main == vimperator.modes.COMMAND_LINE)
|
if (main == vimperator.modes.COMMAND_LINE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var msg = getModeMessage();
|
var msg = getModeMessage();
|
||||||
if (msg)
|
if (msg)
|
||||||
vimperator.commandline.echo("-- " + getModeMessage() + " --");
|
vimperator.commandline.echo("-- " + getModeMessage() + " --");
|
||||||
else
|
else
|
||||||
vimperator.commandline.echo("");
|
vimperator.commandline.echo("");
|
||||||
},
|
},
|
||||||
|
|
||||||
// helper function to set both modes in one go
|
// helper function to set both modes in one go
|
||||||
set: function(main_mode, extended_mode, silent)
|
set: function(main_mode, extended_mode, silent)
|
||||||
{
|
{
|
||||||
// if a main mode is set, the extended is always cleared
|
// if a main mode is set, the extended is always cleared
|
||||||
if (typeof main_mode === "number")
|
if (typeof main_mode === "number")
|
||||||
{
|
{
|
||||||
if (main_mode != main)
|
if (main_mode != main)
|
||||||
handleModeChange(main, main_mode);
|
handleModeChange(main, main_mode);
|
||||||
|
|
||||||
main = main_mode;
|
main = main_mode;
|
||||||
if (!extended_mode)
|
if (!extended_mode)
|
||||||
extended = vimperator.modes.NONE;
|
extended = vimperator.modes.NONE;
|
||||||
|
|
||||||
}
|
}
|
||||||
if (typeof extended_mode === "number")
|
if (typeof extended_mode === "number")
|
||||||
extended = extended_mode;
|
extended = extended_mode;
|
||||||
|
|
||||||
if (!silent)
|
if (!silent)
|
||||||
this.show();
|
this.show();
|
||||||
},
|
},
|
||||||
|
|
||||||
// add/remove always work on the extended mode only
|
// add/remove always work on the extended mode only
|
||||||
add: function(mode)
|
add: function(mode)
|
||||||
{
|
{
|
||||||
extended |= mode;
|
extended |= mode;
|
||||||
this.show();
|
this.show();
|
||||||
},
|
},
|
||||||
remove: function(mode)
|
remove: function(mode)
|
||||||
{
|
{
|
||||||
extended = (extended | mode) ^ mode;
|
extended = (extended | mode) ^ mode;
|
||||||
this.show();
|
this.show();
|
||||||
},
|
},
|
||||||
|
|
||||||
get passNextKey() { return passNextKey; },
|
get passNextKey() { return passNextKey; },
|
||||||
set passNextKey(value) { passNextKey = value; this.show(); },
|
set passNextKey(value) { passNextKey = value; this.show(); },
|
||||||
|
|
||||||
get passAllKeys() { return passAllKeys; },
|
get passAllKeys() { return passAllKeys; },
|
||||||
set passAllKeys(value) { passAllKeys = value; this.show(); },
|
set passAllKeys(value) { passAllKeys = value; this.show(); },
|
||||||
|
|
||||||
get main() { return main; },
|
|
||||||
set main(value) {
|
|
||||||
if (value != main)
|
|
||||||
handleModeChange(main, value);
|
|
||||||
|
|
||||||
main = value;
|
get main() { return main; },
|
||||||
// setting the main mode always resets any extended mode
|
set main(value) {
|
||||||
extended = vimperator.modes.NONE;
|
if (value != main)
|
||||||
this.show();
|
handleModeChange(main, value);
|
||||||
},
|
|
||||||
|
|
||||||
get extended() { return extended; },
|
main = value;
|
||||||
set extended(value) {
|
// setting the main mode always resets any extended mode
|
||||||
extended = value; this.show();
|
extended = vimperator.modes.NONE;
|
||||||
}
|
this.show();
|
||||||
}
|
},
|
||||||
|
|
||||||
|
get extended() { return extended; },
|
||||||
|
set extended(value) {
|
||||||
|
extended = value; this.show();
|
||||||
|
}
|
||||||
|
}
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
// vim: set fdm=marker sw=4 ts=4 et:
|
||||||
|
|||||||
Reference in New Issue
Block a user