From 7d9e1e100a1e324e41d7e111b9498b6e9134bbcd Mon Sep 17 00:00:00 2001 From: Martin Stubenschrott Date: Tue, 5 Feb 2008 13:49:59 +0000 Subject: [PATCH] added -- MESSAGE -- mode handling to muttator. This will be the only muttator-specific mode added to the VIM core. --- content/events.js | 9 +++++++++ content/mappings.js | 2 ++ content/modes.js | 7 +++++-- content/muttator.xul | 16 ++++++++-------- content/vim.js | 3 ++- 5 files changed, 26 insertions(+), 11 deletions(-) diff --git a/content/events.js b/content/events.js index f202962a..1532d628 100644 --- a/content/events.js +++ b/content/events.js @@ -772,8 +772,17 @@ vimperator.Events = function () //{{{ vimperator.modes.main = vimperator.modes.TEXTAREA; vimperator.buffer.lastInputField = elem; } + else if (vimperator.config.name == "Muttator" && (!elem || elem instanceof HTMLElement)) + { + // we switch to -- MESSAGE -- mode for muttator, whenever no tree or an HTML element + // which is NOT an input element is selected + vimperator.mode = vimperator.modes.MESSAGE; + return; + } + else if (vimperator.mode == vimperator.modes.INSERT || vimperator.mode == vimperator.modes.TEXTAREA || + // vimperator.mode == vimperator.modes.MESSAGE || vimperator.mode == vimperator.modes.VISUAL) { // FIXME: currently this hack is disabled to make macros work diff --git a/content/mappings.js b/content/mappings.js index 3a434436..03c4a9da 100644 --- a/content/mappings.js +++ b/content/mappings.js @@ -355,12 +355,14 @@ vimperator.Mappings = function () //{{{ vimperator.modes.VISUAL, vimperator.modes.HINTS, vimperator.modes.COMMAND_LINE, + vimperator.modes.MESSAGE, vimperator.modes.CARET, vimperator.modes.TEXTAREA]; var noninsertModes = [vimperator.modes.NORMAL, vimperator.modes.VISUAL, vimperator.modes.HINTS, + vimperator.modes.MESSAGE, vimperator.modes.CARET, vimperator.modes.TEXTAREA]; diff --git a/content/modes.js b/content/modes.js index c7910e0b..81afc984 100644 --- a/content/modes.js +++ b/content/modes.js @@ -77,6 +77,8 @@ vimperator.modes = (function () //{{{ return "-- CARET" + ext; case vimperator.modes.TEXTAREA: return "-- TEXTAREA" + ext; + case vimperator.modes.MESSAGE: + return "-- MESSAGE" + ext; case vimperator.modes.CUSTOM: return "-- " + vimperator.plugins.mode + ext; default: // NORMAL mode @@ -159,7 +161,8 @@ vimperator.modes = (function () //{{{ COMMAND_LINE: 1 << 4, CARET: 1 << 5, // text cursor is visible TEXTAREA: 1 << 6, // text cursor is in a HTMLTextAreaElement - CUSTOM: 1 << 7, + MESSAGE: 1 << 7, // for now only used in Muttator when the message has focus + CUSTOM: 1 << 8, // extended modes, can include multiple modes, and even main modes EX: 1 << 10, INPUT_MULTILINE: 1 << 11, @@ -177,7 +180,7 @@ vimperator.modes = (function () //{{{ __iterator__: function () { var modes = [this.NONE, this.NORMAL, this.INSERT, this.VISUAL, this.HINTS, - this.COMMAND_LINE, this.CARET, this.TEXTAREA, this.CUSTOM]; + this.COMMAND_LINE, this.CARET, this.TEXTAREA, this.MESSAGE, this.CUSTOM]; for (var i = 0; i < modes.length; i++) yield modes[i]; diff --git a/content/muttator.xul b/content/muttator.xul index fb81e25b..516a4d7e 100644 --- a/content/muttator.xul +++ b/content/muttator.xul @@ -78,16 +78,16 @@ the terms of any one of the MPL, the GPL or the LGPL. -