Skip to content

Commit

Permalink
Merge pull request #52 from liquidz/dev
Browse files Browse the repository at this point in the history
ver 0.7.1
  • Loading branch information
liquidz authored Oct 25, 2018
2 parents f80441c + ecf4812 commit 13f9683
Show file tree
Hide file tree
Showing 25 changed files with 297 additions and 201 deletions.
13 changes: 0 additions & 13 deletions autoload/iced/channel.vim

This file was deleted.

35 changes: 35 additions & 0 deletions autoload/iced/dicon.vim
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
let s:save_cpo = &cpo
set cpo&vim

let s:container = {}

function! s:default_builder(name) abort
let l:res = ''
exe printf('let l:res = iced#dicon#%s#build()', a:name)
return l:res
endfunction

function! s:value(name) abort
return a:name.'.value'
endfunction

function! iced#dicon#register(name, builder) abort
let s:container[a:name] = a:builder
if has_key(s:container, s:value(a:name))
unlet s:container[s:value(a:name)]
endif
endfunction

function! iced#dicon#build(name) abort
let Builder = get(s:container, a:name, function('s:default_builder', [a:name]))
let value_name = s:value(a:name)
let s:container[value_name] = Builder()
return s:container[value_name]
endfunction

function! iced#dicon#get(name) abort
return get(s:container, s:value(a:name), iced#dicon#build(a:name))
endfunction

let &cpo = s:save_cpo
unlet s:save_cpo
51 changes: 51 additions & 0 deletions autoload/iced/dicon/bencode.vim
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
let s:save_cpo = &cpo
set cpo&vim

" function! s:encode_string(s) abort
" return printf('%d:%s', strlen(a:s), a:s)
" endfunction
"
" function! s:encode_number(i) abort
" return printf('i%de', a:i)
" endfunction
"
" function! s:encode_list(l) abort
" let result = []
" for v in a:l
" call add(result, s:encode(v))
" endfor
" return printf('l%se', join(result, ''))
" endfunction
"
" function! s:encode_dict(d) abort
" let result = []
" for k in keys(a:d)
" call add(result, s:encode(k))
" call add(result, s:encode(a:d[k]))
" endfor
" return printf('d%se', join(result, ''))
" endfunction
"
" function! s:encode(v) abort
" let t = type(a:v)
" if t == 0
" return s:encode_number(a:v)
" elseif t == 1
" return s:encode_string(a:v)
" elseif t == 3
" return s:encode_list(a:v)
" elseif t == 4
" return s:encode_dict(a:v)
" elseif t == 7
" return s:encode_string('')
" endif
" endfunction

function! iced#dicon#bencode#build() abort
return has('python3')
\ ? iced#dicon#bencode#python#build()
\ : iced#dicon#bencode#vim#build()
endfunction

let &cpo = s:save_cpo
unlet s:save_cpo
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@ set cpo&vim

python3 import vim
py3file <sfile>:h:h:h:h:h/python/bencode.py
let s:decoder = {}

function! s:decoder.decode(s) abort
function! s:decode_via_python(s) abort
let ret = ''
python3 <<EOT
ret = iced_bencode_decode(str(vim.eval('a:s')))
Expand All @@ -18,8 +17,10 @@ EOT
return ret
endfunction

function! iced#nrepl#bencode#python#new() abort
return s:decoder
function! iced#dicon#bencode#python#build() abort
let bencode = iced#dicon#bencode#vim#build()
let bencode['decode'] = funcref('s:decode_via_python')
return bencode
endfunction

let &cpo = s:save_cpo
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,54 @@
let s:save_cpo = &cpo
set cpo&vim

let s:decoder = {}
let s:bencode = {}

" s:bencode.encode {{{
function! s:encode_string(s) abort
return printf('%d:%s', strlen(a:s), a:s)
endfunction

function! s:encode_number(i) abort
return printf('i%de', a:i)
endfunction

function! s:encode_list(l) abort
let result = []
for v in a:l
call add(result, s:encode(v))
endfor
return printf('l%se', join(result, ''))
endfunction

function! s:encode_dict(d) abort
let result = []
for k in keys(a:d)
call add(result, s:encode(k))
call add(result, s:encode(a:d[k]))
endfor
return printf('d%se', join(result, ''))
endfunction

function! s:encode(v) abort
let t = type(a:v)
if t == 0
return s:encode_number(a:v)
elseif t == 1
return s:encode_string(a:v)
elseif t == 3
return s:encode_list(a:v)
elseif t == 4
return s:encode_dict(a:v)
elseif t == 7
return s:encode_string('')
endif
endfunction

function! s:bencode.encode(v) abort
return s:encode(a:v)
endfunction " }}}

" s:bencode.decode {{{
function! s:decode_string(s) abort
let i = stridx(a:s, ':')
if i == -1
Expand Down Expand Up @@ -61,7 +107,7 @@ function! s:decode(s) abort
endif
endfunction

function! s:decoder.decode(s) abort
function! s:bencode.decode(s) abort
let result = []
let decoding = v:true
let s = a:s
Expand All @@ -85,11 +131,12 @@ function! s:decoder.decode(s) abort
else
return result
endif
endfunction
endfunction " }}}

function! iced#nrepl#bencode#vim#new() abort
return s:decoder
function! iced#dicon#bencode#vim#build() abort
return s:bencode
endfunction

let &cpo = s:save_cpo
unlet s:save_cpo
" vim:fdm=marker:fdl=0
13 changes: 13 additions & 0 deletions autoload/iced/dicon/channel.vim
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
let s:save_cpo = &cpo
set cpo&vim

function! iced#dicon#channel#build() abort
if has('nvim')
return iced#dicon#channel#neovim#build()
else
return iced#dicon#channel#vim#build()
endif
endfunction

let &cpo = s:save_cpo
unlet s:save_cpo
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ function! s:ch.sendraw(handle, string) abort
return ret
endfunction

function! iced#channel#neovim#new() abort
function! iced#dicon#channel#neovim#build() abort
return s:ch
endfunction

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ function! s:ch.sendraw(handle, string) abort
return ch_sendraw(a:handle, a:string)
endfunction

function! iced#channel#vim#new() abort
function! iced#dicon#channel#vim#build() abort
return s:ch
endfunction

Expand Down
36 changes: 24 additions & 12 deletions autoload/iced/message.vim
Original file line number Diff line number Diff line change
Expand Up @@ -33,24 +33,36 @@ function! iced#message#error_str(s) abort
call s:echom('ErrorMsg', a:s)
endfunction

function! iced#message#echom(k) abort
echom iced#message#get(a:k)
function! iced#message#echom(k, ...) abort
let msg = iced#message#get(a:k)
if !empty(a:000)
let msg = call('printf', [msg] + a:000)
endif
echom msg
endfunction

function! iced#message#info(k) abort
call iced#message#info_str(iced#message#get(a:k))
function! iced#message#info(k, ...) abort
let msg = iced#message#get(a:k)
if !empty(a:000)
let msg = call('printf', [msg] + a:000)
endif
call iced#message#info_str(msg)
endfunction

function! iced#message#warning(k) abort
call iced#message#warning_str(iced#message#get(a:k))
function! iced#message#warning(k, ...) abort
let msg = iced#message#get(a:k)
if !empty(a:000)
let msg = call('printf', [msg] + a:000)
endif
call iced#message#warning_str(msg)
endfunction

function! iced#message#error(k) abort
call iced#message#error_str(iced#message#get(a:k))
endfunction

function! iced#message#test(k) abort
return s:msg.get(a:k)
function! iced#message#error(k, ...) abort
let msg = iced#message#get(a:k)
if !empty(a:000)
let msg = call('printf', [msg] + a:000)
endif
call iced#message#error_str(msg)
endfunction

let &cpo = s:save_cpo
Expand Down
17 changes: 7 additions & 10 deletions autoload/iced/nrepl.vim
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ endfunction
let s:nrepl = s:initialize_nrepl()
let s:handlers = {}

let s:ch = iced#channel#new()
let s:messages = {}
let s:response_buffer = ''

Expand All @@ -31,10 +30,6 @@ function! iced#nrepl#id() abort
return res
endfunction

function! iced#nrepl#inject_channel(ch) abort
let s:ch = a:ch
endfunction

" SESSIONS {{{
function! iced#nrepl#set_session(k, v) abort
if a:k =~# '\(cljs\?\|repl\)'
Expand Down Expand Up @@ -129,7 +124,7 @@ function! s:dispatcher(ch, resp) abort
call iced#util#debug(text)

try
let resp = iced#nrepl#bencode#decode(text)
let resp = iced#dicon#get('bencode').decode(text)
catch /Failed to parse bencode/
let s:response_buffer = (len(text) > g:iced#nrepl#buffer_size) ? '' : text
return
Expand Down Expand Up @@ -225,7 +220,9 @@ function! iced#nrepl#send(data) abort
let s:messages[id] = message
endif

call s:ch.sendraw(s:nrepl['channel'], iced#nrepl#bencode#encode(data))
call iced#dicon#get('channel').sendraw(
\ s:nrepl['channel'],
\ iced#dicon#get('bencode').encode(data))
endfunction

function! iced#nrepl#is_op_running(op) abort " {{{
Expand All @@ -248,7 +245,7 @@ endfunction

function! s:status(ch) abort
try
return s:ch.status(a:ch)
return iced#dicon#get('channel').status(a:ch)
catch
return 'fail'
endtry
Expand Down Expand Up @@ -285,7 +282,7 @@ function! iced#nrepl#connect(port) abort
if ! iced#nrepl#is_connected()
let address = printf('%s:%d', g:iced#nrepl#host, a:port)
let s:nrepl['port'] = a:port
let s:nrepl['channel'] = s:ch.open(address, {
let s:nrepl['channel'] = iced#dicon#get('channel').open(address, {
\ 'mode': 'raw',
\ 'callback': funcref('s:dispatcher'),
\ 'drop': 'never',
Expand Down Expand Up @@ -313,7 +310,7 @@ function! iced#nrepl#disconnect() abort " {{{
call iced#nrepl#sync#send({'op': 'interrupt', 'session': id})
call iced#nrepl#sync#close(id)
endfor
call s:ch.close(s:nrepl['channel'])
call iced#dicon#get('channel').close(s:nrepl['channel'])
call s:initialize_nrepl()
call iced#cache#clear()
endfunction " }}}
Expand Down
Loading

0 comments on commit 13f9683

Please sign in to comment.