mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-23 05:57:58 +01:00
experimental wildoptions=auto and awesome bar support, display flickers a
little for now
This commit is contained in:
4
NEWS
4
NEWS
@@ -8,6 +8,10 @@
|
|||||||
generous donation which made this behavior possible)
|
generous donation which made this behavior possible)
|
||||||
* IMPORTANT: ctrl-x/a never take possible negative URLs into account, it was just
|
* IMPORTANT: ctrl-x/a never take possible negative URLs into account, it was just
|
||||||
too unpredictable
|
too unpredictable
|
||||||
|
* new "l" flag for 'complete' to reuse the Firefox awesome bar for getting better
|
||||||
|
completions for :open. Works only when 'wildoptions' contains "auto"
|
||||||
|
* new wildoptions=auto option (default off for now), to automatically list
|
||||||
|
completions without the need to press the tab key
|
||||||
* new argument parser for ex commands, should tell better error messages when
|
* new argument parser for ex commands, should tell better error messages when
|
||||||
you do things like :bmark -tag=a,b instead of :bmark -tags=a,b
|
you do things like :bmark -tag=a,b instead of :bmark -tags=a,b
|
||||||
* :bdelete accepts an optional argument now
|
* :bdelete accepts an optional argument now
|
||||||
|
|||||||
1
TODO
1
TODO
@@ -13,6 +13,7 @@ BUGS:
|
|||||||
- :sidebar improvements (:sidebar! Downloads while downloads is open should refocus the sidebar)
|
- :sidebar improvements (:sidebar! Downloads while downloads is open should refocus the sidebar)
|
||||||
- http://www.maximonline.com/jokes/ - the prev and next buttons on the image map are not hinted
|
- http://www.maximonline.com/jokes/ - the prev and next buttons on the image map are not hinted
|
||||||
- ;f seems broken after a page load
|
- ;f seems broken after a page load
|
||||||
|
- ;s saves the page rather than the image
|
||||||
|
|
||||||
FEATURES:
|
FEATURES:
|
||||||
8 middleclick in content == p, and if command line is open, paste there the clipboard buffer
|
8 middleclick in content == p, and if command line is open, paste there the clipboard buffer
|
||||||
|
|||||||
@@ -232,6 +232,7 @@ liberator.Completion = function () //{{{
|
|||||||
}
|
}
|
||||||
|
|
||||||
var cpt = complete || liberator.options["complete"];
|
var cpt = complete || liberator.options["complete"];
|
||||||
|
var autoCompletions = liberator.options["wildoptions"].indexOf("auto") >= 0;
|
||||||
var suggestEngineAlias = liberator.options["suggestengines"] || "google";
|
var suggestEngineAlias = liberator.options["suggestengines"] || "google";
|
||||||
// join all completion arrays together
|
// join all completion arrays together
|
||||||
for (var i = 0; i < cpt.length; i++)
|
for (var i = 0; i < cpt.length; i++)
|
||||||
@@ -240,12 +241,30 @@ liberator.Completion = function () //{{{
|
|||||||
completions = completions.concat(this.search(filter)[1]);
|
completions = completions.concat(this.search(filter)[1]);
|
||||||
else if (cpt[i] == "f")
|
else if (cpt[i] == "f")
|
||||||
completions = completions.concat(this.file(filter, false)[1]);
|
completions = completions.concat(this.file(filter, false)[1]);
|
||||||
else if (cpt[i] == "b")
|
else if (!autoCompletions && cpt[i] == "b")
|
||||||
completions = completions.concat(liberator.bookmarks.get(filter));
|
completions = completions.concat(liberator.bookmarks.get(filter));
|
||||||
else if (cpt[i] == "h")
|
else if (!autoCompletions && cpt[i] == "h")
|
||||||
completions = completions.concat(liberator.history.get(filter));
|
completions = completions.concat(liberator.history.get(filter));
|
||||||
else if (cpt[i] == "S")
|
else if (cpt[i] == "S")
|
||||||
completions = completions.concat(this.searchEngineSuggest(filter, suggestEngineAlias)[1]);
|
completions = completions.concat(this.searchEngineSuggest(filter, suggestEngineAlias)[1]);
|
||||||
|
else if (autoCompletions && cpt[i] == "l") // add completions like Firefox's smart location bar
|
||||||
|
{
|
||||||
|
var completionService = Components.classes["@mozilla.org/browser/global-history;2"].
|
||||||
|
getService(Components.interfaces.nsIAutoCompleteSearch);
|
||||||
|
completionService.startSearch(filter, "", null, {
|
||||||
|
onSearchResult: function (search, result) {
|
||||||
|
//var res = "";// + util.objectToString(result) + "\n---\n";
|
||||||
|
//liberator.log(result.matchCount + " matches: " + result.searchResult);
|
||||||
|
var comp = [];
|
||||||
|
for (var i = 0; i < result.matchCount; i++)
|
||||||
|
{
|
||||||
|
comp.push([result.getValueAt(i), result.getCommentAt(i)]);
|
||||||
|
}
|
||||||
|
if (comp.length > 0 || result.searchResult == result.RESULT_SUCCESS)
|
||||||
|
liberator.commandline.setCompletions(completions.concat(comp));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return [start, completions];
|
return [start, completions];
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ liberator.CommandLine = function () //{{{
|
|||||||
|
|
||||||
const UNINITIALIZED = -2; // notifies us, if we need to start history/tab-completion from the beginning
|
const UNINITIALIZED = -2; // notifies us, if we need to start history/tab-completion from the beginning
|
||||||
|
|
||||||
var completionlist = new liberator.InformationList("liberator-completion", { minItems: 2, maxItems: 10 });
|
var completionlist = new liberator.InformationList("liberator-completion", { minItems: 1, maxItems: 10 });
|
||||||
var completions = [];
|
var completions = [];
|
||||||
|
|
||||||
// TODO: clean this up when it's not 3am...
|
// TODO: clean this up when it's not 3am...
|
||||||
@@ -130,6 +130,14 @@ liberator.CommandLine = function () //{{{
|
|||||||
var multilineRegexp = null;
|
var multilineRegexp = null;
|
||||||
var multilineCallback = null;
|
var multilineCallback = null;
|
||||||
|
|
||||||
|
liberator.registerCallback("change", liberator.modes.EX, function (command) {
|
||||||
|
if (liberator.options["wildoptions"].indexOf("auto") >= 0)
|
||||||
|
{
|
||||||
|
var res = liberator.completion.ex(command);
|
||||||
|
liberator.commandline.setCompletions(res[1], res[0]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
function setHighlightGroup(group)
|
function setHighlightGroup(group)
|
||||||
{
|
{
|
||||||
commandlineWidget.setAttribute("class", group);
|
commandlineWidget.setAttribute("class", group);
|
||||||
@@ -285,11 +293,12 @@ liberator.CommandLine = function () //{{{
|
|||||||
"Pause the message list window when more than one screen of listings is displayed",
|
"Pause the message list window when more than one screen of listings is displayed",
|
||||||
"boolean", true);
|
"boolean", true);
|
||||||
|
|
||||||
|
// TODO: doesn't belong in ui.js
|
||||||
liberator.options.add(["complete", "cpt"],
|
liberator.options.add(["complete", "cpt"],
|
||||||
"Items which are completed at the :[tab]open prompt",
|
"Items which are completed at the :[tab]open prompt",
|
||||||
"charlist", "sfbh",
|
"charlist", "sfbh",
|
||||||
{
|
{
|
||||||
validator: function (value) { return !/[^sfbhS]/.test(value); }
|
validator: function (value) { return !/[^sfbhSl]/.test(value); }
|
||||||
});
|
});
|
||||||
|
|
||||||
liberator.options.add(["suggestengines"],
|
liberator.options.add(["suggestengines"],
|
||||||
@@ -326,7 +335,10 @@ liberator.CommandLine = function () //{{{
|
|||||||
"Change how command line completion is done",
|
"Change how command line completion is done",
|
||||||
"stringlist", "",
|
"stringlist", "",
|
||||||
{
|
{
|
||||||
validator: function (value) { return /^(sort|)$/.test(value); }
|
validator: function (value)
|
||||||
|
{
|
||||||
|
return value.split(",").every(function (item) { return /^(sort|auto|)$/.test(item); });
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////}}}
|
/////////////////////////////////////////////////////////////////////////////}}}
|
||||||
@@ -434,6 +446,7 @@ liberator.CommandLine = function () //{{{
|
|||||||
multilineInputWidget.collapsed = true;
|
multilineInputWidget.collapsed = true;
|
||||||
multilineOutputWidget.collapsed = true;
|
multilineOutputWidget.collapsed = true;
|
||||||
completionlist.hide();
|
completionlist.hide();
|
||||||
|
completions = [];
|
||||||
|
|
||||||
setLine("", this.HL_NORMAL);
|
setLine("", this.HL_NORMAL);
|
||||||
},
|
},
|
||||||
@@ -673,6 +686,7 @@ liberator.CommandLine = function () //{{{
|
|||||||
completionlist.show();
|
completionlist.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (full)
|
if (full)
|
||||||
{
|
{
|
||||||
if (event.shiftKey)
|
if (event.shiftKey)
|
||||||
@@ -976,6 +990,24 @@ liberator.CommandLine = function () //{{{
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// to allow asynchronous adding of completions
|
||||||
|
setCompletions: function (compl, start)
|
||||||
|
{
|
||||||
|
if (liberator.mode != liberator.modes.COMMAND_LINE)
|
||||||
|
return;
|
||||||
|
|
||||||
|
completions = compl;
|
||||||
|
completionlist.show(compl, 10);
|
||||||
|
completionIndex = -1;
|
||||||
|
|
||||||
|
var command = this.getCommand();
|
||||||
|
completionPrefix = command.substring(0, commandWidget.selectionStart);
|
||||||
|
completionPostfix = command.substring(commandWidget.selectionStart);
|
||||||
|
|
||||||
|
if (typeof start == "number")
|
||||||
|
completionStartIndex = start;
|
||||||
|
},
|
||||||
|
|
||||||
resetCompletions: function ()
|
resetCompletions: function ()
|
||||||
{
|
{
|
||||||
completionIndex = historyIndex = UNINITIALIZED;
|
completionIndex = historyIndex = UNINITIALIZED;
|
||||||
@@ -1099,7 +1131,7 @@ liberator.InformationList = function (id, options) //{{{
|
|||||||
* use entries of 'compl' to fill the list.
|
* use entries of 'compl' to fill the list.
|
||||||
* Required format: [["left", "right"], ["another"], ["completion"]]
|
* Required format: [["left", "right"], ["another"], ["completion"]]
|
||||||
*/
|
*/
|
||||||
show: function (compl)
|
show: function (compl, rows)
|
||||||
{
|
{
|
||||||
//maxItems = liberator.options["previewheight"];
|
//maxItems = liberator.options["previewheight"];
|
||||||
|
|
||||||
@@ -1114,7 +1146,7 @@ liberator.InformationList = function (id, options) //{{{
|
|||||||
length = maxItems;
|
length = maxItems;
|
||||||
if (length >= minItems)
|
if (length >= minItems)
|
||||||
{
|
{
|
||||||
widget.setAttribute("rows", length.toString());
|
widget.setAttribute("rows", rows ? rows : length.toString());
|
||||||
widget.hidden = false;
|
widget.hidden = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -148,17 +148,22 @@ ____
|
|||||||
____
|
____
|
||||||
Items which are completed at the [c]:[tab]open[c] prompt. Available items:
|
Items which are completed at the [c]:[tab]open[c] prompt. Available items:
|
||||||
|
|
||||||
`---`--------------------------------
|
`---`--------------------------------------------------------------------------------
|
||||||
*s* Search engines and keyword URLs
|
*s* Search engines and keyword URLs
|
||||||
*f* Local files
|
*f* Local files
|
||||||
*b* Bookmarks
|
*b* Bookmarks
|
||||||
*h* History
|
*h* History
|
||||||
|
*l* Firefox location bar entries (bookmarks and history sorted in an intelligent way)
|
||||||
*S* Suggest engines
|
*S* Suggest engines
|
||||||
-------------------------------------
|
-------------------------------------------------------------------------------------
|
||||||
|
|
||||||
The order is important, so [c]:set complete=bs[c] would list bookmarks first,
|
The order is important, so [c]:set complete=bs[c] would list bookmarks first,
|
||||||
and then any available quick searches. Add "sort" to the 'wildoptions' option
|
and then any available quick searches. Add "sort" to the 'wildoptions' option
|
||||||
if you want all entries sorted.
|
if you want all entries sorted. If 'wildoptions' contains "auto", "b" and "h"
|
||||||
|
are not available for performance reasons but you can use "l" to achieve
|
||||||
|
a similar effect. On the other hand "l" does not yet work, when 'wildoptions'
|
||||||
|
does NOT contain "auto".
|
||||||
|
|
||||||
____
|
____
|
||||||
|
|
||||||
|
|
||||||
@@ -614,8 +619,9 @@ ____
|
|||||||
____
|
____
|
||||||
A list of words that change how command line completion is done.
|
A list of words that change how command line completion is done.
|
||||||
|
|
||||||
Currently only one word is allowed:
|
Possible words:
|
||||||
`------`---------------------------------
|
`------`---------------------------------
|
||||||
|
auto Automatically show completions while you are typing
|
||||||
sort Always sorts completion list, overriding the 'complete' option.
|
sort Always sorts completion list, overriding the 'complete' option.
|
||||||
-----------------------------------------
|
-----------------------------------------
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user