From 22c65025ed5251d6f2733ae728bdeda5eeb7756e Mon Sep 17 00:00:00 2001 From: Doug Kearns Date: Mon, 12 Jan 2009 20:46:31 +1100 Subject: [PATCH 1/6] Don't anchor :back/:forward completions. --- vimperator/content/bookmarks.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vimperator/content/bookmarks.js b/vimperator/content/bookmarks.js index 84bd3ca1..4b7ca786 100644 --- a/vimperator/content/bookmarks.js +++ b/vimperator/content/bookmarks.js @@ -734,9 +734,9 @@ function History() //{{{ { let sh = window.getWebNavigation().sessionHistory; + context.anchor = false; context.completions = [sh.getEntryAtIndex(i, false) for (i in util.range(sh.index, 0, true))]; context.keys = { text: function (item) item.URI.spec, description: "title" }; - liberator.dump(context.items); }, count: true, literal: 0 @@ -780,6 +780,7 @@ function History() //{{{ { let sh = window.getWebNavigation().sessionHistory; + context.anchor = false; context.completions = [sh.getEntryAtIndex(i, false) for (i in util.range(sh.index + 1, sh.count))]; context.keys = { text: function (item) item.URI.spec, description: "title" }; }, From 61e1b9e1e6ee4c3007f550d538b3e25be7d731d9 Mon Sep 17 00:00:00 2001 From: Doug Kearns Date: Tue, 13 Jan 2009 19:25:38 +1100 Subject: [PATCH 2/6] Mention the "colors" directory in :help 'rtp'. --- vimperator/locale/en-US/options.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/vimperator/locale/en-US/options.txt b/vimperator/locale/en-US/options.txt index 1e486761..f6cd4f8a 100644 --- a/vimperator/locale/en-US/options.txt +++ b/vimperator/locale/en-US/options.txt @@ -601,6 +601,7 @@ ____ (default: _$VIMPERATOR_RUNTIME_ or Unix, Mac: "\~/.vimperator", Windows: "\~/vimperator") List of directories searched for runtime files: + +colors/ + macros/ + plugin/ + From 5fe2741dfc880509f252afd0c312655507ecf336 Mon Sep 17 00:00:00 2001 From: Doug Kearns Date: Wed, 14 Jan 2009 14:21:01 +1100 Subject: [PATCH 3/6] Refactor editor.removeAllAbbreviations. Add some rough source documentation for abbreviation related methods in Editor. --- common/content/editor.js | 73 ++++++++++++++++++++++++++++++---------- 1 file changed, 55 insertions(+), 18 deletions(-) diff --git a/common/content/editor.js b/common/content/editor.js index 8f2f830f..7d055a57 100644 --- a/common/content/editor.js +++ b/common/content/editor.js @@ -923,6 +923,23 @@ function Editor() //{{{ // 1 not !: opposite mode (first), add/change 'second' and END // 1 not !: same mode (first), overwrite first this END // + // TODO: I don't like these funky filters, I am a funky filter hater. --djk + // : make this a separate object + // : use Struct for individual abbreviations + // : rename "filter" arg "mode" + /** + * Adds a new abbreviation. Abbreviations consist of a LHS (the text + * that is replaced when the abbreviation is expanded) and a RHS (the + * replacement text). + * + * @param {string} filter The mode filter. This specifies the modes in + * which this abbreviation is available. Either: + * "c" - applies in command-line mode + * "i" - applies in insert mode + * "!" - applies in both command-line and insert modes + * @param {string} lhs The LHS of the abbreviation. + * @param {string} rhs The RHS of the abbreviation. + */ addAbbreviation: function (filter, lhs, rhs) { if (!abbreviations[lhs]) @@ -980,7 +997,12 @@ function Editor() //{{{ abbreviations[lhs][0] = [filter, rhs]; }, - expandAbbreviation: function (filter) // try to find an candidate and replace accordingly + /** + * Expands an abbreviation in the currently active textbox. + * + * @param {string} filter The mode filter. (@see #addAbbreviation) + */ + expandAbbreviation: function (filter) { let textbox = getEditor(); if (!textbox) @@ -1012,15 +1034,29 @@ function Editor() //{{{ return true; }, - // filter is i, c or "!" (insert or command abbreviations or both) - // ! -> list all, on c or i ! matches too + /** + * Returns all abbreviations matching filter and lhs. + * + * @param {string} filter The mode filter. (@see #addAbbreviation) + * @param {string} lhs The LHS of the abbreviation. + * (@see #addAbbreviation) + * @returns {Array} The matching abbreviations [mode, lhs, rhs] + */ getAbbreviations: function (filter, lhs) { + // ! -> list all, on c or i ! matches too let searchFilter = (filter == "!") ? "!ci" : filter + "!"; return list = [[mode, left, right] for ([left, [mode, right]] in abbrevs()) if (searchFilter.indexOf(mode) >= 0 && left.indexOf(lhs || "") == 0)]; }, + /** + * Lists all abbreviations matching filter and lhs. + * + * @param {string} filter The mode filter. (@see #addAbbreviation) + * @param {string} lhs The LHS of the abbreviation. + * (@see #addAbbreviation) + */ listAbbreviations: function (filter, lhs) { let list = this.getAbbreviations(filter, lhs); @@ -1042,6 +1078,13 @@ function Editor() //{{{ } }, + /** + * Deletes all abbreviations matching filter and lhs. + * + * @param {string} filter The mode filter. (@see #addAbbreviation) + * @param {string} lhs The LHS of the abbreviation. + * (@see #addAbbreviation) + */ removeAbbreviation: function (filter, lhs) { if (!lhs) @@ -1088,23 +1131,17 @@ function Editor() //{{{ return false; }, + /** + * Removes all abbreviations matching filter. + * + * @param {string} filter The mode filter. (@see #addAbbreviation) + */ removeAllAbbreviations: function (filter) { - if (filter == "!") - { - abbreviations = {}; - } - else - { - for (let lhs in abbreviations) - { - for (let i = 0; i < abbreviations[lhs].length; i++) - { - if (abbreviations[lhs][i][0] == "!" || abbreviations[lhs][i][0] == filter) - this.removeAbbreviation(filter, lhs); - } - } - } + let searchFilter = (filter == "!") ? "!ci" : filter + "!"; + for ([lhs, [mode, rhs]] in abbrevs()) + if (searchFilter.indexOf(mode) >= 0) + this.removeAbbreviation(filter, lhs); } //}}} }; From 8201a9a55057faa8a8ad119781b7c455f411934e Mon Sep 17 00:00:00 2001 From: Doug Kearns Date: Wed, 14 Jan 2009 14:48:28 +1100 Subject: [PATCH 4/6] Add some rough source documentation for Search. --- common/content/find.js | 71 ++++++++++++++++++++++++++++--------- common/content/liberator.js | 1 + 2 files changed, 55 insertions(+), 17 deletions(-) diff --git a/common/content/find.js b/common/content/find.js index fe65eb17..90a73868 100644 --- a/common/content/find.js +++ b/common/content/find.js @@ -37,6 +37,7 @@ the terms of any one of the MPL, the GPL or the LGPL. // : 'linksearch' searches should highlight link matches only // : changing any search settings should also update the search state including highlighting // : incremental searches shouldn't permanently update search modifiers +// : normalise the use of "search" vs "find" and rename callbacks // make sure you only create this object when the "liberator" object is ready /** @@ -320,8 +321,13 @@ function Search() //{{{ return { - // Called when the search dialog is asked for - // If you omit "mode", it will default to forward searching + /** + * Called when the search dialog is requested. + * + * @param {number} mode The search mode, either modes.SEARCH_FORWARD or + * modes.SEARCH_BACKWARD. + * @default modes.SEARCH_FORWARD + */ openSearchDialog: function (mode) { if (mode == modes.SEARCH_BACKWARD) @@ -338,14 +344,17 @@ function Search() //{{{ // TODO: focus the top of the currently visible screen }, - // Finds text in a page // TODO: backwards seems impossible i fear :( - find: function (str, backwards) + /** + * Searches the current buffer for str. + * + * @param {string} str The string to find. + */ + find: function (str) { let fastFind = getBrowser().fastFind; processUserPattern(str); - fastFind.caseSensitive = caseSensitive; found = fastFind.find(searchString, linksOnly) != Ci.nsITypeAheadFind.FIND_NOTFOUND; @@ -355,10 +364,16 @@ function Search() //{{{ return found; }, - // Called when the current search needs to be repeated + /** + * Searches the current buffer again for the most recently used search + * string. + * + * @param {boolean} reverse Whether to search forwards or backwards. + * @default false + */ findAgain: function (reverse) { - // this hack is needed to make n/N work with the correct string, if + // This hack is needed to make n/N work with the correct string, if // we typed /foo after the original search. Since searchString is // readonly we have to call find() again to update it. if (getBrowser().fastFind.searchString != lastSearchString) @@ -393,15 +408,27 @@ function Search() //{{{ } }, - // Called when the user types a key in the search dialog. Triggers a find attempt if 'incsearch' is set + /** + * Called when the user types a key in the search dialog. Triggers a + * search attempt if 'incsearch' is set. + * + * @param {string} command The search string. + */ searchKeyPressed: function (command) { if (options["incsearch"]) this.find(command, backwards); }, - // Called when the enter key is pressed to trigger a search - // use forcedBackward if you call this function directly + /** + * Called when the key is pressed to trigger a search. + * + * @param {string} command The search string. + * @param {boolean} forcedBackward Whether to search forwards or + * backwards. This overrides the direction set in + * (@link #openSearchDialog). + * @default false + */ searchSubmitted: function (command, forcedBackward) { if (typeof forcedBackward === "boolean") @@ -432,16 +459,22 @@ function Search() //{{{ modes.reset(); }, - // Called when the search is canceled - for example if someone presses - // escape while typing a search + /** + * Called when the search is canceled. For example, if someone presses + * while typing a search. + */ searchCanceled: function () { // TODO: code to reposition the document to the place before search started }, // FIXME: Thunderbird incompatible - // this is not dependent on the value of 'hlsearch' - highlight: function (text) + /** + * Highlights all occurances of str in the buffer. + * + * @param str The string to highlight. + */ + highlight: function (str) { if (config.name == "Muttator") return; @@ -450,10 +483,10 @@ function Search() //{{{ if (highlightObj.getSpans(content.document).snapshotLength > 0) return; - if (!text) - text = lastSearchString; + if (!str) + str = lastSearchString; - highlightObj.highlightDoc(window.content, text); + highlightObj.highlightDoc(window.content, str); // recreate selection since _highlightDoc collapses the selection backwards getBrowser().fastFind.findAgain(false, linksOnly); @@ -461,8 +494,12 @@ function Search() //{{{ // TODO: remove highlighting from non-link matches (HTML - A/AREA with href attribute; XML - Xlink [type="simple"]) }, + /** + * Clears all search highlighting. + */ clear: function () { + // FIXME: moves the selection highlightObj.highlightDoc(window.content); // need to manually collapse the selection if the document is not // highlighted diff --git a/common/content/liberator.js b/common/content/liberator.js index f0aa1496..ce11a326 100644 --- a/common/content/liberator.js +++ b/common/content/liberator.js @@ -624,6 +624,7 @@ const liberator = (function () //{{{ // "complete" // TODO: "zoom": if the zoom value of the current buffer changed // TODO: move to ui.js? + // Yes --djk registerCallback: function (type, mode, func) { if (!(type in callbacks)) From 3875c1dd58654e0a665f24027de757fc1f378f17 Mon Sep 17 00:00:00 2001 From: Doug Kearns Date: Wed, 14 Jan 2009 20:53:45 +1100 Subject: [PATCH 5/6] Add a help section about preferences set by Vimperator at startup. --- common/content/buffer.js | 3 ++- vimperator/locale/en-US/index.txt | 2 +- vimperator/locale/en-US/options.txt | 27 ++++++++++++++++++--------- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/common/content/buffer.js b/common/content/buffer.js index 77ff222f..93e8dabb 100644 --- a/common/content/buffer.js +++ b/common/content/buffer.js @@ -207,7 +207,8 @@ function Buffer() //{{{ "Start caret mode", function () { - // setting this option triggers an observer which takes care of the mode setting + // setting this option notifies an observer which takes care of the + // mode setting options.setPref("accessibility.browsewithcaret", true); }); diff --git a/vimperator/locale/en-US/index.txt b/vimperator/locale/en-US/index.txt index 2f5d794e..9186d023 100644 --- a/vimperator/locale/en-US/index.txt +++ b/vimperator/locale/en-US/index.txt @@ -207,7 +207,7 @@ section:Ex{nbsp}commands[ex-cmd-index,:index] ||:pageinfo|| Show various page information + ||:pagestyle|| Select the author style sheet to apply + ||:play|| Replay a recorded macro + -||:preferences|| Show Firefox preferences + +||:preferences|| Show Firefox preferences dialog + ||:pwd|| Print the current directory name + ||:qmark|| Mark a URL with a letter for quick access + ||:qmarks|| Show all QuickMarks + diff --git a/vimperator/locale/en-US/options.txt b/vimperator/locale/en-US/options.txt index f6cd4f8a..147ec7cc 100644 --- a/vimperator/locale/en-US/options.txt +++ b/vimperator/locale/en-US/options.txt @@ -162,21 +162,18 @@ 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] +section:Setting{nbsp}Firefox{nbsp}options[firefox-options,preferences] -Most Firefox options are not touched/overridden by Vimperator. In order to set -any of these preferences use either of the following: +Firefox options can be viewed and set with the following commands: |:prefs| |:preferences| ||:pref[erences]|| ________________________________________________________________________________ -Show Browser Preferences + -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 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. ________________________________________________________________________________ - |:prefs!| |:preferences!| ||:pref[erences]!|| ________________________________________________________________________________ @@ -184,7 +181,6 @@ Opens about:config in the current tab where you can change advanced Firefox preferences. ________________________________________________________________________________ - |:set!| |:set-!| ||:se[t]! {preference}={value}|| + ________________________________________________________________________________ @@ -192,6 +188,19 @@ Change any Firefox {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, +they can be changed to a different value in your RC file using +[c]:set! {preference}={value}[c] + +The following preferences are set: + +* browser.startup.page +* dom.popup_allowed_events + +// TODO: others? + section:List{nbsp}of{nbsp}options[list-options] |\'act'| |\'activate'| From 4adfe70c012154f42109ca06c373edc53fcb24c7 Mon Sep 17 00:00:00 2001 From: Doug Kearns Date: Wed, 14 Jan 2009 20:54:18 +1100 Subject: [PATCH 6/6] Update default values for 'hinttags' and 'extendedhinttags' in help. --- vimperator/locale/en-US/options.txt | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/vimperator/locale/en-US/options.txt b/vimperator/locale/en-US/options.txt index 147ec7cc..fad0462e 100644 --- a/vimperator/locale/en-US/options.txt +++ b/vimperator/locale/en-US/options.txt @@ -284,11 +284,9 @@ ____ |\'eht'| |\'extendedhinttags'| ||'extendedhinttags' 'eht'|| string ____ -(default: +++//*[@onclick or @onmouseover -or @onmousedown or @onmouseup or @oncommand or @class='lk' or @class='s'] | -//input[not(@type='hidden')] | //a | //area | //iframe | //textarea | //button -| //select | //xhtml:*[@onclick or @onmouseover or @onmousedown or @onmouseup -or @oncommand or @class='lk' or @class='s'] | +(default: +++//*[@onclick or @onmouseover or @onmousedown or @onmouseup or +@oncommand or @class='lk' or @role='link'] | //input[not(@type='hidden')] | //a +| //area | //iframe | //textarea | //button | //select | //xhtml:input[not(@type='hidden')] | //xhtml:a | //xhtml:area | //xhtml:iframe | //xhtml:textarea | //xhtml:button | //xhtml:select+++) @@ -394,11 +392,10 @@ ____ ||'hinttags' 'ht'|| string ____ (default: +++//*[@onclick or @onmouseover or @onmousedown or @onmouseup or -@oncommand or @class='lk' or @class='s'] | //input[not(@type='hidden')] | //a -| //area | //iframe | //textarea | //button | //select | //xhtml:*[@onclick or -@onmouseover or @onmousedown or @onmouseup or @oncommand or @class='lk' or -@class='s'] | //xhtml:input[not(@type='hidden')] | //xhtml:a | //xhtml:area | -//xhtml:iframe | //xhtml:textarea | //xhtml:button | //xhtml:select+++) +@oncommand or @class='lk' or @role='link'] | //input[not(@type='hidden')] | //a +| //area | //iframe | //textarea | //button | //select | +//xhtml:input[not(@type='hidden')] | //xhtml:a | //xhtml:area | //xhtml:iframe +| //xhtml:textarea | //xhtml:button | //xhtml:select+++) XPath string of hintable elements activated by [m]f[m] and [m]F[m] ____