UNPKG

1.21 kBJavaScriptView Raw
1'use strict';
2
3var log = require('./log')
4 , config = require('../config/current')
5 , inspect = require('./utl').inspect
6 , state = require('./state')
7 , wire = require('./wire')
8 ;
9
10function disabled(config, plugin) {
11 if (!config.plugins) return false;
12
13 var val = config.plugins[plugin];
14 return val !== undefined && val !== true;
15}
16
17function initVim(config, repl) {
18 if (disabled(config, 'vim')) return;
19
20 var vim = require('../lib/vim-rli')(repl);
21 repl.imap = vim.map.insert;
22 repl.nmap = vim.map.normal;
23 repl.__defineGetter__('maps', function () { log.println(inspect(vim.map.mappings)); });
24
25 wire.on('emit-code.start', vim.forceInsert.bind(vim));
26
27 if (config.map) {
28 if (typeof config.map !== 'function')
29 log.errorln('Found "map" in config, but it is a [%s]. It needs to be a function (ignoring for now).', typeof config.map);
30 else
31 config.map(vim.map.normal, vim.map.insert);
32 }
33}
34
35function initMatchToken(config, repl) {
36 if (disabled(config, 'matchtoken')) return;
37
38 require('readline-matchtoken')(repl.rli);
39}
40
41module.exports = function applyConfig() {
42 var repl = state.repl;
43
44 initVim(config, repl);
45 initMatchToken(config, repl);
46};