/* * Used for prompt popup on vim */ const readline = require("readline") const rl = readline.createInterface({ input: process.stdin, output: process.stdout, escapeCodeTimeout: 0, prompt: '' }) rl.setPrompt('') let value = process.argv[2] if (value) { rl.write(value) } rl.on('line', input => { send(['confirm', input]) process.exit() }) let original_ttyWrite = rl._ttyWrite rl._ttyWrite = function (code, key) { if (key.name === 'enter') { send(['send', '']) return '' } original_ttyWrite.apply(rl, arguments) send(['change', rl.line]) } function createSequences(str) { return '\033]51;' + str + '\x07' } function send(args) { process.stdout.write(createSequences(JSON.stringify(['call', 'CocPopupCallback', args]))) } process.stdin.on('keypress', (e, key) => { if (key) { let k = getKey(key) if (k == '') { return } if (k == '') { send(['exit', '']) process.exit() return } if (k) { send(['send', k]) return } } }) function getKey(key) { if (key.ctrl === true) { if (key.name == 'n') { return '' } if (key.name == 'p') { return '' } if (key.name == 'j') { return '' } if (key.name == 'k') { return '' } if (key.name == 'f') { return '' } if (key.name == 'b') { return '' } if (key.sequence == '\x00') { return '' } } if (key.sequence == '\u001b') { return '' } if (key.sequence == '\r') { return '' } if (key.sequence == '\t') { return key.shift ? '' : '' } if (key.name == 'up') { return '' } if (key.name == 'down') { return '' } return '' }