1
0
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:
Doug Kearns
2007-09-16 17:11:40 +00:00
parent 112877f340
commit 7ce12b3a87

View File

@@ -28,187 +28,187 @@ the terms of any one of the MPL, the GPL or the LGPL.
vimperator.modes = (function()
{
var main = 1; // NORMAL
var extended = 0; // NONE
var main = 1; // NORMAL
var extended = 0; // NONE
var passNextKey = false;
var passAllKeys = false;
var passNextKey = false;
var passAllKeys = false;
function getModeMessage()
{
if (passNextKey && !passAllKeys)
return "PASS THROUGH (next)";
else if (passAllKeys && !passNextKey)
return "PASS THROUGH";
function getModeMessage()
{
if (passNextKey && !passAllKeys)
return "PASS THROUGH (next)";
else if (passAllKeys && !passNextKey)
return "PASS THROUGH";
var ext = "";
switch (extended)
{
case vimperator.modes.QUICK_HINT:
ext = " (quick)"; break;
case vimperator.modes.EXTENDED_HINT:
ext = " (extended)"; break;
case vimperator.modes.ALWAYS_HINT:
ext = " (always)"; break;
case vimperator.modes.MENU: // TODO: desirable?
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;
}
}
var ext = "";
switch (extended)
{
case vimperator.modes.QUICK_HINT:
ext = " (quick)"; break;
case vimperator.modes.EXTENDED_HINT:
ext = " (extended)"; break;
case vimperator.modes.ALWAYS_HINT:
ext = " (always)"; break;
case vimperator.modes.MENU: // TODO: desirable?
ext = " (menu)"; break;
}
function handleModeChange(oldmode, newmode)
{
vimperator.log("switching from mode " + oldmode + " to mode " + newmode, 7);
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;
}
}
switch (oldmode)
{
case vimperator.modes.TEXTAREA:
case vimperator.modes.INSERT:
vimperator.editor.unselectText();
break;
function handleModeChange(oldmode, newmode)
{
vimperator.log("switching from mode " + oldmode + " to mode " + newmode, 7);
case vimperator.modes.VISUAL:
if (newmode == vimperator.modes.CARET)
{
switch (oldmode)
{
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
var selection = window.content.getSelection();
if (selection)
selection.collapseToStart();
}
else
vimperator.editor.unselectText();
break;
}
else
vimperator.editor.unselectText();
break;
case vimperator.modes.HINTS:
// XXX: for now this does not work, but later it should be here
// vimperator.hints.disableHahMode();
break;
}
case vimperator.modes.HINTS:
// XXX: for now this does not work, but later it should be here
// vimperator.hints.disableHahMode();
break;
}
if (newmode == vimperator.modes.NORMAL)
{
var value = Options.getFirefoxPref("accessibility.browsewithcaret", false);
if (value)
Options.setFirefoxPref("accessibility.browsewithcaret", false);
if (newmode == vimperator.modes.NORMAL)
{
var value = Options.getFirefoxPref("accessibility.browsewithcaret", false);
if (value)
Options.setFirefoxPref("accessibility.browsewithcaret", false);
vimperator.statusline.updateUrl();
vimperator.focusContent();
}
}
vimperator.statusline.updateUrl();
vimperator.focusContent();
}
}
return {
// main modes, only one should ever be active
NONE: 0,
NORMAL: 1 << 0,
INSERT: 1 << 1,
VISUAL: 1 << 2,
HINTS: 1 << 3,
COMMAND_LINE: 1 << 4,
CARET: 1 << 5, // text cursor is visible
TEXTAREA: 1 << 6, // text cursor is in a HTMLTextAreaElement
// extended modes, can include multiple modes, and even main modes
EX: 1 << 10,
INPUT_MULTILINE: 1 << 11,
OUTPUT_MULTILINE: 1 << 12,
SEARCH_FORWARD: 1 << 13,
SEARCH_BACKWARD: 1 << 14,
QUICK_HINT: 1 << 15,
EXTENDED_HINT: 1 << 16,
ALWAYS_HINT: 1 << 17,
MENU: 1 << 18, // a popupmenu is active
LINE: 1 << 19, // linewise visual mode
return {
// main modes, only one should ever be active
NONE: 0,
NORMAL: 1 << 0,
INSERT: 1 << 1,
VISUAL: 1 << 2,
HINTS: 1 << 3,
COMMAND_LINE: 1 << 4,
CARET: 1 << 5, // text cursor is visible
TEXTAREA: 1 << 6, // text cursor is in a HTMLTextAreaElement
// extended modes, can include multiple modes, and even main modes
EX: 1 << 10,
INPUT_MULTILINE: 1 << 11,
OUTPUT_MULTILINE: 1 << 12,
SEARCH_FORWARD: 1 << 13,
SEARCH_BACKWARD: 1 << 14,
QUICK_HINT: 1 << 15,
EXTENDED_HINT: 1 << 16,
ALWAYS_HINT: 1 << 17,
MENU: 1 << 18, // a popupmenu is active
LINE: 1 << 19, // linewise visual mode
reset: function(silent)
{
this.set(vimperator.modes.NORMAL, vimperator.modes.NONE, silent);
},
reset: function(silent)
{
this.set(vimperator.modes.NORMAL, vimperator.modes.NONE, silent);
},
show: function()
{
if (!vimperator.options["showmode"])
return;
show: function()
{
if (!vimperator.options["showmode"])
return;
// never show mode messages if we are in command line mode
if (main == vimperator.modes.COMMAND_LINE)
return;
// never show mode messages if we are in command line mode
if (main == vimperator.modes.COMMAND_LINE)
return;
var msg = getModeMessage();
if (msg)
vimperator.commandline.echo("-- " + getModeMessage() + " --");
else
vimperator.commandline.echo("");
},
var msg = getModeMessage();
if (msg)
vimperator.commandline.echo("-- " + getModeMessage() + " --");
else
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)
{
// if a main mode is set, the extended is always cleared
if (typeof main_mode === "number")
{
if (main_mode != main)
handleModeChange(main, main_mode);
if (main_mode != main)
handleModeChange(main, main_mode);
main = main_mode;
if (!extended_mode)
extended = vimperator.modes.NONE;
if (!extended_mode)
extended = vimperator.modes.NONE;
}
if (typeof extended_mode === "number")
extended = extended_mode;
if (!silent)
this.show();
if (!silent)
this.show();
},
// add/remove always work on the extended mode only
add: function(mode)
{
extended |= mode;
this.show();
},
remove: function(mode)
{
extended = (extended | mode) ^ mode;
this.show();
},
// add/remove always work on the extended mode only
add: function(mode)
{
extended |= mode;
this.show();
},
remove: function(mode)
{
extended = (extended | mode) ^ mode;
this.show();
},
get passNextKey() { return passNextKey; },
set passNextKey(value) { passNextKey = value; this.show(); },
get passNextKey() { return passNextKey; },
set passNextKey(value) { passNextKey = value; this.show(); },
get passAllKeys() { return passAllKeys; },
set passAllKeys(value) { passAllKeys = value; this.show(); },
get main() { return main; },
set main(value) {
if (value != main)
handleModeChange(main, value);
get passAllKeys() { return passAllKeys; },
set passAllKeys(value) { passAllKeys = value; this.show(); },
main = value;
// setting the main mode always resets any extended mode
extended = vimperator.modes.NONE;
this.show();
},
get main() { return main; },
set main(value) {
if (value != main)
handleModeChange(main, value);
get extended() { return extended; },
set extended(value) {
extended = value; this.show();
}
}
main = value;
// setting the main mode always resets any extended mode
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: