Message70

Author dkettler
Recipients retroj
Date 2008-09-26.03:08:02
Content
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");
History
Date User Action Args
2008-09-26 03:08:03dkettlersetmessageid: <1222398483.48.0.788701490511.issue10@servo.cc>
2008-09-26 03:08:03dkettlersetrecipients: + retroj
2008-09-26 03:08:03dkettlerlinkissue10 messages
2008-09-26 03:08:03dkettlercreate