1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-20 10:47:59 +01:00

Merge branch 'master' into vimperator-2.1

This commit is contained in:
Doug Kearns
2009-01-15 22:28:23 +11:00
7 changed files with 141 additions and 57 deletions

View File

@@ -208,7 +208,8 @@ function Buffer() //{{{
"Start caret mode", "Start caret mode",
function () 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); options.setPref("accessibility.browsewithcaret", true);
}); });

View File

@@ -923,6 +923,23 @@ function Editor() //{{{
// 1 not !: opposite mode (first), add/change 'second' and END // 1 not !: opposite mode (first), add/change 'second' and END
// 1 not !: same mode (first), overwrite first this 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) addAbbreviation: function (filter, lhs, rhs)
{ {
if (!abbreviations[lhs]) if (!abbreviations[lhs])
@@ -980,7 +997,12 @@ function Editor() //{{{
abbreviations[lhs][0] = [filter, rhs]; 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(); let textbox = getEditor();
if (!textbox) if (!textbox)
@@ -1012,15 +1034,29 @@ function Editor() //{{{
return true; 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 <b>filter</b> and <b>lhs</b>.
*
* @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) getAbbreviations: function (filter, lhs)
{ {
// ! -> list all, on c or i ! matches too
let searchFilter = (filter == "!") ? "!ci" : filter + "!"; let searchFilter = (filter == "!") ? "!ci" : filter + "!";
return list = [[mode, left, right] for ([left, [mode, right]] in abbrevs()) return list = [[mode, left, right] for ([left, [mode, right]] in abbrevs())
if (searchFilter.indexOf(mode) >= 0 && left.indexOf(lhs || "") == 0)]; if (searchFilter.indexOf(mode) >= 0 && left.indexOf(lhs || "") == 0)];
}, },
/**
* Lists all abbreviations matching <b>filter</b> and <b>lhs</b>.
*
* @param {string} filter The mode filter. (@see #addAbbreviation)
* @param {string} lhs The LHS of the abbreviation.
* (@see #addAbbreviation)
*/
listAbbreviations: function (filter, lhs) listAbbreviations: function (filter, lhs)
{ {
let list = this.getAbbreviations(filter, lhs); let list = this.getAbbreviations(filter, lhs);
@@ -1042,6 +1078,13 @@ function Editor() //{{{
} }
}, },
/**
* Deletes all abbreviations matching <b>filter</b> and <b>lhs</b>.
*
* @param {string} filter The mode filter. (@see #addAbbreviation)
* @param {string} lhs The LHS of the abbreviation.
* (@see #addAbbreviation)
*/
removeAbbreviation: function (filter, lhs) removeAbbreviation: function (filter, lhs)
{ {
if (!lhs) if (!lhs)
@@ -1088,23 +1131,17 @@ function Editor() //{{{
return false; return false;
}, },
/**
* Removes all abbreviations matching <b>filter</b>.
*
* @param {string} filter The mode filter. (@see #addAbbreviation)
*/
removeAllAbbreviations: function (filter) removeAllAbbreviations: function (filter)
{ {
if (filter == "!") let searchFilter = (filter == "!") ? "!ci" : filter + "!";
{ for ([lhs, [mode, rhs]] in abbrevs())
abbreviations = {}; if (searchFilter.indexOf(mode) >= 0)
} this.removeAbbreviation(filter, lhs);
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);
}
}
}
} }
//}}} //}}}
}; };

View File

