The code below defines a more extensive set of keystrokes for choosing completion types. Perhaps it will
be useful to someone.
/* Completion type changer */
// todo: on the fly in minibuffer
define_variable("set_completion_keys",
{w: [true, false, false],
b: [false, true, false],
h: [false, false, true ],
a: [true, false, true ],
i: [true, false, true ],
d: [true, true, false]},
"Keys to define in set_completion_keymap to get certain combinations " +
"of completions. Each key has a corresponding vector with three " +
"boolean values corresponding to webjumps, bookmarks and history.");
// Note: when QUERY_TYPE_UNIFIED works, change to: a: [true, true, true]
function set_completion(type) {
var c = set_completion_keys[type];
if (c == undefined)
throw new Error("invalid completion key: " + type);
url_completion_use_webjumps = c[0];
url_completion_use_bookmarks = c[1];
url_completion_use_history = c[2];
}
function show_completion(minibuffer) {
var ids = ["Completion:"];
url_completion_use_webjumps && ids.push("webjumps");
url_completion_use_bookmarks && ids.push("bookmarks");
url_completion_use_history && ids.push("history");
minibuffer.show(ids.join(" "));
}
/* Set completion type according to the last keystroke in the key sequence. */
interactive("set-completion", null, function (I) {
set_completion(I.key_sequence.pop());
show_completion(I.minibuffer);
});
interactive("show-completion", null, function (I) {
show_completion(I.minibuffer);
});
define_keymap("set_completion_keymap");
define_key(default_base_keymap, "C-l", set_completion_keymap);
for (let k in set_completion_keys)
define_key(set_completion_keymap, k, "set-completion");
define_key(set_completion_keymap, "S", "show-completion");
|