mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-20 04:07:59 +01:00
Fix broken JS completion.
--HG-- branch : testing
This commit is contained in:
@@ -99,8 +99,8 @@ dist: $(XPI)
|
|||||||
|
|
||||||
$(RDF): $(RDF_IN) Makefile
|
$(RDF): $(RDF_IN) Makefile
|
||||||
@echo "Preparing release..."
|
@echo "Preparing release..."
|
||||||
$(SED) -e "s,###VERSION###,$(VERSION),g" \
|
$(SED) -e "s,@VERSION@,$(VERSION),g" \
|
||||||
-e "s,###DATE###,$(BUILD_DATE),g" \
|
-e "s,@DATE@,$(BUILD_DATE),g" \
|
||||||
< $< > $@
|
< $< > $@
|
||||||
@echo "SUCCESS: $@"
|
@echo "SUCCESS: $@"
|
||||||
|
|
||||||
|
|||||||
@@ -656,8 +656,11 @@ const Bookmarks = Module("bookmarks", {
|
|||||||
let rest = item.url.length - end.length;
|
let rest = item.url.length - end.length;
|
||||||
let query = item.url.substring(begin.length, rest);
|
let query = item.url.substring(begin.length, rest);
|
||||||
if (item.url.substr(rest) == end && query.indexOf("&") == -1) {
|
if (item.url.substr(rest) == end && query.indexOf("&") == -1) {
|
||||||
item.url = decodeURIComponent(query.replace(/#.*/, ""));
|
try {
|
||||||
return item;
|
item.url = decodeURIComponent(query.replace(/#.*/, ""));
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
catch (e) {}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}).filter(util.identity);
|
}).filter(util.identity);
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ const Buffer = Module("buffer", {
|
|||||||
// called when the active document is scrolled
|
// called when the active document is scrolled
|
||||||
_updateBufferPosition: function _updateBufferPosition() {
|
_updateBufferPosition: function _updateBufferPosition() {
|
||||||
statusline.updateBufferPosition();
|
statusline.updateBufferPosition();
|
||||||
modes.show();
|
modes.show(); // Clear the status line.
|
||||||
},
|
},
|
||||||
|
|
||||||
onDOMContentLoaded: function onDOMContentLoaded(event) {
|
onDOMContentLoaded: function onDOMContentLoaded(event) {
|
||||||
@@ -283,6 +283,7 @@ const Buffer = Module("buffer", {
|
|||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
statusline.updateBufferPosition();
|
statusline.updateBufferPosition();
|
||||||
statusline.updateZoomLevel();
|
statusline.updateZoomLevel();
|
||||||
|
modes.show(); // Clear the status line.
|
||||||
}, 500);
|
}, 500);
|
||||||
},
|
},
|
||||||
// called at the very end of a page load
|
// called at the very end of a page load
|
||||||
|
|||||||
@@ -361,7 +361,7 @@ const RangeFind = Class("RangeFind", {
|
|||||||
// This doesn't work yet.
|
// This doesn't work yet.
|
||||||
resetCaret: function () {
|
resetCaret: function () {
|
||||||
let equal = RangeFind.equal;
|
let equal = RangeFind.equal;
|
||||||
letselection = this.win.getSelection();
|
let selection = this.win.getSelection();
|
||||||
if (selection.rangeCount == 0)
|
if (selection.rangeCount == 0)
|
||||||
selection.addRange(this.pageStart);
|
selection.addRange(this.pageStart);
|
||||||
function getLines() {
|
function getLines() {
|
||||||
@@ -627,7 +627,13 @@ const RangeFind = Class("RangeFind", {
|
|||||||
range.collapse(before);
|
range.collapse(before);
|
||||||
return range;
|
return range;
|
||||||
},
|
},
|
||||||
equal: function (r1, r2) !r1.compareBoundaryPoints(Range.START_TO_START, r2) && !r1.compareBoundaryPoints(Range.END_TO_END, r2)
|
equal: function (r1, r2) {
|
||||||
|
try {
|
||||||
|
return !r1.compareBoundaryPoints(Range.START_TO_START, r2) && !r1.compareBoundaryPoints(Range.END_TO_END, r2)
|
||||||
|
}
|
||||||
|
catch (e) {}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// vim: set fdm=marker sw=4 ts=4 et:
|
// vim: set fdm=marker sw=4 ts=4 et:
|
||||||
|
|||||||
@@ -268,7 +268,7 @@ const Hints = Module("hints", {
|
|||||||
let hint = { elem: elem, showText: false };
|
let hint = { elem: elem, showText: false };
|
||||||
|
|
||||||
// TODO: for iframes, this calculation is wrong
|
// TODO: for iframes, this calculation is wrong
|
||||||
rect = elem.getBoundingClientRect();
|
let rect = elem.getBoundingClientRect();
|
||||||
if (!rect || rect.top > height || rect.bottom < 0 || rect.left > width || rect.right < 0)
|
if (!rect || rect.top > height || rect.bottom < 0 || rect.left > width || rect.right < 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,10 @@ const JavaScript = Module("javascript", {
|
|||||||
let seen = {};
|
let seen = {};
|
||||||
let ret = {};
|
let ret = {};
|
||||||
|
|
||||||
try {
|
if(obj == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(options["jsdebugger"]) {
|
||||||
let orig = obj;
|
let orig = obj;
|
||||||
let top = services.get("debugger").wrapValue(obj);
|
let top = services.get("debugger").wrapValue(obj);
|
||||||
|
|
||||||
@@ -56,13 +59,16 @@ const JavaScript = Module("javascript", {
|
|||||||
}
|
}
|
||||||
// The debugger doesn't list some properties. I can't guess why.
|
// The debugger doesn't list some properties. I can't guess why.
|
||||||
for (let k in orig)
|
for (let k in orig)
|
||||||
if (k in orig && !('|' + k in seen) && obj.hasOwnProperty(k) == toplevel)
|
if (k in orig && !('|' + k in seen) && orig.hasOwnProperty(k) == toplevel)
|
||||||
yield [k, this.getKey(orig, k)]
|
yield [k, this.getKey(orig, k)]
|
||||||
}
|
}
|
||||||
catch(e) {
|
else {
|
||||||
for (k in allkeys(obj))
|
for (k in allkeys(obj))
|
||||||
if (obj.hasOwnProperty(k) == toplevel)
|
try {
|
||||||
yield [k, this.getKey(obj, k)];
|
if (obj.hasOwnProperty(k) == toplevel)
|
||||||
|
yield [k, this.getKey(obj, k)];
|
||||||
|
}
|
||||||
|
catch (e) {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -230,8 +236,6 @@ const JavaScript = Module("javascript", {
|
|||||||
case "'":
|
case "'":
|
||||||
case "/":
|
case "/":
|
||||||
case "{":
|
case "{":
|
||||||
this._push(this._c);
|
|
||||||
break;
|
|
||||||
case "[":
|
case "[":
|
||||||
this._push(this._c);
|
this._push(this._c);
|
||||||
break;
|
break;
|
||||||
@@ -341,6 +345,10 @@ const JavaScript = Module("javascript", {
|
|||||||
|
|
||||||
_complete: function (objects, key, compl, string, last) {
|
_complete: function (objects, key, compl, string, last) {
|
||||||
const self = this;
|
const self = this;
|
||||||
|
|
||||||
|
if(!options["jsdebugger"] && !this.context.message)
|
||||||
|
this.context.message = "For better completion data, please enable the JavaScript debugger (:set jsdebugger)";
|
||||||
|
|
||||||
let orig = compl;
|
let orig = compl;
|
||||||
if (!compl) {
|
if (!compl) {
|
||||||
compl = function (context, obj, recurse) {
|
compl = function (context, obj, recurse) {
|
||||||
@@ -427,7 +435,8 @@ const JavaScript = Module("javascript", {
|
|||||||
// Okay, have parse stack. Figure out what we're completing.
|
// Okay, have parse stack. Figure out what we're completing.
|
||||||
|
|
||||||
// Find any complete statements that we can eval before we eval our object.
|
// Find any complete statements that we can eval before we eval our object.
|
||||||
// This allows for things like: let doc = window.content.document; let elem = doc.createElement...; elem.<Tab>
|
// This allows for things like:
|
||||||
|
// let doc = window.content.document; let elem = doc.createEle<Tab> ...
|
||||||
let prev = 0;
|
let prev = 0;
|
||||||
for (let [, v] in Iterator(this._get(0).fullStatements)) {
|
for (let [, v] in Iterator(this._get(0).fullStatements)) {
|
||||||
let key = this._str.substring(prev, v + 1);
|
let key = this._str.substring(prev, v + 1);
|
||||||
@@ -437,14 +446,13 @@ const JavaScript = Module("javascript", {
|
|||||||
prev = v + 1;
|
prev = v + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// In a string. Check if we're dereferencing an object.
|
// In a string. Check if we're dereferencing an object or
|
||||||
// Otherwise, do nothing.
|
// completing a function argument. Otherwise, do nothing.
|
||||||
if (this._last == "'" || this._last == '"') {
|
if (this._last == "'" || this._last == '"') {
|
||||||
//
|
|
||||||
// str = "foo[bar + 'baz"
|
// str = "foo[bar + 'baz"
|
||||||
// obj = "foo"
|
// obj = "foo"
|
||||||
// key = "bar + ''"
|
// key = "bar + ''"
|
||||||
//
|
|
||||||
|
|
||||||
// The top of the stack is the sting we're completing.
|
// The top of the stack is the sting we're completing.
|
||||||
// Wrap it in its delimiters and eval it to process escape sequences.
|
// Wrap it in its delimiters and eval it to process escape sequences.
|
||||||
@@ -520,7 +528,7 @@ const JavaScript = Module("javascript", {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// str = "foo.bar.baz"
|
// str = "foo.bar.baz"
|
||||||
// obj = "foo.bar"
|
// obj = "foo.bar"
|
||||||
// key = "baz"
|
// key = "baz"
|
||||||
@@ -528,11 +536,11 @@ const JavaScript = Module("javascript", {
|
|||||||
// str = "foo"
|
// str = "foo"
|
||||||
// obj = [modules, window]
|
// obj = [modules, window]
|
||||||
// key = "foo"
|
// key = "foo"
|
||||||
//
|
|
||||||
|
|
||||||
let [offset, obj, key] = this._getObjKey(-1);
|
let [offset, obj, key] = this._getObjKey(-1);
|
||||||
|
|
||||||
// Wait for a keypress before completing the default objects.
|
// Wait for a keypress before completing when there's no key
|
||||||
if (!this.context.tabPressed && key == "" && obj.length > 1) {
|
if (!this.context.tabPressed && key == "" && obj.length > 1) {
|
||||||
this.context.waitingForTab = true;
|
this.context.waitingForTab = true;
|
||||||
this.context.message = "Waiting for key press";
|
this.context.message = "Waiting for key press";
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ const Liberator = Module("liberator", {
|
|||||||
forceNewWindow: false,
|
forceNewWindow: false,
|
||||||
|
|
||||||
/** @property {string} The Liberator version string. */
|
/** @property {string} The Liberator version string. */
|
||||||
version: "###VERSION### (created: ###DATE###)", // these VERSION and DATE tokens are replaced by the Makefile
|
version: "@VERSION@ (created: @DATE@)", // these VERSION and DATE tokens are replaced by the Makefile
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @property {Object} The map of command-line options. These are
|
* @property {Object} The map of command-line options. These are
|
||||||
@@ -331,7 +331,7 @@ const Liberator = Module("liberator", {
|
|||||||
// you don't like them you can set verbose=0, or use :silent when
|
// you don't like them you can set verbose=0, or use :silent when
|
||||||
// someone adds it. I reckon another flag and 'class' of messages
|
// someone adds it. I reckon another flag and 'class' of messages
|
||||||
// is just going to unnecessarily complicate things. --djk
|
// is just going to unnecessarily complicate things. --djk
|
||||||
flags |= commandline.APPEND_TO_MESSAGES | commandline.DISALLOW_MULTILINE;
|
flags |= commandline.APPEND_TO_MESSAGES; // | commandline.DISALLOW_MULTILINE;
|
||||||
|
|
||||||
if (verbosity == null)
|
if (verbosity == null)
|
||||||
verbosity = 0; // verbosity level is exclusionary
|
verbosity = 0; // verbosity level is exclusionary
|
||||||
|
|||||||
@@ -726,7 +726,7 @@ const Util = Module("util", {
|
|||||||
|
|
||||||
// Ok, not a valid proto. If it looks like URL-ish (foo.com/bar),
|
// Ok, not a valid proto. If it looks like URL-ish (foo.com/bar),
|
||||||
// let Gecko figure it out.
|
// let Gecko figure it out.
|
||||||
if (/[.\/]/.test(url) && !/\s/.test(url) || /^[\w-.]+:\d+(?:\/|$)/.test(url))
|
if (/^[a-zA-Z0-9-.]+(?:\/|$)/.test(url) && /[.\/]/.test(url) && !/\s/.test(url) || /^[a-zA-Z0-9-.]+:\d+(?:\/|$)/.test(url))
|
||||||
return url;
|
return url;
|
||||||
|
|
||||||
// TODO: it would be clearer if the appropriate call to
|
// TODO: it would be clearer if the appropriate call to
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ getfiles () {
|
|||||||
find "$@" -not -path '*\.hg*' 2>/dev/null | grep -E "$filter" || true
|
find "$@" -not -path '*\.hg*' 2>/dev/null | grep -E "$filter" || true
|
||||||
}
|
}
|
||||||
copytext () {
|
copytext () {
|
||||||
sed -e "s,###VERSION###,$VERSION,g" \
|
sed -e "s,@VERSION@,$VERSION,g" \
|
||||||
-e "s,###DATE###,$BUILD_DATE,g" \
|
-e "s,@DATE@,$BUILD_DATE,g" \
|
||||||
<"$1" >"$2"
|
<"$1" >"$2"
|
||||||
cmp -s "$1" "$2" ||
|
cmp -s "$1" "$2" ||
|
||||||
( echo "modified: $1"; diff -u "$1" "$2" | grep '^[-+][^-+]' )
|
( echo "modified: $1"; diff -u "$1" "$2" | grep '^[-+][^-+]' )
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ BUGS:
|
|||||||
|
|
||||||
FEATURES:
|
FEATURES:
|
||||||
8 Document Textarea, Caret and Visual modes.
|
8 Document Textarea, Caret and Visual modes.
|
||||||
8 Incremental searches should retreat to their starting position on <Backspace>
|
|
||||||
8 Replace config.name tests in liberator with more specific feature
|
8 Replace config.name tests in liberator with more specific feature
|
||||||
tests or overridable APIs where at all feasible.
|
tests or overridable APIs where at all feasible.
|
||||||
8 change the extension ID to vimperator@vimperator.org rather than
|
8 change the extension ID to vimperator@vimperator.org rather than
|
||||||
@@ -65,25 +64,11 @@ FEATURES:
|
|||||||
8 :redir and 'verbosefile'
|
8 :redir and 'verbosefile'
|
||||||
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
|
||||||
8 all search commands should start searching from the top of the visible viewport
|
8 all search commands should start searching from the top of the visible viewport
|
||||||
8 :addsearch wikpedia http://en.wikipedia.org/wiki/Special:Search?search=%s to allow saving of
|
|
||||||
quick searches in the RC file.
|
|
||||||
Why not just add a bookmark? --Kris
|
|
||||||
This would require performance tests, how fast it is to add 20 keywords that way, as we need
|
|
||||||
to search all existing bookmarks to see if the keyword is already defined, and then just update
|
|
||||||
that bookmark. --mst
|
|
||||||
|
|
||||||
Wah? I don't see how that's especially relevant, since they only
|
|
||||||
need to be added once, but, if you insist:
|
|
||||||
:100time bookmarks.getKeywords().some(function(k) k.keyword == "wikipedia")
|
|
||||||
Code execution summary
|
|
||||||
Executed: 100 times
|
|
||||||
Average time: 2.48 msec
|
|
||||||
Total time: 0.25 sec
|
|
||||||
--Kris
|
|
||||||
|
|
||||||
8 allow for multiple ex commands separated with | (see #24)
|
8 allow for multiple ex commands separated with | (see #24)
|
||||||
8 <C-o>/<C-i> should work as in vim (i.e., save page positions as well as
|
8 <C-o>/<C-i> should work as in vim (i.e., save page positions as well as
|
||||||
locations in the history list).
|
locations in the history list).
|
||||||
|
8 jump to the next heading with ]h, next image ]i, previous textbox [t and so on
|
||||||
|
8 pipe selected text/link/website to an external command
|
||||||
7 use ctrl-n/p in insert mode for word completion
|
7 use ctrl-n/p in insert mode for word completion
|
||||||
7 implement QuickFix window based on ItemList
|
7 implement QuickFix window based on ItemList
|
||||||
7 wherever possible: get rid of dialogs and ask console-like dialog questions
|
7 wherever possible: get rid of dialogs and ask console-like dialog questions
|
||||||
@@ -93,7 +78,7 @@ FEATURES:
|
|||||||
opera's fast forward does something like this
|
opera's fast forward does something like this
|
||||||
7 make an option to disable session saving by default when you close Firefox
|
7 make an option to disable session saving by default when you close Firefox
|
||||||
7 The output of the pageinfo-command should contain the security-information of ssl-encrypted sites
|
7 The output of the pageinfo-command should contain the security-information of ssl-encrypted sites
|
||||||
7 Add :every command
|
7 :grep support (needs location list)
|
||||||
6 :mksession
|
6 :mksession
|
||||||
6 add [count] support to :b* and :tab* commands where missing
|
6 add [count] support to :b* and :tab* commands where missing
|
||||||
6 registers
|
6 registers
|
||||||
@@ -101,12 +86,10 @@ FEATURES:
|
|||||||
always be the default register. --Ted
|
always be the default register. --Ted
|
||||||
6 check/correct spellings in insert mode with some mappings
|
6 check/correct spellings in insert mode with some mappings
|
||||||
6 add more autocommands (TabClose, TabOpen, TabChanged etc)
|
6 add more autocommands (TabClose, TabOpen, TabChanged etc)
|
||||||
6 jump to the next heading with ]h, next image ]i, previous textbox [t and so on
|
|
||||||
6 :grep support (needs location list)
|
|
||||||
6 pipe selected text/link/website to an external command
|
|
||||||
6 Use ctrl-w+j/k/w to switch between sidebar, content, preview window
|
6 Use ctrl-w+j/k/w to switch between sidebar, content, preview window
|
||||||
6 Command :tags for getting a list of used tags
|
6 Command :tags for getting a list of used tags
|
||||||
6 ;?<hint> should show more information
|
6 ;?<hint> should show more information
|
||||||
|
6 Add information to liberator/HACKING file about testing and optimization
|
||||||
5 when looking at a zoomed out image (because it's large), zi should zoom in
|
5 when looking at a zoomed out image (because it's large), zi should zoom in
|
||||||
maybe with this? : http://mxr.mozilla.org/seamonkey/source/content/html/document/public/nsIImageDocument.idl
|
maybe with this? : http://mxr.mozilla.org/seamonkey/source/content/html/document/public/nsIImageDocument.idl
|
||||||
5 make a command to search within google search results
|
5 make a command to search within google search results
|
||||||
@@ -117,8 +100,5 @@ FEATURES:
|
|||||||
3 add a command-line window (:help cmdline-window in Vim).
|
3 add a command-line window (:help cmdline-window in Vim).
|
||||||
3 Splitting Windows with [:sp :vsp ctrl-w,s ctrl-w,v] and closing with [ctrl-w,q], moving with [ctrl-w,w or tab]
|
3 Splitting Windows with [:sp :vsp ctrl-w,s ctrl-w,v] and closing with [ctrl-w,q], moving with [ctrl-w,w or tab]
|
||||||
have a look into the split browser extension
|
have a look into the split browser extension
|
||||||
1 Add information to liberator/HACKING file about testing and optimization
|
|
||||||
1 Document remote branches in liberator/HACKING
|
|
||||||
1 Reformat liberator/HACKING so that git diff can find sections and report changes @ somewhere
|
1 Reformat liberator/HACKING so that git diff can find sections and report changes @ somewhere
|
||||||
- many other ideas are listed in the wiki
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<Description about="urn:mozilla:install-manifest">
|
<Description about="urn:mozilla:install-manifest">
|
||||||
<em:id>vimperator@mozdev.org</em:id>
|
<em:id>vimperator@mozdev.org</em:id>
|
||||||
<em:name>Vimperator</em:name>
|
<em:name>Vimperator</em:name>
|
||||||
<em:version>###VERSION###</em:version>
|
<em:version>@VERSION@</em:version>
|
||||||
<em:description>Make Firefox behave like Vim</em:description>
|
<em:description>Make Firefox behave like Vim</em:description>
|
||||||
<em:creator>Martin Stubenschrott</em:creator>
|
<em:creator>Martin Stubenschrott</em:creator>
|
||||||
<em:homepageURL>http://vimperator.org</em:homepageURL>
|
<em:homepageURL>http://vimperator.org</em:homepageURL>
|
||||||
|
|||||||
Reference in New Issue
Block a user