@@ -37,6 +37,7 @@ the terms of any one of the MPL, the GPL or the LGPL.
// : 'linksearch' searches should highlight link matches only // : 'linksearch' searches should highlight link matches only
// : changing any search settings should also update the search state including highlighting // : changing any search settings should also update the search state including highlighting
// : incremental searches shouldn't permanently update search modifiers // : 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 // make sure you only create this object when the "liberator" object is ready
/** /**
@@ -320,8 +321,13 @@ function Search() //{{{
return { 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) openSearchDialog: function (mode)
{ {
if (mode == modes.SEARCH_BACKWARD) if (mode == modes.SEARCH_BACKWARD)
@@ -338,14 +344,17 @@ function Search() //{{{
// TODO: focus the top of the currently visible screen // TODO: focus the top of the currently visible screen
}, },
// Finds text in a page
// TODO: backwards seems impossible i fear :( // TODO: backwards seems impossible i fear :(
find: function (str, backwards) /**
* Searches the current buffer for <b>str</b>.
*
* @param {string} str The string to find.
*/
find: function (str)
{ {
let fastFind = getBrowser().fastFind; let fastFind = getBrowser().fastFind;
processUserPattern(str); processUserPattern(str);
fastFind.caseSensitive = caseSensitive; fastFind.caseSensitive = caseSensitive;
found = fastFind.find(searchString, linksOnly) != Ci.nsITypeAheadFind.FIND_NOTFOUND; found = fastFind.find(searchString, linksOnly) != Ci.nsITypeAheadFind.FIND_NOTFOUND;
@@ -355,10 +364,16 @@ function Search() //{{{
return found; 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) 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<esc> after the original search. Since searchString is // we typed /foo<esc> after the original search. Since searchString is
// readonly we have to call find() again to update it. // readonly we have to call find() again to update it.
if (getBrowser().fastFind.searchString != lastSearchString) 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) searchKeyPressed: function (command)
{ {
if (options["incsearch"]) if (options["incsearch"])
this.find(command, backwards); 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 <Enter> 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) searchSubmitted: function (command, forcedBackward)
{ {
if (typeof forcedBackward === "boolean") if (typeof forcedBackward === "boolean")
@@ -432,16 +459,22 @@ function Search() //{{{
modes.reset(); 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
* <Esc> while typing a search.
*/
searchCanceled: function () searchCanceled: function ()
{ {
// TODO: code to reposition the document to the place before search started // TODO: code to reposition the document to the place before search started
}, },
// FIXME: Thunderbird incompatible // FIXME: Thunderbird incompatible
// this is not dependent on the value of 'hlsearch' /**
highlight: function (text) * Highlights all occurances of <b>str</b> in the buffer.
*
* @param str The string to highlight.
*/
highlight: function (str)
{ {
if (config.name == "Muttator") if (config.name == "Muttator")
return; return;
@@ -450,10 +483,10 @@ function Search() //{{{
if (highlightObj.getSpans(content.document).snapshotLength > 0) if (highlightObj.getSpans(content.document).snapshotLength > 0)
return; return;
if (!text) if (!str)
text = lastSearchString; str = lastSearchString;
highlightObj.highlightDoc(window.content, text); highlightObj.highlightDoc(window.content, str);
// recreate selection since _highlightDoc collapses the selection backwards // recreate selection since _highlightDoc collapses the selection backwards
getBrowser().fastFind.findAgain(false, linksOnly); 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"]) // TODO: remove highlighting from non-link matches (HTML - A/AREA with href attribute; XML - Xlink [type="simple"])
}, },
/**
* Clears all search highlighting.
*/
clear: function () clear: function ()
{ {
// FIXME: moves the selection
highlightObj.highlightDoc(window.content); highlightObj.highlightDoc(window.content);
// need to manually collapse the selection if the document is not // need to manually collapse the selection if the document is not
// highlighted // highlighted

View File

@@ -624,6 +624,7 @@ const liberator = (function () //{{{
// "complete" // "complete"
// TODO: "zoom": if the zoom value of the current buffer changed // TODO: "zoom": if the zoom value of the current buffer changed
// TODO: move to ui.js? // TODO: move to ui.js?
// Yes --djk
registerCallback: function (type, mode, func) registerCallback: function (type, mode, func)
{ {
if (!(type in callbacks)) if (!(type in callbacks))

View File

@@ -734,9 +734,9 @@ function History() //{{{
{ {
let sh = window.getWebNavigation().sessionHistory; let sh = window.getWebNavigation().sessionHistory;
context.anchor = false;
context.completions = [sh.getEntryAtIndex(i, false) for (i in util.range(sh.index, 0, true))]; 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" }; context.keys = { text: function (item) item.URI.spec, description: "title" };
liberator.dump(context.items);
}, },
count: true, count: true,
literal: 0 literal: 0
@@ -780,6 +780,7 @@ function History() //{{{
{ {
let sh = window.getWebNavigation().sessionHistory; 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.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" }; context.keys = { text: function (item) item.URI.spec, description: "title" };
}, },

View File

@@ -207,7 +207,7 @@ section:Ex{nbsp}commands[ex-cmd-index,:index]
||:pageinfo|| Show various page information + ||:pageinfo|| Show various page information +
||:pagestyle|| Select the author style sheet to apply + ||:pagestyle|| Select the author style sheet to apply +
||:play|| Replay a recorded macro + ||:play|| Replay a recorded macro +
||:preferences|| Show Firefox preferences + ||:preferences|| Show Firefox preferences dialog +
||:pwd|| Print the current directory name + ||:pwd|| Print the current directory name +
||:qmark|| Mark a URL with a letter for quick access + ||:qmark|| Mark a URL with a letter for quick access +
||:qmarks|| Show all QuickMarks + ||:qmarks|| Show all QuickMarks +

View File

@@ -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 'runtimepath'. The variable notation is _$VAR_ (terminated by a non-word
character) or _$\\{VAR}_. _%VAR%_ is also supported on Windows. 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 Firefox options can be viewed and set with the following commands:
any of these preferences use either of the following:
|:prefs| |:preferences| |:prefs| |:preferences|
||:pref[erences]|| ||:pref[erences]||
________________________________________________________________________________ ________________________________________________________________________________
Show Browser Preferences + Show the Firefox preferences dialog. You can change the browser preferences
You can change the browser preferences from this dialog. Be aware that not from this dialog. Be aware that not all Firefox preferences work, because
all Firefox preferences work, because Vimperator overrides some key Vimperator overrides some key bindings and changes Firefox's GUI.
bindings and changes Firefox's GUI.
________________________________________________________________________________ ________________________________________________________________________________
|:prefs!| |:preferences!| |:prefs!| |:preferences!|
||:pref[erences]!|| ||:pref[erences]!||
________________________________________________________________________________ ________________________________________________________________________________
@@ -184,7 +181,6 @@ Opens about:config in the current tab where you can change advanced Firefox
preferences. preferences.
________________________________________________________________________________ ________________________________________________________________________________
|:set!| |:set-!| |:set!| |:set-!|
||:se[t]! {preference}={value}|| + ||: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]. 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] section:List{nbsp}of{nbsp}options[list-options]
|\'act'| |\'activate'| |\'act'| |\'activate'|
@@ -275,11 +284,9 @@ ____
|\'eht'| |\'extendedhinttags'| |\'eht'| |\'extendedhinttags'|
||'extendedhinttags' 'eht'|| string ||'extendedhinttags' 'eht'|| string
____ ____
(default: +++//*[@onclick or @onmouseover (default: +++//*[@onclick or @onmouseover or @onmousedown or @onmouseup or
or @onmousedown or @onmouseup or @oncommand or @class='lk' or @class='s'] | @oncommand or @class='lk' or @role='link'] | //input[not(@type='hidden')] | //a
//input[not(@type='hidden')] | //a | //area | //iframe | //textarea | //button | //area | //iframe | //textarea | //button | //select |
| //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:input[not(@type='hidden')] | //xhtml:a | //xhtml:area | //xhtml:iframe
| //xhtml:textarea | //xhtml:button | //xhtml:select+++) | //xhtml:textarea | //xhtml:button | //xhtml:select+++)
@@ -385,11 +392,10 @@ ____
||'hinttags' 'ht'|| string ||'hinttags' 'ht'|| string
____ ____
(default: +++//*[@onclick or @onmouseover or @onmousedown or @onmouseup or (default: +++//*[@onclick or @onmouseover or @onmousedown or @onmouseup or
@oncommand or @class='lk' or @class='s'] | //input[not(@type='hidden')] | //a @oncommand or @class='lk' or @role='link'] | //input[not(@type='hidden')] | //a
| //area | //iframe | //textarea | //button | //select | //xhtml:*[@onclick or | //area | //iframe | //textarea | //button | //select |
@onmouseover or @onmousedown or @onmouseup or @oncommand or @class='lk' or //xhtml:input[not(@type='hidden')] | //xhtml:a | //xhtml:area | //xhtml:iframe
@class='s'] | //xhtml:input[not(@type='hidden')] | //xhtml:a | //xhtml:area | | //xhtml:textarea | //xhtml:button | //xhtml:select+++)
//xhtml:iframe | //xhtml:textarea | //xhtml:button | //xhtml:select+++)
XPath string of hintable elements activated by [m]f[m] and [m]F[m] XPath string of hintable elements activated by [m]f[m] and [m]F[m]
____ ____
@@ -601,6 +607,7 @@ ____
(default: _$VIMPERATOR_RUNTIME_ or Unix, Mac: "\~/.vimperator", Windows: "\~/vimperator") (default: _$VIMPERATOR_RUNTIME_ or Unix, Mac: "\~/.vimperator", Windows: "\~/vimperator")
List of directories searched for runtime files: + List of directories searched for runtime files: +
colors/ +
macros/ + macros/ +
plugin/ + plugin/ +