mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 03:05:11 -07:00
vim-patch:62f7b55: runtime(netrw): save and restore register 0-9, a and unnamed (#29479)
fixes: vim/vim#15077
62f7b55c1a
Co-authored-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
parent
1922f7e32b
commit
295e223a28
@ -15,6 +15,7 @@
|
||||
" 2024 May 13 by Vim Project: prefer scp over pscp
|
||||
" 2024 Jun 04 by Vim Project: set bufhidden if buffer changed, nohidden is set and buffer shall be switched (#14915)
|
||||
" 2024 Jun 13 by Vim Project: glob() on Windows fails when a directory name contains [] (#14952)
|
||||
" 2024 Jun 23 by Vim Project: save ad restore registers when liststyle = WIDELIST (#15077)
|
||||
" Former Maintainer: Charles E Campbell
|
||||
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
|
||||
" Copyright: Copyright (C) 2016 Charles E. Campbell {{{1
|
||||
@ -5526,13 +5527,12 @@ endfun
|
||||
" ---------------------------------------------------------------------
|
||||
" netrw#BrowseXVis: used by gx in visual mode to select a file for browsing {{{2
|
||||
fun! netrw#BrowseXVis()
|
||||
" call Dfunc("netrw#BrowseXVis()")
|
||||
let akeep = @a
|
||||
let dict={}
|
||||
let dict.a=[getreg('a'), getregtype('a')]
|
||||
norm! gv"ay
|
||||
let gxfile= @a
|
||||
let @a = akeep
|
||||
call s:RestoreRegister(dict)
|
||||
call netrw#BrowseX(gxfile,netrw#CheckIfRemote(gxfile))
|
||||
" call Dret("netrw#BrowseXVis")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
@ -9679,7 +9679,13 @@ fun! s:NetrwWideListing()
|
||||
" fpl: filenames per line
|
||||
" fpc: filenames per column
|
||||
setl ma noro
|
||||
let keepa= @a
|
||||
let dict={}
|
||||
" save the unnamed register and register 0-9 and a
|
||||
let dict.a=[getreg('a'), getregtype('a')]
|
||||
for i in range(0, 9)
|
||||
let dict[i] = [getreg(i), getregtype(i)]
|
||||
endfor
|
||||
let dict.unnamed = [getreg(''), getregtype('')]
|
||||
" call Decho("setl ma noro",'~'.expand("<slnum>"))
|
||||
let b:netrw_cpf= 0
|
||||
if line("$") >= w:netrw_bannercnt
|
||||
@ -9687,7 +9693,8 @@ fun! s:NetrwWideListing()
|
||||
exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
|
||||
NetrwKeepj call histdel("/",-1)
|
||||
else
|
||||
let @a= keepa
|
||||
" restore stored registers
|
||||
call s:RestoreRegister(dict)
|
||||
" call Dret("NetrwWideListing")
|
||||
return
|
||||
endif
|
||||
@ -9729,7 +9736,7 @@ fun! s:NetrwWideListing()
|
||||
exe 'nno <buffer> <silent> b :call search(''^.\\|\s\s\zs\S'',''bW'')'."\<cr>"
|
||||
" call Decho("NetrwWideListing) setl noma nomod ro",'~'.expand("<slnum>"))
|
||||
exe "setl ".g:netrw_bufsettings
|
||||
let @a= keepa
|
||||
call s:RestoreRegister(dict)
|
||||
" call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
|
||||
" call Dret("NetrwWideListing")
|
||||
return
|
||||
@ -9741,7 +9748,6 @@ fun! s:NetrwWideListing()
|
||||
sil! nunmap <buffer> b
|
||||
endif
|
||||
endif
|
||||
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
@ -10062,7 +10068,8 @@ fun! s:SetupNetrwStatusLine(statline)
|
||||
endif
|
||||
|
||||
" set up User9 highlighting as needed
|
||||
let keepa= @a
|
||||
let dict={}
|
||||
let dict.a=[getreg('a'), getregtype('a')]
|
||||
redir @a
|
||||
try
|
||||
hi User9
|
||||
@ -10074,7 +10081,7 @@ fun! s:SetupNetrwStatusLine(statline)
|
||||
endif
|
||||
endtry
|
||||
redir END
|
||||
let @a= keepa
|
||||
call s:RestoreRegister(dict)
|
||||
endif
|
||||
|
||||
" set up status line (may use User9 highlighting)
|
||||
@ -11884,6 +11891,16 @@ fun! s:RestoreCursorline()
|
||||
" call Dret("s:RestoreCursorline : restored cul=".&l:cursorline." cuc=".&l:cursorcolumn)
|
||||
endfun
|
||||
|
||||
" s:RestoreRegister: restores all registers given in the dict {{{2
|
||||
fun! s:RestoreRegister(dict)
|
||||
for [key, val] in items(a:dict)
|
||||
if key == 'unnamed'
|
||||
let key = ''
|
||||
endif
|
||||
call setreg(key, val[0], val[1])
|
||||
endfor
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" s:NetrwDelete: Deletes a file. {{{2
|
||||
" Uses Steve Hall's idea to insure that Windows paths stay
|
||||
|
Loading…
Reference in New Issue
Block a user