vim/bundle/ooze/plugin/ooze.vim @ 0ba11224bd3d
Add weechat/certs/ca-bundle.crt to .hgignore.
| author | Steve Losh <steve@stevelosh.com> |
|---|---|
| date | Sat, 20 Feb 2016 12:42:56 +0000 |
| parents | 8a1376b77b80 |
| children | b69dc77f379c |
" vim: set foldmethod=indent " TODO: " Unfuck folding " Disassembly mapping " in-package horseshit " error handling " multi-packet messages " function! s:IsString(a) return type(a:a) == 1 endfunction function! s:GetString(msg, key, extra) let val = get(a:msg, a:key) if s:IsString(val) return val . a:extra else return '' endif endfunction let g:ooze_scratch_buffer_name = '__OozeScratch__' function! s:OpenOozeScratch(contents) echom "test" echom bufname('%') if bufname('%') != g:ooze_scratch_buffer_name wincmd s execute "edit " . g:ooze_scratch_buffer_name endif set filetype=lisp setlocal foldlevel=99 setlocal buftype=nofile setlocal bufhidden=hide setlocal noswapfile setlocal buflisted setlocal noreadonly normal! ggdG call append(0, a:contents) setlocal readonly endfunction function! s:HandleMessage(msg) let moutput = s:GetString(a:msg, 'macroexpand-1', "") if moutput != '' call s:OpenOozeScratch(split(moutput, "\n")) return endif let output = '' let output .= s:GetString(a:msg, 'stdout', "") let output .= s:GetString(a:msg, 'stdout', "") let output .= s:GetString(a:msg, 'stderr', "") let output .= s:GetString(a:msg, 'value', "") let output .= s:GetString(a:msg, 'error', "\n\n") let output .= s:GetString(a:msg, 'original', "\n\n") let output .= s:GetString(a:msg, 'backtrace', "\n") let output .= s:GetString(a:msg, 'function-arglist', "\n\n") let output .= s:GetString(a:msg, 'function-docstring', "\n") if output != '' echo output endif endfunction function! s:HandleData(data) for msg in bencode#BdecodeAll(a:data) call s:HandleMessage(msg) endfor endfunction silent! function s:JobHandler(job_id, data, event) if a:event == 'stdout' call s:HandleData(join(a:data, "\n")) elseif a:event == 'stderr' 1 else 1 endif endfunction let s:callbacks = { \ 'on_stdout': function('s:JobHandler'), \ 'on_stderr': function('s:JobHandler'), \ 'on_exit': function('s:JobHandler') \ } if !exists("g:ooze_connection") let g:ooze_connection = 0 endif function! OozeDisconnect() if g:ooze_connection call jobstop(g:ooze_connection) let g:ooze_connection = 0 endif endfunction function! OozeConnect() if g:ooze_connection call OozeDisconnect() endif let g:ooze_connection = jobstart(['nc', 'localhost', '8675'], s:callbacks) endfunction function! OozeMacroexpand(form) if !g:ooze_connection throw "Not connected!" endif let msg = {"op": "macroexpand", "form": a:form} call jobsend(g:ooze_connection, bencode#Bencode(msg)) endfunction function! OozeMacroexpandSelection() let z = @z normal! gv"zy call OozeMacroexpand(@z) let @z = z endfunction function! OozeDocument(symbol) if !g:ooze_connection throw "Not connected!" endif let msg = {"op": "documentation", "symbol": a:symbol} call jobsend(g:ooze_connection, bencode#Bencode(msg)) endfunction function! OozeDocumentSelection() let z = @z normal! gv"zy call OozeDocument(@z) let @z = z endfunction function! OozeEval(code) if !g:ooze_connection throw "Not connected!" endif let msg = {"op": "eval", "code": a:code} call jobsend(g:ooze_connection, bencode#Bencode(msg)) endfunction function! OozeEvalSelection() let z = @z normal! gv"zy call OozeEval(@z) let @z = z endfunction function! OozeLoad(path) if !g:ooze_connection throw "Not connected!" endif let msg = {"op": "load-file", "path": a:path} call jobsend(g:ooze_connection, bencode#Bencode(msg)) endfunction function! OozeLoadCurrent() call OozeLoad(expand('%:p')) endfunction function! OozeMapKeys() nnoremap <buffer> <localleader>C :call OozeConnect()<cr> nnoremap <buffer> <localleader>K :call OozeDisconnect()<cr> nnoremap <buffer> <localleader>E :call OozeEval(input("? "))<cr> vnoremap <buffer> <localleader>e :<c-u>call OozeEvalSelection()<cr> nnoremap <buffer> <localleader>e mz:silent normal! l<cr>:call PareditFindDefunBck()<cr>vab:<c-u>call OozeEvalSelection()<cr>`z nnoremap <buffer> <localleader>f mzvab:<c-u>call OozeEvalSelection()<cr>`z nnoremap <buffer> <localleader>D :call OozeDocument(input("? "))<cr> " nnoremap <buffer> <localleader>d mzviw:<c-u>call OozeDocumentSelection()<cr>`z inoremap <buffer> <silent> <c-d> <esc>mzbviw:<c-u>call OozeDocumentSelection()<cr>`za nnoremap <buffer> M mzviw:<c-u>call OozeDocumentSelection()<cr>`z nnoremap <buffer> <localleader>M :call OozeMacroexpand(input("? "))<cr> nnoremap <buffer> <localleader>m mzvab:<c-u>call OozeMacroexpandSelection()<cr>`z nnoremap <buffer> <localleader>r :call OozeLoadCurrent()<cr> endfunction augroup ooze_dev au! autocmd BufWritePost ooze.vim source % augroup END