1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-24 01:42:26 +01:00

Show QuickMarked status in statusbar; add URL completion to :qmark.

This commit is contained in:
Kris Maglione
2010-09-24 11:39:12 -04:00
parent 5a71f24eaa
commit d9e1e9bb1f
3 changed files with 51 additions and 22 deletions

View File

@@ -14,6 +14,9 @@
const QuickMarks = Module("quickmarks", {
init: function () {
this._qmarks = storage.newMap("quickmarks", { store: true });
storage.addObserver("quickmarks", function () {
statusline.updateUrl();
}, window);
},
/**
@@ -29,6 +32,20 @@ const QuickMarks = Module("quickmarks", {
dactyl.echomsg({ domains: [util.getHost(location)], message: "Added Quick Mark '" + qmark + "': " + location }, 1);
},
/**
* Returns a list of QuickMarks associates with the given URL.
*
* @param {string} url The url to find QuickMarks for.
* @return {[string]}
*/
find: function find(url) {
let res = [];
for (let [k, v] in this._qmarks)
if (dactyl.stringToURLArray(v).some(function (u) String.replace(u, /#.*/, "") == url))
res.push(k);
return res;
},
/**
* Deletes the specified quickmarks. The <b>filter</b> is a list of
* quickmarks and ranges are supported. Eg. "ab c d e-k".
@@ -120,15 +137,21 @@ const QuickMarks = Module("quickmarks", {
commands.add(["qma[rk]"],
"Mark a URL with a letter for quick access",
function (args) {
let matches = args.string.match(/^([a-zA-Z0-9])(?:\s+(.+))?$/);
if (!matches)
if (!/^[a-zA-Z0-9]$/.test(args[0]))
dactyl.echoerr("E488: Trailing characters");
else if (!matches[2])
quickmarks.add(matches[1], buffer.URL);
else if (!args[1])
quickmarks.add(args[0], buffer.URL);
else
quickmarks.add(matches[1], matches[2]);
quickmarks.add(args[0], args[1]);
},
{ argCount: "+" });
{
argCount: "+",
completer: function (context, args) {
if (args.length == 2)
return completion.url(context);
},
literal: 1
});
commands.add(["qmarks"],
"Show all QuickMarks",

View File

@@ -90,19 +90,9 @@ const StatusLine = Module("statusline", {
return url;
};
// TODO: this probably needs a more general solution.
if (url == null)
// TODO: this probably needs a more general solution.
url = losslessDecodeURI(buffer.URL);
// make it even more Vim-like
if (url == "about:blank") {
if (!buffer.title)
url = "[No Name]";
}
else {
url = url.replace(RegExp("^dactyl://help/(\\S+)#(.*)"), function (m, n1, n2) n1 + " " + decodeURIComponent(n2) + " [Help]")
.replace(RegExp("^dactyl://help/(\\S+)"), "$1 [Help]");
}
url = buffer.URL;
// when session information is available, add [+] when we can go
// backwards, [-] when we can go forwards
@@ -119,6 +109,20 @@ const StatusLine = Module("statusline", {
modified += UTF8("❤");
//modified += UTF8("♥");
}
if (modules.quickmarks)
modified += quickmarks.find(url.replace(/#.*/, "")).join("");
url = losslessDecodeURI(url);
// make it even more Vim-like
if (url == "about:blank") {
if (!buffer.title)
url = "[No Name]";
}
else {
url = url.replace(RegExp("^dactyl://help/(\\S+)#(.*)"), function (m, n1, n2) n1 + " " + decodeURIComponent(n2) + " [Help]")
.replace(RegExp("^dactyl://help/(\\S+)"), "$1 [Help]");
}
if (modified)
url += " [" + modified + "]";