LINUX.ORG.RU

Node REPL, vim и костыли

 , , ,


0

1

Короче, я опять упоросля и приделал repl ноды к vim.
Суть такая: на одном мониторе код с редактором, на втором нода с repl. Код из редактора по хоткею отправляется в ноду, там что-то происходит и результат вываливается в терминал. Из ноды можно забирать данные по автодополнению для всяких структур и прочего. Нужно это мне для всякого кодинга «на горячую» - дёргать запросы, ворошить данные, структуры, тут же смотреть результат, что-то переписывать и т.д. Все работает на прекрасных и надёждый костылях - двух FIFO
Итак, поделка:

//node repl server
//repl.js
const repl = require("repl");
const fs = require("fs");
const outFifo = "/path/to/output_fifo";

var replServer = repl.start( { useGlobal : true });

replServer.context.useAC = function(str) {
    replServer.completer(str, (err, v) => {
        let ret = v[0].toString().replace(/,/g,"\n");
        let out = fs.createWriteStream(outFifo);
        out.end(ret);
    });
}
Конфиг вим:
func Js_run()
    execute ":yank"
    execute "'[,']w! >>/path/to/input_fifo"
endfunction

func AC_node(s, b)
    if a:s
        let line = getline('.')
        let cmd = "void useAC('".line."')"
        new
        setlocal buftype=nofile bufhidden=hide noswapfile nobuflisted
        put=cmd
        execute "w >>/path/to/input_fifo"
        q
        return line
    else
        let ret = []
        let s:lines = readfile("/path/to/output_fifo")
        for s:line in s:lines
            call add(ret, s:line)
        endfor
        return ret
    endif
endfun
set completefunc=AC_node

fun Js_runall()
    execute "w! >>/path/to/input_fifo"
endfunction
map <F2> :call Js_run()<CR>
map <F5> :call Js_runall()<CR>
inoremap <C-@> <C-X><C-U>
inoremap <F2> <ESC>:call Js_run()<CR>i
Запуск ноды:
$ tail -f /path/to/input_fifo | node repl.js
Ну и, собственно, нужно сделать эти 2 fifo. Функция отправки из vim должна отправлять выделение или строку, но она какая-то кривая, я в vimscript полное днище.

inb4: atom, sublimetext и пр электроноподелки.
Жирно. Не люблю. Мой велик - норм.

Ответ на: комментарий от pon4ik

авы

Там не хватает велосипеда, надо взять костыли и запилить уже правильную.

Так ну а чо? Никаких инструментов для всякой аналитики данных кроме sql я не знаю, а накатывать последовательно update и гонять данные в оракле мне влом, да и страшно.

crutch_master ★★★★★ ()