From 664e5d72da8dda2c24e5ba4dba8ddf83b62e613c Mon Sep 17 00:00:00 2001 From: tracyone Date: Sun, 30 Jan 2022 22:19:16 +0800 Subject: [PATCH] terminal:fix Signed-off-by: tracyone --- autoload/te/env.vim | 7 ------- autoload/te/feat.vim | 2 +- autoload/te/terminal.vim | 21 +++++++++++++++++++-- rc/mappings.vim | 10 +++++----- 4 files changed, 25 insertions(+), 15 deletions(-) diff --git a/autoload/te/env.vim b/autoload/te/env.vim index 7544724..41a097e 100644 --- a/autoload/te/env.vim +++ b/autoload/te/env.vim @@ -137,13 +137,6 @@ function! te#env#check_requirement() abort endif endfunction -function! te#env#get_termwinkey() abort - if has('patch-8.0.1743') - return &termwinkey - else - return &termkey - endif -endfunction function! te#env#SupportFloatingWindows() abort if te#env#IsNvim() == 0 diff --git a/autoload/te/feat.vim b/autoload/te/feat.vim index 063e015..0d616d3 100644 --- a/autoload/te/feat.vim +++ b/autoload/te/feat.vim @@ -57,7 +57,7 @@ function! te#feat#gen_feature_vim(reset) abort endif let l:temp2=te#feat#get_vim_version() if v:shell_error != 0 - let g:vinux_version='vinux V1.5.0'.' @'.l:temp2[0].'.'.l:temp2[1] + let g:vinux_version='vinux V1.5.1'.' @'.l:temp2[0].'.'.l:temp2[1] else let l:temp = matchstr(l:vinux_version[-1],'.*\(-\d\+-\w\+\)\@=') if l:temp !=# '' diff --git a/autoload/te/terminal.vim b/autoload/te/terminal.vim index b99adb8..18bcc4b 100644 --- a/autoload/te/terminal.vim +++ b/autoload/te/terminal.vim @@ -66,7 +66,7 @@ function! te#terminal#repl() abort call feedkeys("\\G\h") else :call te#terminal#shell_pop({'opener':0x8, 'cmd':l:cmd}) - execute 'call feedkeys("\'.te#env#get_termwinkey().'h")' + execute 'call feedkeys("\'.te#terminal#get_termwinkey().'h")' endif endfunction @@ -390,6 +390,22 @@ function! te#terminal#hide_popup() abort call s:hide_win(l:win_id, s:last_close_bufnr) endfunction +function! te#terminal#get_termwinkey() abort + let l:result="" + if win_gettype() == 'popup' + return "" + endif + if has('patch-8.0.1743') + let l:result=&termwinkey + else + let l:result=&termkey + endif + if empty(l:result) + let l:result="" + endif + return l:result +endfunction + function! s:hide_win(winid, buf) call te#terminal#set_line(a:buf, line('$')) try @@ -560,6 +576,7 @@ function! te#terminal#shell_pop(option) abort return elseif te#env#SupportFloatingWindows() let l:term_list = te#terminal#get_buf_list() + let l:term_key = &termwinkey if !exists('l:buf') let l:buf = term_start(l:shell, #{hidden: 1, exit_cb:function('JobExit'), \ term_rows:l:height, term_cols:l:width, env:l:env_dict}) @@ -597,7 +614,7 @@ function! te#terminal#shell_pop(option) abort \ 'drag': 1, \ 'close': 'button', \ }) - "call setwinvar(l:win_id, '&wincolor', 'Pmenu') + call setwinvar(l:win_id, '&termwinkey', l:term_key) else execute ':buf '.l:buf endif diff --git a/rc/mappings.vim b/rc/mappings.vim index 5f3ddc1..0808c55 100644 --- a/rc/mappings.vim +++ b/rc/mappings.vim @@ -376,11 +376,11 @@ if te#env#IsNvim() != 0 elseif te#env#SupportTerminal() "terminal-emulator setting "execute 'tnoremap ' "effect key? - call te#meta#map('tmap ','h',te#env#get_termwinkey().'h') - call te#meta#map('tmap ','j',te#env#get_termwinkey().'j') - call te#meta#map('tmap ','k',te#env#get_termwinkey().'k') - call te#meta#map('tmap ','l',te#env#get_termwinkey().'l') - silent! execute 'tnoremap '.te#env#get_termwinkey().'"*' + call te#meta#map('tmap ','h',te#terminal#get_termwinkey().'h') + call te#meta#map('tmap ','j',te#terminal#get_termwinkey().'j') + call te#meta#map('tmap ','k',te#terminal#get_termwinkey().'k') + call te#meta#map('tmap ','l',te#terminal#get_termwinkey().'l') + silent! execute 'tnoremap '.te#terminal#get_termwinkey().'"*' call te#meta#map('tnoremap ','b','') call te#meta#map('tnoremap ','f','') endif