1 | 'use strict';
|
2 |
|
3 | var log = require('./log')
|
4 | , config = require('../config/current')
|
5 | , inspect = require('./utl').inspect
|
6 | , state = require('./state')
|
7 | , wire = require('./wire')
|
8 | ;
|
9 |
|
10 | function disabled(config, plugin) {
|
11 | if (!config.plugins) return false;
|
12 |
|
13 | var val = config.plugins[plugin];
|
14 | return val !== undefined && val !== true;
|
15 | }
|
16 |
|
17 | function 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 |
|
35 | function initMatchToken(config, repl) {
|
36 | if (disabled(config, 'matchtoken')) return;
|
37 |
|
38 | require('readline-matchtoken')(repl.rli);
|
39 | }
|
40 |
|
41 | module.exports = function applyConfig() {
|
42 | var repl = state.repl;
|
43 |
|
44 | initVim(config, repl);
|
45 | initMatchToken(config, repl);
|
46 | };
|