var PLUGIN_INFO =
{NAME}
History search backward like UNIX shell.
UNIX シェルのような、C-rで履歴検索を行うプラグイン
2.0
2.0
https://github.com/vimpr/vimperator-plugins/raw/master/history-search-backward.js
Yuichi Tateno
MIT
0.2
||
liberator.globalVariables.history_search_backward_map = [''];
||<
]]>
;
(function() {
    let p = function(msg) {
        Application.console.log(''+msg);
    }
    let evalWithContext = function(func, context) {
        let str;
        let fstr = func.toString();
        if (fstr.indexOf('function () {') == 0) {
            str = fstr.replace(/.*?{([\s\S]+)}.*?/m, "$1");
        } else {
            str = '(' + fstr + ')()';
        }
        return liberator.eval(str, context);
    }
    let showCompletions = function() {
        if (!options.get('wildoptions').has('auto')) {
            evalWithContext(function() {
                completions.complete(true, false);
                completions.itemList.show();
            }, commandline.input);
        }
    }
    let next = function() {
        evalWithContext(function() completions.tab(false), commandline.input);
    }
    let prev = function() {
        evalWithContext(function() completions.tab(true), commandline.input);
    }
    const commandlineWidget = document.getElementById("liberator-commandline");
    mappings.addUserMap([modes.COMMAND_LINE], 
        liberator.globalVariables.history_search_backward_map || [''], 
        'History incremental search backward.', 
        function() 
        {
            if (evalWithContext(function() completions.itemList.visible(), commandline.input)) {
                next();
                return;
            }
            let command = commandline.command || '';
            let completionsList = [[key, i] for ([i, key] in storage['history-command'])].
                                      filter(function([key, i]) key).reverse();
            commandline.input('bck-i-search: ', function(str) {
                try {
                    liberator.execute(str);
                } catch(e) {};
                modes.pop();
                return;
            }, {
                completer: function(context) {
                    context.title = ['CommandLine History', 'INDEX'];
                    context.completions = completionsList;
                },
                onChange: function() {
                    showCompletions();
                },
                default: command,
            });
            showCompletions();
        }
    );
})();