aboutsummaryrefslogtreecommitdiffstats
path: root/history-search-backward.js
blob: 17319d30cf0266de4fba29ff59fffc1215875168 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
var PLUGIN_INFO =
<VimperatorPlugin>
<name>{NAME}</name>
<description>History search backward like UNIX shell.</description>
<description lang="ja">UNIX シェルのようなC-rで履歴検索を行うプラグイン</description>
<minVersion>2.0</minVersion>
<maxVersion>2.0</maxVersion>
<updateURL>http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/history-search-backward.js</updateURL>
<author mail="hotchpotch@gmail.com" homepage="http://d.hatena.ne.jp/secondlife/">Yuichi Tateno</author>
<license>MIT</license>
<version>0.1</version>
<detail><![CDATA[
UNIX シェルのようにコマンドラインで C-r でヒストリ検索を行うプラグインですmap の変更設定は以下のように行えます
>||
liberator.globalVariables.history_search_backward_map = ['<C-r>'];
||<

]]></detail>
</VimperatorPlugin>;

(function() {
    let p = function(msg) {
        Application.console.log(''+msg);
    }

    const FAKE_TAB_EVENT = {
        type: 'keypress',
        liberatorString: '<Tab>',
        preventDefault: function() true,
        stopPropagation: function() true,
    };

    mappings.addUserMap([modes.COMMAND_LINE], liberator.globalVariables.history_search_backward_map || ['<C-r>'], 'History search backward.', 
    function() 
    {
        let command = commandline.command || '';
        commandline.input(options.get('wildoptions').has('auto') ? 'bck-i-search: ' : 'bck-search: ', function(str) {
            try {
                liberator.echo(liberator.execute(str));
            } catch(e) {};
            this.close();
            return;
        }, {
            completer: function(context) {
                context.title = ['CommandLine History', 'INDEX'];
                context.completions = [[key, i] for ([i, key] in storage['history-command'])].filter(function([key, i]) key).reverse();
            },
            onChange: function() {
                // this.onEvent(FAKE_TAB_EVENT);
            },
            default: command,
        });
    });

})();