patch 9.1.0934: hard to view an existing buffer in the preview window
Commit:
https://github.com/vim/vim/commit/a2a2fe841ed2efdbb1f8055f752a3a4d0988ae9d
Author: Yinzuo Jiang <[email protected]>
Date: Mon Dec 16 21:22:09 2024 +0100
patch 9.1.0934: hard to view an existing buffer in the preview window
Problem: hard to view an existing buffer in the preview window
Solution: add the :pbuffer command (Yinzuo Jiang)
Similar as `:pedit` and `:buffer` command. `:pbuffer` edits buffer [N]
from the buffer list in the preview window.
`:pbuffer` can also open special buffer, for example terminal buffer.
closes: #16222
Signed-off-by: Yinzuo Jiang <[email protected]>
Signed-off-by: Christian Brabandt <[email protected]>
diff --git a/runtime/doc/indent.txt b/runtime/doc/indent.txt
index 8f347d7d9..5f0893fee 100644
--- a/runtime/doc/indent.txt
+++ b/runtime/doc/indent.txt
@@ -1,4 +1,4 @@
-*indent.txt* For Vim version 9.1. Last change: 2024 Nov 12
+*indent.txt* For Vim version 9.1. Last change: 2024 Dec 16
VIM REFERENCE MANUAL by Bram Moolenaar
diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt
index c595d9d2a..e1f68a081 100644
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -1,4 +1,4 @@
-*index.txt* For Vim version 9.1. Last change: 2023 Jul 14
+*index.txt* For Vim version 9.1. Last change: 2024 Dec 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1529,6 +1529,7 @@ tag command action ~
|:ownsyntax| :ow[nsyntax] set new local syntax highlight for this window
|:packadd| :pa[ckadd] add a plugin from 'packpath'
|:packloadall| :packl[oadall] load all packages under 'packpath'
+|:pbuffer| :pb[uffer] edit buffer in the preview window
|:pclose| :pc[lose] close preview window
|:pedit| :ped[it] edit file in the preview window
|:perl| :pe[rl] execute Perl command
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 9f46c6e06..a8b49878a 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -3026,6 +3026,8 @@ $quote eval.txt /*$quote*
:packadd repeat.txt /*:packadd*
:packl repeat.txt /*:packl*
:packloadall repeat.txt /*:packloadall*
+:pb windows.txt /*:pb*
+:pbuffer windows.txt /*:pbuffer*
:pc windows.txt /*:pc*
:pclose windows.txt /*:pclose*
:pe if_perl.txt /*:pe*
diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt
index 76911425c..bcda3d00d 100644
--- a/runtime/doc/version9.txt
+++ b/runtime/doc/version9.txt
@@ -1,4 +1,4 @@
-*version9.txt* For Vim version 9.1. Last change: 2024 Dec 06
+*version9.txt* For Vim version 9.1. Last change: 2024 Dec 16
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -41661,7 +41661,8 @@ Highlighting: ~
Commands: ~
|[r| and |]r| to move the cursor to previous/next rare word
-
+|:pbuffer| Edit buffer [N] from the buffer list in the preview
+ window
Options: ~
diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt
index edb105aa5..776407258 100644
--- a/runtime/doc/windows.txt
+++ b/runtime/doc/windows.txt
@@ -1,4 +1,4 @@
-*windows.txt* For Vim version 9.1. Last change: 2024 Dec 14
+*windows.txt* For Vim version 9.1. Last change: 2024 Dec 16
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1005,6 +1005,15 @@ CTRL-W g }
*CTRL-W_g}*
it. Make the new Preview window (if required) N high. If N is
not given, 'previewheight' is used.
+ *:pb* *:pbuffer*
+:[N]pb[uffer][!] [+cmd] [N]
+ Edit buffer [N] from the buffer list in the preview window.
+ If [N] is not given, the current buffer remains being edited.
+ See |:buffer-!| for [!]. This will also edit a buffer that is
+ not in the buffer list, without setting the 'buflisted' flag.
+ The notation with single quotes does not work here, `:pbuffer
+ 12'345'` uses 12'345 as a buffer name. Also see |+cmd|.
+
*:ped* *:pedit*
:ped[it][!] [++opt] [+cmd] {file}
Edit {file} in the preview window. The preview window is
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index eea6e82a8..465311f46 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -2,7 +2,7 @@
" Language: Vim script
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
" Doug Kearns <[email protected]>
-" Last Change: 2024 Oct 08
+" Last Change: 2024 Dec 15
" Former Maintainer: Charles E. Campbell
" DO NOT CHANGE DIRECTLY.
@@ -30,9 +30,9 @@ syn cluster vimCommentGroup contains=vimTodo,@Spell
syn keyword vimCommand contained abo[veleft] abs[tract] al[l] ar[gs] arga[dd]
argd[elete] argdo argded[upe] arge[dit] argg[lobal] argl[ocal] argu[ment]
as[cii] b[uffer] bN[ext] ba[ll] bad[d] balt bd[elete] bel[owright] bf[irst]
bl[ast] bm[odified] bn[ext] bo[tright] bp[revious] br[ewind] brea[k] breaka[dd]
breakd[el] breakl[ist] bro[wse] buffers bufd[o] bun[load] bw[ipeout] c[hange]
cN[ext] cNf[ile] cabo[ve] cad[dbuffer] cadde[xpr] caddf[ile] caf[ter] cb[uffer]
cbe[fore] cbel[ow] cbo[ttom] cc ccl[ose] cd cdo ce[nter] cex[pr] cf[ile] cfd[o]
cfir[st] cg[etfile] cgetb[uffer] cgete[xpr] chd[ir] changes che[ckpath]
checkt[ime] chi[story] cl[ist] cla[st] clo[se] cle[arjumps] cn[ext] cnew[er]
cnf[ile] co[py] col[der] colo[rscheme] com[mand] comc[lear] comp[iler]
con[tinue]
syn keyword vimCommand contained conf[irm] cons[t] cope[n] cp[revious]
cpf[ile] cq[uit] cr[ewind] cs[cope] cst[ag] cw[indow] d[elete] delm[arks]
deb[ug] debugg[reedy] defc[ompile] defe[r] delf[unction] di[splay] dif[fupdate]
diffg[et] diffo[ff] diffp[atch] diffpu[t] diffs[plit] difft[his] dig[raphs]
disa[ssemble] dj[ump] dli[st] dr[op] ds[earch] dsp[lit] e[dit] ea[rlier] el[se]
em[enu] en[dif] endfo[r] endt[ry] endw[hile] ene[w] ev[al] ex exi[t] exu[sage]
f[ile] files filet[ype] filt[er] fin[d] finall[y] fini[sh] fir[st] fix[del]
fo[ld] foldc[lose] foldd[oopen] folddoc[losed] foldo[pen] g[lobal] go[to]
gr[ep] grepa[dd] gu[i] gv[im] h[elp] helpc[lose] helpf[ind] helpg[rep]
helpt[ags] ha[rdcopy] hi[ghlight] hid[e] his[tory] ho[rizontal] ij[ump] il[ist]
imp[ort]
syn keyword vimCommand contained int[ro] is[earch] isp[lit] j[oin] ju[mps] k
kee[pmarks] keepj[umps] keepp[atterns] keepa[lt] l[ist] lN[ext] lNf[ile] la[st]
lab[ove] lan[guage] lad[dexpr] laddb[uffer] laddf[ile] laf[ter] lat[er]
lb[uffer] lbe[fore] lbel[ow] lbo[ttom] lc[d] lch[dir] lcl[ose] lcs[cope] ld[o]
le[ft] lefta[bove] lex[pr] leg[acy] lf[ile] lfd[o] lfir[st] lg[etfile]
lgetb[uffer] lgete[xpr] lgr[ep] lgrepa[dd] lh[elpgrep] lhi[story] ll lla[st]
lli[st] lmak[e] lne[xt] lnew[er] lnf[ile] lo[adview] loc[kmarks] lockv[ar]
lol[der] lop[en] lp[revious] lpf[ile] lr[ewind] lt[ag] lua luad[o] luaf[ile]
lv[imgrep] lvimgrepa[dd] lw[indow] ls m[ove] ma[rk] mak[e] marks
menut[ranslate] mes[sages] mk[exrc] mks[ession] mksp[ell] mkv[imrc] mkvie[w]
mod[e] mz[scheme] mzf[ile]
-syn keyword vimCommand contained n[ext] nb[key] nbc[lose] nbs[tart]
noa[utocmd] noh[lsearch] nos[wapfile] nu[mber] o[pen] ol[dfiles] on[ly]
opt[ions] ow[nsyntax] p[rint] pa[ckadd] packl[oadall] pc[lose] pe[rl] perld[o]
ped[it] po[p] pp[op] pre[serve] prev[ious] pro[mptfind] promptr[epl] prof[ile]
profd[el] ps[earch] pt[ag] ptN[ext] ptf[irst] ptj[ump] ptl[ast] ptn[ext]
ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] py[thon] pyd[o] pyf[ile] py3
py3d[o] python3 py3f[ile] pyx pyxd[o] pythonx pyxf[ile] q[uit] quita[ll] qa[ll]
r[ead] rec[over] red[o] redi[r] redr[aw] redraws[tatus] redrawt[abline]
reg[isters] res[ize] ret[ab] rew[ind] ri[ght] rightb[elow] ru[ntime] rub[y]
rubyd[o] rubyf[ile] rund[o] rv[iminfo] sN[ext] sa[rgument] sal[l] san[dbox]
sav[eas] sb[uffer]
-syn keyword vimCommand contained sbN[ext] sba[ll] sbf[irst] sbl[ast]
sbm[odified] sbn[ext] sbp[revious] sbr[ewind] sc[riptnames] scripte[ncoding]
scriptv[ersion] scs[cope] setf[iletype] sf[ind] sfir[st] sh[ell] si[malt]
sig[n] sil[ent] sla[st] sn[ext] so[urce] sor[t] sp[lit] spe[llgood] spelld[ump]
spelli[nfo] spellr[epall] spellra[re] spellu[ndo] spellw[rong] spr[evious]
sr[ewind] st[op] sta[g] star[tinsert] startg[replace] startr[eplace]
stopi[nsert] stj[ump] sts[elect] sun[hide] sus[pend] sv[iew] sw[apname]
synti[me] sync[bind] smi[le] t tN[ext] ta[g] tags tab tabc[lose] tabd[o]
tabe[dit] tabf[ind] tabfir[st] tabm[ove] tabl[ast] tabn[ext] tabnew tabo[nly]
tabp[revious] tabN[ext] tabr[ewind] tabs tc[d] tch[dir] tcl tcld[o] tclf[ile]
te[aroff] ter[minal] tf[irst]
-syn keyword vimCommand contained tj[ump] tl[ast] tn[ext] to[pleft] tp[revious]
tr[ewind] try ts[elect] u[ndo] undoj[oin] undol[ist] unh[ide] unlo[ckvar]
uns[ilent] up[date] v[global] ve[rsion] verb[ose] vert[ical] vi[sual] vie[w]
vim[grep] vimgrepa[dd] vim9[cmd] viu[sage] vne[w] vs[plit] w[rite] wN[ext]
wa[ll] wi[nsize] winc[md] wind[o] winp[os] wn[ext] wp[revious] wq wqa[ll]
wu[ndo] wv[iminfo] x[it] xa[ll] xr[estore] y[ank] z dl dell delel deletl
deletel dp dep delp delep deletp deletep a i
+syn keyword vimCommand contained n[ext] nb[key] nbc[lose] nbs[tart]
noa[utocmd] noh[lsearch] nos[wapfile] nu[mber] o[pen] ol[dfiles] on[ly]
opt[ions] ow[nsyntax] p[rint] pa[ckadd] packl[oadall] pc[lose] pe[rl] perld[o]
ped[it] pb[uffer] po[p] pp[op] pre[serve] prev[ious] pro[mptfind] promptr[epl]
prof[ile] profd[el] ps[earch] pt[ag] ptN[ext] ptf[irst] ptj[ump] ptl[ast]
ptn[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] py[thon] pyd[o]
pyf[ile] py3 py3d[o] python3 py3f[ile] pyx pyxd[o] pythonx pyxf[ile] q[uit]
quita[ll] qa[ll] r[ead] rec[over] red[o] redi[r] redr[aw] redraws[tatus]
redrawt[abline] reg[isters] res[ize] ret[ab] rew[ind] ri[ght] rightb[elow]
ru[ntime] rub[y] rubyd[o] rubyf[ile] rund[o] rv[iminfo] sN[ext] sa[rgument]
sal[l] san[dbox] sav[eas]
+syn keyword vimCommand contained sb[uffer] sbN[ext] sba[ll] sbf[irst] sbl[ast]
sbm[odified] sbn[ext] sbp[revious] sbr[ewind] sc[riptnames] scripte[ncoding]
scriptv[ersion] scs[cope] setf[iletype] sf[ind] sfir[st] sh[ell] si[malt]
sig[n] sil[ent] sla[st] sn[ext] so[urce] sor[t] sp[lit] spe[llgood] spelld[ump]
spelli[nfo] spellr[epall] spellra[re] spellu[ndo] spellw[rong] spr[evious]
sr[ewind] st[op] sta[g] star[tinsert] startg[replace] startr[eplace]
stopi[nsert] stj[ump] sts[elect] sun[hide] sus[pend] sv[iew] sw[apname]
synti[me] sync[bind] smi[le] t tN[ext] ta[g] tags tab tabc[lose] tabd[o]
tabe[dit] tabf[ind] tabfir[st] tabm[ove] tabl[ast] tabn[ext] tabnew tabo[nly]
tabp[revious] tabN[ext] tabr[ewind] tabs tc[d] tch[dir] tcl tcld[o] tclf[ile]
te[aroff] ter[minal]
+syn keyword vimCommand contained tf[irst] tj[ump] tl[ast] tn[ext] to[pleft]
tp[revious] tr[ewind] try ts[elect] u[ndo] undoj[oin] undol[ist] unh[ide]
unlo[ckvar] uns[ilent] up[date] v[global] ve[rsion] verb[ose] vert[ical]
vi[sual] vie[w] vim[grep] vimgrepa[dd] vim9[cmd] viu[sage] vne[w] vs[plit]
w[rite] wN[ext] wa[ll] wi[nsize] winc[md] wind[o] winp[os] wn[ext] wp[revious]
wq wqa[ll] wu[ndo] wv[iminfo] x[it] xa[ll] xr[estore] y[ank] z dl dell delel
deletl deletel dp dep delp delep deletp deletep a i
" Lower priority for _new_ to distinguish constructors from the command.
syn match vimCommand contained "\<new\>(\@!"
@@ -43,12 +43,12 @@ syn keyword vimStdPlugin contained Arguments Asm Break
Cfilter Clear Continue Di
" GEN_SYN_VIM: vimOption normal, START_STR='syn keyword vimOption contained',
END_STR='skipwhite nextgroup=vimSetEqual,vimSetMod'
syn keyword vimOption contained al aleph ari allowrevins ambw ambiwidth arab
arabic arshape arabicshape acd autochdir ai autoindent ar autoread asd
autoshelldir aw autowrite awa autowriteall bg background bs backspace bk backup
bkc backupcopy bdir backupdir bex backupext bsk backupskip bdlay balloondelay
beval ballooneval bevalterm balloonevalterm bexpr balloonexpr bo belloff bin
binary bomb brk breakat bri breakindent briopt breakindentopt bsdir browsedir
bh bufhidden bl buflisted bt buftype cmp casemap cdh cdhome cd cdpath cedit ccv
charconvert cin cindent cink cinkeys cino cinoptions cinsd cinscopedecls cinw
cinwords cb clipboard ch cmdheight cwh cmdwinheight cc colorcolumn co columns
com comments cms commentstring cp compatible cpt complete cfu completefunc
skipwhite nextgroup=vimSetEqual,vimSetMod
syn keyword vimOption contained cia completeitemalign cot completeopt cpp
completepopup csl completeslash cocu concealcursor cole conceallevel cf confirm
ci copyindent cpo cpoptions cm cryptmethod cspc cscopepathcomp csprg cscopeprg
csqf cscopequickfix csre cscoperelative cst cscopetag csto cscopetagorder
csverb cscopeverbose crb cursorbind cuc cursorcolumn cul cursorline culopt
cursorlineopt debug def define deco delcombine dict dictionary diff dex
diffexpr dip diffopt dg digraph dir directory dy display ead eadirection ed
edcompatible emo emoji enc encoding eof endoffile eol endofline ea equalalways
ep equalprg eb errorbells ef errorfile efm errorformat ek esckeys ei
eventignore et expandtab ex exrc fenc fileencoding fencs fileencodings ff
fileformat ffs fileformats skipwhite nextgroup=vimSetEqual,vimSetMod
-syn keyword vimOption contained fic fileignorecase ft filetype fcs fillchars
fixeol fixendofline fcl foldclose fdc foldcolumn fen foldenable fde foldexpr
fdi foldignore fdl foldlevel fdls foldlevelstart fmr foldmarker fdm foldmethod
fml foldminlines fdn foldnestmax fdo foldopen fdt foldtext fex formatexpr flp
formatlistpat fo formatoptions fp formatprg fs fsync gd gdefault gfm grepformat
gp grepprg gcr guicursor gfn guifont gfs guifontset gfw guifontwide ghr
guiheadroom gli guiligatures go guioptions guipty gtl guitablabel gtt
guitabtooltip hf helpfile hh helpheight hlg helplang hid hidden hl highlight hi
history hk hkmap hkp hkmapp hls hlsearch icon iconstring ic ignorecase imaf
imactivatefunc imak imactivatekey imc imcmdline imd imdisable imi iminsert ims
imsearch skipwhite nextgroup=vimSetEqual,vimSetMod
-syn keyword vimOption contained imsf imstatusfunc imst imstyle inc include
inex includeexpr is incsearch inde indentexpr indk indentkeys inf infercase im
insertmode isf isfname isi isident isk iskeyword isp isprint js joinspaces jop
jumpoptions key kmp keymap km keymodel kpc keyprotocol kp keywordprg lmap
langmap lm langmenu lnr langnoremap lrm langremap ls laststatus lz lazyredraw
lbr linebreak lines lsp linespace lisp lop lispoptions lw lispwords list lcs
listchars lpl loadplugins luadll magic mef makeef menc makeencoding mp makeprg
mps matchpairs mat matchtime mco maxcombine mfd maxfuncdepth mmd maxmapdepth mm
maxmem mmp maxmempattern mmt maxmemtot mis menuitems msm mkspellmem ml modeline
mle modelineexpr mls modelines ma modifiable mod modified more mouse skipwhite
nextgroup=vimSetEqual,vimSetMod
-syn keyword vimOption contained mousef mousefocus mh mousehide mousem
mousemodel mousemev mousemoveevent mouses mouseshape mouset mousetime mzq
mzquantum mzschemedll mzschemegcdll nf nrformats nu number nuw numberwidth ofu
omnifunc odev opendevice opfunc operatorfunc pp packpath para paragraphs paste
pt pastetoggle pex patchexpr pm patchmode pa path perldll pi preserveindent pvh
previewheight pvp previewpopup pvw previewwindow pdev printdevice penc
printencoding pexpr printexpr pfn printfont pheader printheader pmbcs
printmbcharset pmbfn printmbfont popt printoptions prompt ph pumheight pw
pumwidth pythondll pythonhome pythonthreedll pythonthreehome pyx pyxversion
qftf quickfixtextfunc qe quoteescape ro readonly rdt redrawtime re regexpengine
rnu relativenumber skipwhite nextgroup=vimSetEqual,vimSetMod
-syn keyword vimOption contained remap rop renderoptions report rs
restorescreen ri revins rl rightleft rlc rightleftcmd rubydll ru ruler ruf
rulerformat rtp runtimepath scr scroll scb scrollbind scf scrollfocus sj
scrolljump so scrolloff sbo scrollopt sect sections secure sel selection slm
selectmode ssop sessionoptions sh shell shcf shellcmdflag sp shellpipe shq
shellquote srr shellredir ssl shellslash stmp shelltemp st shelltype sxe
shellxescape sxq shellxquote sr shiftround sw shiftwidth shm shortmess sn
shortname sbr showbreak sc showcmd sloc showcmdloc sft showfulltag sm showmatch
smd showmode stal showtabline ss sidescroll siso sidescrolloff scl signcolumn
scs smartcase si smartindent sta smarttab sms smoothscroll sts softtabstop
spell spc spellcapcheck skipwhite nextgroup=vimSetEqual,vimSetMod
-syn keyword vimOption contained spf spellfile spl spelllang spo spelloptions
sps spellsuggest sb splitbelow spk splitkeep spr splitright sol startofline stl
statusline su suffixes sua suffixesadd swf swapfile sws swapsync swb switchbuf
smc synmaxcol syn syntax tcl tabclose tal tabline tpm tabpagemax ts tabstop tbs
tagbsearch tc tagcase tfu tagfunc tl taglength tr tagrelative tag tags tgst
tagstack tcldll term tbidi termbidi tenc termencoding tgc termguicolors twk
termwinkey twsl termwinscroll tws termwinsize twt termwintype terse ta textauto
tx textmode tw textwidth tsr thesaurus tsrfu thesaurusfunc top tildeop to
timeout tm timeoutlen title titlelen titleold titlestring tb toolbar tbis
toolbariconsize ttimeout ttm ttimeoutlen tbi ttybuiltin tf ttyfast ttym
ttymouse skipwhite nextgroup=vimSetEqual,vimSetMod
-syn keyword vimOption contained tsl ttyscroll tty ttytype udir undodir udf
undofile ul undolevels ur undoreload uc updatecount ut updatetime vsts
varsofttabstop vts vartabstop vbs verbose vfile verbosefile vdir viewdir vop
viewoptions vi viminfo vif viminfofile ve virtualedit vb visualbell warn wiv
weirdinvert ww whichwrap wc wildchar wcm wildcharm wig wildignore wic
wildignorecase wmnu wildmenu wim wildmode wop wildoptions wak winaltkeys wcr
wincolor wi window wfb winfixbuf wfh winfixheight wfw winfixwidth wh winheight
wmh winminheight wmw winminwidth winptydll wiw winwidth wrap wm wrapmargin ws
wrapscan write wa writeany wb writebackup wd writedelay xtermcodes skipwhite
nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained fic fileignorecase ft filetype fcs fillchars
ffu findfunc fixeol fixendofline fcl foldclose fdc foldcolumn fen foldenable
fde foldexpr fdi foldignore fdl foldlevel fdls foldlevelstart fmr foldmarker
fdm foldmethod fml foldminlines fdn foldnestmax fdo foldopen fdt foldtext fex
formatexpr flp formatlistpat fo formatoptions fp formatprg fs fsync gd gdefault
gfm grepformat gp grepprg gcr guicursor gfn guifont gfs guifontset gfw
guifontwide ghr guiheadroom gli guiligatures go guioptions guipty gtl
guitablabel gtt guitabtooltip hf helpfile hh helpheight hlg helplang hid hidden
hl highlight hi history hk hkmap hkp hkmapp hls hlsearch icon iconstring ic
ignorecase imaf imactivatefunc imak imactivatekey imc imcmdline imd imdisable
imi iminsert skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained ims imsearch imsf imstatusfunc imst imstyle
inc include inex includeexpr is incsearch inde indentexpr indk indentkeys inf
infercase im insertmode isf isfname isi isident isk iskeyword isp isprint js
joinspaces jop jumpoptions key kmp keymap km keymodel kpc keyprotocol kp
keywordprg lmap langmap lm langmenu lnr langnoremap lrm langremap ls laststatus
lz lazyredraw lbr linebreak lines lsp linespace lisp lop lispoptions lw
lispwords list lcs listchars lpl loadplugins luadll magic mef makeef menc
makeencoding mp makeprg mps matchpairs mat matchtime mco maxcombine mfd
maxfuncdepth mmd maxmapdepth mm maxmem mmp maxmempattern mmt maxmemtot mis
menuitems mopt messagesopt msm mkspellmem ml modeline mle modelineexpr mls
modelines ma modifiable skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained mod modified more mouse mousef mousefocus mh
mousehide mousem mousemodel mousemev mousemoveevent mouses mouseshape mouset
mousetime mzq mzquantum mzschemedll mzschemegcdll nf nrformats nu number nuw
numberwidth ofu omnifunc odev opendevice opfunc operatorfunc pp packpath para
paragraphs paste pt pastetoggle pex patchexpr pm patchmode pa path perldll pi
preserveindent pvh previewheight pvp previewpopup pvw previewwindow pdev
printdevice penc printencoding pexpr printexpr pfn printfont pheader
printheader pmbcs printmbcharset pmbfn printmbfont popt printoptions prompt ph
pumheight pw pumwidth pythondll pythonhome pythonthreedll pythonthreehome pyx
pyxversion qftf quickfixtextfunc qe quoteescape ro readonly rdt redrawtime re
regexpengine skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained rnu relativenumber remap rop renderoptions
report rs restorescreen ri revins rl rightleft rlc rightleftcmd rubydll ru
ruler ruf rulerformat rtp runtimepath scr scroll scb scrollbind scf scrollfocus
sj scrolljump so scrolloff sbo scrollopt sect sections secure sel selection slm
selectmode ssop sessionoptions sh shell shcf shellcmdflag sp shellpipe shq
shellquote srr shellredir ssl shellslash stmp shelltemp st shelltype sxe
shellxescape sxq shellxquote sr shiftround sw shiftwidth shm shortmess sn
shortname sbr showbreak sc showcmd sloc showcmdloc sft showfulltag sm showmatch
smd showmode stal showtabline ss sidescroll siso sidescrolloff scl signcolumn
scs smartcase si smartindent sta smarttab sms smoothscroll sts softtabstop
spell skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained spc spellcapcheck spf spellfile spl spelllang
spo spelloptions sps spellsuggest sb splitbelow spk splitkeep spr splitright
sol startofline stl statusline su suffixes sua suffixesadd swf swapfile sws
swapsync swb switchbuf smc synmaxcol syn syntax tcl tabclose tal tabline tpm
tabpagemax ts tabstop tbs tagbsearch tc tagcase tfu tagfunc tl taglength tr
tagrelative tag tags tgst tagstack tcldll term tbidi termbidi tenc termencoding
tgc termguicolors twk termwinkey twsl termwinscroll tws termwinsize twt
termwintype terse ta textauto tx textmode tw textwidth tsr thesaurus tsrfu
thesaurusfunc top tildeop to timeout tm timeoutlen title titlelen titleold
titlestring tb toolbar tbis toolbariconsize ttimeout ttm ttimeoutlen tbi
ttybuiltin skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained tf ttyfast ttym ttymouse tsl ttyscroll tty
ttytype udir undodir udf undofile ul undolevels ur undoreload uc updatecount ut
updatetime vsts varsofttabstop vts vartabstop vbs verbose vfile verbosefile
vdir viewdir vop viewoptions vi viminfo vif viminfofile ve virtualedit vb
visualbell warn wiv weirdinvert ww whichwrap wc wildchar wcm wildcharm wig
wildignore wic wildignorecase wmnu wildmenu wim wildmode wop wildoptions wak
winaltkeys wcr wincolor wi window wfb winfixbuf wfh winfixheight wfw
winfixwidth wh winheight wmh winminheight wmw winminwidth winptydll wiw
winwidth wrap wm wrapmargin ws wrapscan write wa writeany wb writebackup wd
writedelay xtermcodes skipwhite nextgroup=vimSetEqual,vimSetMod
" vimOptions: These are the turn-off setting variants {{{2
" GEN_SYN_VIM: vimOption turn-off, START_STR='syn keyword vimOption
contained', END_STR=''
@@ -102,14 +102,14 @@ syn case match
" Function Names {{{2
" GEN_SYN_VIM: vimFuncName, START_STR='syn keyword vimFuncName contained',
END_STR=''
syn keyword vimFuncName contained abs acos add and append appendbufline argc
argidx arglistid argv asin assert_beeps assert_equal assert_equalfile
assert_exception assert_fails assert_false assert_inrange assert_match
assert_nobeep assert_notequal assert_notmatch assert_report assert_true atan
atan2 autocmd_add autocmd_delete autocmd_get balloon_gettext balloon_show
balloon_split bindtextdomain blob2list browse browsedir bufadd bufexists
buflisted bufload bufloaded bufname bufnr bufwinid bufwinnr byte2line byteidx
byteidxcomp call ceil ch_canread ch_close ch_close_in ch_evalexpr ch_evalraw
ch_getbufnr ch_getjob ch_info ch_log ch_logfile ch_open ch_read ch_readblob
ch_readraw ch_sendexpr ch_sendraw ch_setoptions ch_status changenr char2nr
charclass charcol charidx
-syn keyword vimFuncName contained chdir cindent clearmatches col complete
complete_add complete_check complete_info confirm copy cos cosh count
cscope_connection cursor debugbreak deepcopy delete deletebufline did_filetype
diff diff_filler diff_hlID digraph_get digraph_getlist digraph_set
digraph_setlist echoraw empty environ err_teapot escape eval eventhandler
executable execute exepath exists exists_compiled exp expand expandcmd extend
extendnew feedkeys filecopy filereadable filewritable filter finddir findfile
flatten flattennew float2nr floor fmod fnameescape fnamemodify foldclosed
foldclosedend foldlevel foldtext foldtextresult foreach foreground fullcommand
funcref function garbagecollect get getbufinfo getbufline getbufoneline
getbufvar getcellwidths getchangelist
-syn keyword vimFuncName contained getchar getcharmod getcharpos getcharsearch
getcharstr getcmdcomplpat getcmdcompltype getcmdline getcmdpos getcmdprompt
getcmdscreenpos getcmdtype getcmdwintype getcompletion getcurpos
getcursorcharpos getcwd getenv getfontname getfperm getfsize getftime getftype
getimstatus getjumplist getline getloclist getmarklist getmatches getmousepos
getmouseshape getpid getpos getqflist getreg getreginfo getregion getregionpos
getregtype getscriptinfo gettabinfo gettabvar gettabwinvar gettagstack gettext
getwininfo getwinpos getwinposx getwinposy getwinvar glob glob2regpat globpath
has has_key haslocaldir hasmapto histadd histdel histget histnr hlID hlexists
hlget hlset hostname iconv id indent index indexof input inputdialog inputlist
-syn keyword vimFuncName contained inputrestore inputsave inputsecret insert
instanceof interrupt invert isabsolutepath isdirectory isinf islocked isnan
items job_getchannel job_info job_setoptions job_start job_status job_stop join
js_decode js_encode json_decode json_encode keys keytrans len libcall libcallnr
line line2byte lispindent list2blob list2str listener_add listener_flush
listener_remove localtime log log10 luaeval map maparg mapcheck maplist mapnew
mapset match matchadd matchaddpos matcharg matchbufline matchdelete matchend
matchfuzzy matchfuzzypos matchlist matchstr matchstrlist matchstrpos max
menu_info min mkdir mode mzeval nextnonblank nr2char or pathshorten perleval
popup_atcursor popup_beval popup_clear popup_close popup_create popup_dialog
popup_filter_menu
-syn keyword vimFuncName contained popup_filter_yesno popup_findecho
popup_findinfo popup_findpreview popup_getoptions popup_getpos popup_hide
popup_list popup_locate popup_menu popup_move popup_notification popup_setbuf
popup_setoptions popup_settext popup_show pow prevnonblank printf
prompt_getprompt prompt_setcallback prompt_setinterrupt prompt_setprompt
prop_add prop_add_list prop_clear prop_find prop_list prop_remove prop_type_add
prop_type_change prop_type_delete prop_type_get prop_type_list pum_getpos
pumvisible py3eval pyeval pyxeval rand range readblob readdir readdirex
readfile reduce reg_executing reg_recording reltime reltimefloat reltimestr
remote_expr remote_foreground remote_peek remote_read remote_send
remote_startserver remove rename repeat resolve
-syn keyword vimFuncName contained reverse round rubyeval screenattr screenchar
screenchars screencol screenpos screenrow screenstring search searchcount
searchdecl searchpair searchpairpos searchpos server2client serverlist
setbufline setbufvar setcellwidths setcharpos setcharsearch setcmdline
setcmdpos setcursorcharpos setenv setfperm setline setloclist setmatches setpos
setqflist setreg settabvar settabwinvar settagstack setwinvar sha256
shellescape shiftwidth sign_define sign_getdefined sign_getplaced sign_jump
sign_place sign_placelist sign_undefine sign_unplace sign_unplacelist simplify
sin sinh slice sort sound_clear sound_playevent sound_playfile sound_stop
soundfold spellbadword spellsuggest split sqrt srand state str2float str2list
str2nr strcharlen strcharpart
-syn keyword vimFuncName contained strchars strdisplaywidth strftime strgetchar
stridx string strlen strpart strptime strridx strtrans strutf16len strwidth
submatch substitute swapfilelist swapinfo swapname synID synIDattr synIDtrans
synconcealed synstack system systemlist tabpagebuflist tabpagenr tabpagewinnr
tagfiles taglist tan tanh tempname term_dumpdiff term_dumpload term_dumpwrite
term_getaltscreen term_getansicolors term_getattr term_getcursor term_getjob
term_getline term_getscrolled term_getsize term_getstatus term_gettitle
term_gettty term_list term_scrape term_sendkeys term_setansicolors term_setapi
term_setkill term_setrestore term_setsize term_start term_wait terminalprops
test_alloc_fail test_autochdir test_feedinput test_garbagecollect_now
test_garbagecollect_soon
-syn keyword vimFuncName contained test_getvalue test_gui_event
test_ignore_error test_mswin_event test_null_blob test_null_channel
test_null_dict test_null_function test_null_job test_null_list
test_null_partial test_null_string test_option_not_set test_override
test_refcount test_setmouse test_settime test_srand_seed test_unknown test_void
timer_info timer_pause timer_start timer_stop timer_stopall tolower toupper tr
trim trunc type typename undofile undotree uniq utf16idx values virtcol
virtcol2col visualmode wildmenumode win_execute win_findbuf win_getid
win_gettype win_gotoid win_id2tabwin win_id2win win_move_separator
win_move_statusline win_screenpos win_splitmove winbufnr wincol windowsversion
winheight winlayout winline winnr winrestcmd winrestview winsaveview
-syn keyword vimFuncName contained winwidth wordcount writefile xor
+syn keyword vimFuncName contained chdir cindent clearmatches col complete
complete_add complete_check complete_info confirm copy cos cosh count
cscope_connection cursor debugbreak deepcopy delete deletebufline did_filetype
diff diff_filler diff_hlID digraph_get digraph_getlist digraph_set
digraph_setlist echoraw empty environ err_teapot escape eval eventhandler
executable execute exepath exists exists_compiled exp expand expandcmd extend
extendnew feedkeys filecopy filereadable filewritable filter finddir findfile
flatten flattennew float2nr floor fmod fnameescape fnamemodify foldclosed
foldclosedend foldlevel foldtext foldtextresult foreach foreground fullcommand
funcref function garbagecollect get getbufinfo getbufline getbufoneline
getbufvar getcellpixels getcellwidths
+syn keyword vimFuncName contained getchangelist getchar getcharmod getcharpos
getcharsearch getcharstr getcmdcomplpat getcmdcompltype getcmdline getcmdpos
getcmdprompt getcmdscreenpos getcmdtype getcmdwintype getcompletion getcurpos
getcursorcharpos getcwd getenv getfontname getfperm getfsize getftime getftype
getimstatus getjumplist getline getloclist getmarklist getmatches getmousepos
getmouseshape getpid getpos getqflist getreg getreginfo getregion getregionpos
getregtype getscriptinfo gettabinfo gettabvar gettabwinvar gettagstack gettext
getwininfo getwinpos getwinposx getwinposy getwinvar glob glob2regpat globpath
has has_key haslocaldir hasmapto histadd histdel histget histnr hlID hlexists
hlget hlset hostname iconv id indent index indexof input inputdialog
+syn keyword vimFuncName contained inputlist inputrestore inputsave inputsecret
insert instanceof interrupt invert isabsolutepath isdirectory isinf islocked
isnan items job_getchannel job_info job_setoptions job_start job_status
job_stop join js_decode js_encode json_decode json_encode keys keytrans len
libcall libcallnr line line2byte lispindent list2blob list2str listener_add
listener_flush listener_remove localtime log log10 luaeval map maparg mapcheck
maplist mapnew mapset match matchadd matchaddpos matcharg matchbufline
matchdelete matchend matchfuzzy matchfuzzypos matchlist matchstr matchstrlist
matchstrpos max menu_info min mkdir mode mzeval nextnonblank nr2char or
pathshorten perleval popup_atcursor popup_beval popup_clear popup_close
popup_create popup_dialog
+syn keyword vimFuncName contained popup_filter_menu popup_filter_yesno
popup_findecho popup_findinfo popup_findpreview popup_getoptions popup_getpos
popup_hide popup_list popup_locate popup_menu popup_move popup_notification
popup_setbuf popup_setoptions popup_settext popup_show pow prevnonblank printf
prompt_getprompt prompt_setcallback prompt_setinterrupt prompt_setprompt
prop_add prop_add_list prop_clear prop_find prop_list prop_remove prop_type_add
prop_type_change prop_type_delete prop_type_get prop_type_list pum_getpos
pumvisible py3eval pyeval pyxeval rand range readblob readdir readdirex
readfile reduce reg_executing reg_recording reltime reltimefloat reltimestr
remote_expr remote_foreground remote_peek remote_read remote_send
remote_startserver remove
+syn keyword vimFuncName contained rename repeat resolve reverse round rubyeval
screenattr screenchar screenchars screencol screenpos screenrow screenstring
search searchcount searchdecl searchpair searchpairpos searchpos server2client
serverlist setbufline setbufvar setcellwidths setcharpos setcharsearch
setcmdline setcmdpos setcursorcharpos setenv setfperm setline setloclist
setmatches setpos setqflist setreg settabvar settabwinvar settagstack setwinvar
sha256 shellescape shiftwidth sign_define sign_getdefined sign_getplaced
sign_jump sign_place sign_placelist sign_undefine sign_unplace sign_unplacelist
simplify sin sinh slice sort sound_clear sound_playevent sound_playfile
sound_stop soundfold spellbadword spellsuggest split sqrt srand state str2float
str2list
+syn keyword vimFuncName contained str2nr strcharlen strcharpart strchars
strdisplaywidth strftime strgetchar stridx string strlen strpart strptime
strridx strtrans strutf16len strwidth submatch substitute swapfilelist swapinfo
swapname synID synIDattr synIDtrans synconcealed synstack system systemlist
tabpagebuflist tabpagenr tabpagewinnr tagfiles taglist tan tanh tempname
term_dumpdiff term_dumpload term_dumpwrite term_getaltscreen term_getansicolors
term_getattr term_getcursor term_getjob term_getline term_getscrolled
term_getsize term_getstatus term_gettitle term_gettty term_list term_scrape
term_sendkeys term_setansicolors term_setapi term_setkill term_setrestore
term_setsize term_start term_wait terminalprops test_alloc_fail test_autochdir
test_feedinput
+syn keyword vimFuncName contained test_garbagecollect_now
test_garbagecollect_soon test_getvalue test_gui_event test_ignore_error
test_mswin_event test_null_blob test_null_channel test_null_dict
test_null_function test_null_job test_null_list test_null_partial
test_null_string test_option_not_set test_override test_refcount test_setmouse
test_settime test_srand_seed test_unknown test_void timer_info timer_pause
timer_start timer_stop timer_stopall tolower toupper tr trim trunc type
typename undofile undotree uniq utf16idx values virtcol virtcol2col visualmode
wildmenumode win_execute win_findbuf win_getid win_gettype win_gotoid
win_id2tabwin win_id2win win_move_separator win_move_statusline win_screenpos
win_splitmove winbufnr wincol windowsversion winheight winlayout
+syn keyword vimFuncName contained winline winnr winrestcmd winrestview
winsaveview winwidth wordcount writefile xor
"--- syntax here and above generated by mkvimvim ---
" Special Vim Highlighting (not automatic) {{{1
diff --git a/src/ex_cmdidxs.h b/src/ex_cmdidxs.h
index 658f05e2d..0b13a6c7f 100644
--- a/src/ex_cmdidxs.h
+++ b/src/ex_cmdidxs.h
@@ -21,16 +21,16 @@ static const unsigned short cmdidxs1[26] =
/* n */ 308,
/* o */ 328,
/* p */ 340,
- /* q */ 380,
- /* r */ 383,
- /* s */ 403,
- /* t */ 473,
- /* u */ 520,
- /* v */ 531,
- /* w */ 552,
- /* x */ 566,
- /* y */ 576,
- /* z */ 577
+ /* q */ 381,
+ /* r */ 384,
+ /* s */ 404,
+ /* t */ 474,
+ /* u */ 521,
+ /* v */ 532,
+ /* w */ 553,
+ /* x */ 567,
+ /* y */ 577,
+ /* z */ 578
};
/*
@@ -56,7 +56,7 @@ static const unsigned char cmdidxs2[26][26] =
/* m */ { 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 16 },
/* n */ { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 10, 0,
0, 0, 0, 0, 17, 0, 0, 0, 0, 0 },
/* o */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 5, 0, 0,
0, 0, 0, 0, 9, 0, 11, 0, 0, 0 },
- /* p */ { 1, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9,
0, 0, 16, 17, 26, 0, 28, 0, 29, 0 },
+ /* p */ { 1, 3, 4, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 10,
0, 0, 17, 18, 27, 0, 29, 0, 30, 0 },
/* q */ { 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
/* r */ { 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 14, 19, 0, 0, 0, 0 },
/* s */ { 2, 6, 15, 0, 19, 23, 0, 25, 26, 0, 0, 29, 31, 35, 39, 41,
0, 50, 0, 51, 0, 64, 65, 0, 66, 0 },
@@ -69,4 +69,4 @@ static const unsigned char cmdidxs2[26][26] =
/* z */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
-static const int command_count = 594;
+static const int command_count = 595;
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 25f69143e..dc5da0a1e 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -1145,6 +1145,9 @@ EXCMD(CMD_packadd, "packadd", ex_packadd,
EXCMD(CMD_packloadall, "packloadall", ex_packloadall,
EX_BANG|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN|EX_LOCK_OK,
ADDR_NONE),
+EXCMD(CMD_pbuffer, "pbuffer", ex_pbuffer,
+
EX_BANG|EX_RANGE|EX_BUFNAME|EX_BUFUNL|EX_COUNT|EX_EXTRA|EX_CMDARG|EX_TRLBAR,
+ ADDR_BUFFERS),
EXCMD(CMD_pclose, "pclose", ex_pclose,
EX_BANG|EX_TRLBAR,
ADDR_NONE),
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 859dc8563..d516755c4 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -36,6 +36,7 @@ static void ex_autocmd(exarg_T *eap);
static void ex_doautocmd(exarg_T *eap);
static void ex_bunload(exarg_T *eap);
static void ex_buffer(exarg_T *eap);
+static void do_exbuffer(exarg_T *eap);
static void ex_bmodified(exarg_T *eap);
static void ex_bnext(exarg_T *eap);
static void ex_bprevious(exarg_T *eap);
@@ -101,10 +102,14 @@ static void ex_tabs(exarg_T *eap);
static void ex_pclose(exarg_T *eap);
static void ex_ptag(exarg_T *eap);
static void ex_pedit(exarg_T *eap);
+static void ex_pbuffer(exarg_T *eap);
+static void prepare_preview_window(void);
+static void back_to_current_window(win_T *curwin_save);
#else
# define ex_pclose ex_ni
# define ex_ptag ex_ni
# define ex_pedit ex_ni
+# define ex_pbuffer ex_ni
#endif
static void ex_hide(exarg_T *eap);
static void ex_exit(exarg_T *eap);
@@ -5734,6 +5739,15 @@ ex_buffer(exarg_T *eap)
{
if (ERROR_IF_ANY_POPUP_WINDOW)
return;
+ do_exbuffer(eap);
+}
+
+/*
+ * ":buffer" command and alike.
+ */
+ static void
+do_exbuffer(exarg_T *eap)
+{
if (*eap->arg)
eap->errmsg = ex_errmsg(e_trailing_characters_str, eap->arg);
else
@@ -9437,17 +9451,43 @@ ex_ptag(exarg_T *eap)
ex_pedit(exarg_T *eap)
{
win_T *curwin_save = curwin;
+ prepare_preview_window();
+
+ // Edit the file.
+ do_exedit(eap, NULL);
+
+ back_to_current_window(curwin_save);
+}
+
+/*
+ * ":pbuffer"
+ */
+ static void
+ex_pbuffer(exarg_T *eap)
+{
+ win_T *curwin_save = curwin;
+ prepare_preview_window();
+
+ // Go to the buffer.
+ do_exbuffer(eap);
+ back_to_current_window(curwin_save);
+}
+
+ static void
+prepare_preview_window(void)
+{
if (ERROR_IF_ANY_POPUP_WINDOW)
return;
// Open the preview window or popup and make it the current window.
g_do_tagpreview = p_pvh;
prepare_tagpreview(TRUE, TRUE, FALSE);
+}
- // Edit the file.
- do_exedit(eap, NULL);
-
+ static void
+back_to_current_window(win_T *curwin_save)
+{
if (curwin != curwin_save && win_valid(curwin_save))
{
// Return cursor to where we were
diff --git a/src/testdir/dumps/Test_popup_and_previewwindow_pbuffer.dump
b/src/testdir/dumps/Test_popup_and_previewwindow_pbuffer.dump
new file mode 100644
index 000000000..0eab2a62c
--- /dev/null
+++ b/src/testdir/dumps/Test_popup_and_previewwindow_pbuffer.dump
@@ -0,0 +1,20 @@
+|a+0&#ffffff0|b|0| @71
+|a|b|1| @71
+|a|b|2| @71
+|a|b|3| @71
+|a|b|4| @71
+|a|b|5| @71
+|a|b|6| @71
+|a|b|7| @71
+|a|b|8| @71
+|a+0#0000001#e0e0e08|b|0| @11| +0#0000000#0000001|e+1&#ffffff0|w|]|[|+|]|
@34|1|,|1| @11|T|o|p
+|a+0#0000001#ffd7ff255|b|1| @11| +0#0000000#0000001| +0&#ffffff0@58
+|a+0#0000001#ffd7ff255|b|2| @11| +0#0000000#0000001| +0&#ffffff0@58
+|a+0#0000001#ffd7ff255|b|3| @11| +0#0000000#a8a8a8255| +0&#ffffff0@58
+|a+0#0000001#ffd7ff255|b|4| @11| +0#0000000#a8a8a8255| +0&#ffffff0@58
+|a+0#0000001#ffd7ff255|b|5| @11| +0#0000000#a8a8a8255| +0&#ffffff0@58
+|a|b|0> @71
+|~+0#4040ff13&| @73
+|~| @73
+|[+3#0000000&|N|o| |N|a|m|e|]| |[|+|]| @43|1@1|,|1| @10|B|o|t
+|-+2&&@1| |K|e|y|w|o|r|d| |L|o|c|a|l| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)|
|m+0#00e0003&|a|t|c|h| |1| |o|f| |1|0| +0#0000000&@26
diff --git a/src/testdir/dumps/Test_popup_and_previewwindow_01.dump
b/src/testdir/dumps/Test_popup_and_previewwindow_pedit.dump
similarity index 100%
rename from src/testdir/dumps/Test_popup_and_previewwindow_01.dump
rename to src/testdir/dumps/Test_popup_and_previewwindow_pedit.dump
diff --git a/src/testdir/dumps/Test_pum_preview_pbuffer_1.dump
b/src/testdir/dumps/Test_pum_preview_pbuffer_1.dump
new file mode 100644
index 000000000..ae02ce5a0
--- /dev/null
+++ b/src/testdir/dumps/Test_pum_preview_pbuffer_1.dump
@@ -0,0 +1,12 @@
+|o+0&#ffffff0|n|e| |o|t|h|e|r> @65
+|╔+0#0000001#ffd7ff255|═@1| +0&#e0e0e08|o|t|h|e|r| @9|═+0&#ffd7ff255@21|X|
+0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001&|o|n|c|e| @32|║|
+0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001&|o|n|l|y| @32|║|
+0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|f@1| @33|║|
+0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|n|e| @33|║|
+0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|c+0#af5f00255&|a|l@1|
+0#0000001&|s+0#00e0e07&|y|s|t|e|m|(+0#e000e06&|'+0#e000002&|e|c|h|o|
|h|e|l@1|o|'|)+0#e000e06&| +0#0000001&@14|║| +0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|"+0#0000e05&| |t|h|e| |e|n|d| +0#0000001&@30|║|
+0#4040ff13#ffffff0@32
+|╚+0#0000001#ffd7ff255|═@39|⇲| +0#4040ff13#ffffff0@32
+|~| @73
+|~| @73
+|-+2#0000000&@1| |K|e|y|w|o|r|d| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)|
|m+0#00e0003&|a|t|c|h| |1| |o|f| |5| +0#0000000&@33
diff --git a/src/testdir/dumps/Test_pum_preview_pbuffer_2.dump
b/src/testdir/dumps/Test_pum_preview_pbuffer_2.dump
new file mode 100644
index 000000000..e83929fc8
--- /dev/null
+++ b/src/testdir/dumps/Test_pum_preview_pbuffer_2.dump
@@ -0,0 +1,12 @@
+|o+0&#ffffff0|n|e| |o|n|c|e> @66
+|╔+0#0000001#ffd7ff255|═@1| |o|t|h|e|r| @9|═@21|X| +0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001#e0e0e08|o|n|c|e| @10|
+0&#ffd7ff255@21|║| +0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001&|o|n|l|y| @32|║|
+0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|f@1| @33|║|
+0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|n|e| @33|║|
+0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|c+0#af5f00255&|a|l@1|
+0#0000001&|s+0#00e0e07&|y|s|t|e|m|(+0#e000e06&|'+0#e000002&|e|c|h|o|
|h|e|l@1|o|'|)+0#e000e06&| +0#0000001&@14|║| +0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|"+0#0000e05&| |t|h|e| |e|n|d| +0#0000001&@30|║|
+0#4040ff13#ffffff0@32
+|╚+0#0000001#ffd7ff255|═@39|⇲| +0#4040ff13#ffffff0@32
+|~| @73
+|~| @73
+|-+2#0000000&@1| |K|e|y|w|o|r|d| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)|
|m+0#00e0003&|a|t|c|h| |2| |o|f| |5| +0#0000000&@33
diff --git a/src/testdir/dumps/Test_pum_preview_pbuffer_3.dump
b/src/testdir/dumps/Test_pum_preview_pbuffer_3.dump
new file mode 100644
index 000000000..fde2104ea
--- /dev/null
+++ b/src/testdir/dumps/Test_pum_preview_pbuffer_3.dump
@@ -0,0 +1,12 @@
+|o+0&#ffffff0|n|e| |o|n|l|y> @66
+|╔+0#0000001#ffd7ff255|═@1| |o|t|h|e|r| @9|═@21|X| +0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001&|o|n|c|e| @32|║|
+0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001#e0e0e08|o|n|l|y| @10|
+0&#ffd7ff255@21|║| +0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|f@1| @33|║|
+0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|n|e| @33|║|
+0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|c+0#af5f00255&|a|l@1|
+0#0000001&|s+0#00e0e07&|y|s|t|e|m|(+0#e000e06&|'+0#e000002&|e|c|h|o|
|h|e|l@1|o|'|)+0#e000e06&| +0#0000001&@14|║| +0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|"+0#0000e05&| |t|h|e| |e|n|d| +0#0000001&@30|║|
+0#4040ff13#ffffff0@32
+|╚+0#0000001#ffd7ff255|═@39|⇲| +0#4040ff13#ffffff0@32
+|~| @73
+|~| @73
+|-+2#0000000&@1| |K|e|y|w|o|r|d| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)|
|m+0#00e0003&|a|t|c|h| |3| |o|f| |5| +0#0000000&@33
diff --git a/src/testdir/dumps/Test_pum_preview_pbuffer_4.dump
b/src/testdir/dumps/Test_pum_preview_pbuffer_4.dump
new file mode 100644
index 000000000..dee2b552d
--- /dev/null
+++ b/src/testdir/dumps/Test_pum_preview_pbuffer_4.dump
@@ -0,0 +1,12 @@
+|o+0&#ffffff0|n|e| |o|f@1> @67
+|╔+0#0000001#ffd7ff255|═@1| |o|t|h|e|r| @9|═@21|X| +0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001&|o|n|c|e| @32|║|
+0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|l+0#af5f00255&|e| +0#0000001&|o|n|l|y| @32|║|
+0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001#e0e0e08|o|f@1| @11|
+0&#ffd7ff255@21|║| +0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|e+0#af5f00255&|c| +0#0000001&|o|n|e| @33|║|
+0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|c+0#af5f00255&|a|l@1|
+0#0000001&|s+0#00e0e07&|y|s|t|e|m|(+0#e000e06&|'+0#e000002&|e|c|h|o|
|h|e|l@1|o|'|)+0#e000e06&| +0#0000001&@14|║| +0#0000000#ffffff0@32
+|║+0#0000001#ffd7ff255|"+0#0000e05&| |t|h|e| |e|n|d| +0#0000001&@30|║|
+0#4040ff13#ffffff0@32
+|╚+0#0000001#ffd7ff255|═@39|⇲| +0#4040ff13#ffffff0@32
+|~| @73
+|~| @73
+|-+2#0000000&@1| |K|e|y|w|o|r|d| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)|
|m+0#00e0003&|a|t|c|h| |4| |o|f| |5| +0#0000000&@33
diff --git a/src/testdir/dumps/Test_pum_preview_1.dump
b/src/testdir/dumps/Test_pum_preview_pedit_1.dump
similarity index 100%
rename from src/testdir/dumps/Test_pum_preview_1.dump
rename to src/testdir/dumps/Test_pum_preview_pedit_1.dump
diff --git a/src/testdir/dumps/Test_pum_preview_2.dump
b/src/testdir/dumps/Test_pum_preview_pedit_2.dump
similarity index 100%
rename from src/testdir/dumps/Test_pum_preview_2.dump
rename to src/testdir/dumps/Test_pum_preview_pedit_2.dump
diff --git a/src/testdir/dumps/Test_pum_preview_3.dump
b/src/testdir/dumps/Test_pum_preview_pedit_3.dump
similarity index 100%
rename from src/testdir/dumps/Test_pum_preview_3.dump
rename to src/testdir/dumps/Test_pum_preview_pedit_3.dump
diff --git a/src/testdir/dumps/Test_pum_preview_4.dump
b/src/testdir/dumps/Test_pum_preview_pedit_4.dump
similarity index 100%
rename from src/testdir/dumps/Test_pum_preview_4.dump
rename to src/testdir/dumps/Test_pum_preview_pedit_4.dump
diff --git a/src/testdir/test_popup.vim b/src/testdir/test_popup.vim
index d5e6e312a..69228e1cf 100644
--- a/src/testdir/test_popup.vim
+++ b/src/testdir/test_popup.vim
@@ -748,17 +748,11 @@ func Test_popup_and_preview_autocommand()
bw!
endfunc
-func Test_popup_and_previewwindow_dump()
+func s:run_popup_and_previewwindow_dump(lines, dumpfile)
CheckScreendump
CheckFeature quickfix
- let lines =<< trim END
- set previewheight=9
- silent! pedit
- call setline(1, map(repeat(["ab"], 10), "v:val .. v:key"))
- exec "norm! G\<C-E>\<C-E>"
- END
- call writefile(lines, 'Xscript', 'D')
+ call writefile(a:lines, 'Xscript', 'D')
let buf = RunVimInTerminal('-S Xscript', {})
" wait for the script to finish
@@ -768,12 +762,32 @@ func Test_popup_and_previewwindow_dump()
call term_sendkeys(buf, "o")
call TermWait(buf, 50)
call term_sendkeys(buf, "\<C-X>\<C-N>")
- call VerifyScreenDump(buf, 'Test_popup_and_previewwindow_01', {})
+ call VerifyScreenDump(buf, a:dumpfile, {})
call term_sendkeys(buf, "\<Esc>u")
call StopVimInTerminal(buf)
endfunc
+func Test_popup_and_previewwindow_dump_pedit()
+ let lines =<< trim END
+ set previewheight=9
+ silent! pedit
+ call setline(1, map(repeat(["ab"], 10), "v:val .. v:key"))
+ exec "norm! G\<C-E>\<C-E>"
+ END
+ call s:run_popup_and_previewwindow_dump(lines,
'Test_popup_and_previewwindow_pedit')
+endfunc
+
+func Test_popup_and_previewwindow_dump_pbuffer()
+ let lines =<< trim END
+ set previewheight=9
+ silent! pbuffer
+ call setline(1, map(repeat(["ab"], 10), "v:val .. v:key"))
+ exec "norm! G\<C-E>\<C-E>\<C-E>"
+ END
+ call s:run_popup_and_previewwindow_dump(lines,
'Test_popup_and_previewwindow_pbuffer')
+endfunc
+
func Test_balloon_split()
CheckFunction balloon_split
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index 23f318fd6..d345b3eed 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -1106,6 +1106,7 @@ func Test_win_execute_not_allowed()
call assert_fails('call win_execute(winid, "next")', 'E994:')
call assert_fails('call win_execute(winid, "rewind")', 'E994:')
call assert_fails('call win_execute(winid, "pedit filename")', 'E994:')
+ call assert_fails('call win_execute(winid, "pbuffer filename")', 'E994:')
call assert_fails('call win_execute(winid, "buf")', 'E994:')
call assert_fails('call win_execute(winid, "bnext")', 'E994:')
call assert_fails('call win_execute(winid, "bprev")', 'E994:')
@@ -3457,7 +3458,7 @@ func Test_previewpopup()
call StopVimInTerminal(buf)
endfunc
-func Test_previewpopup_pum()
+func s:run_preview_popuppum(preview_lines, dumpfile_name)
CheckScreendump
CheckFeature quickfix
@@ -3471,30 +3472,43 @@ func Test_previewpopup_pum()
END
call writefile(lines, 'XpreviewText.vim', 'D')
- let lines =<< trim END
- call setline(1, ['one', 'two', 'three', 'other', 'once', 'only', 'off'])
- set previewpopup=height:6,width:40
- pedit XpreviewText.vim
- END
- call writefile(lines, 'XtestPreviewPum', 'D')
+ call writefile(a:preview_lines, 'XtestPreviewPum', 'D')
let buf = RunVimInTerminal('-S XtestPreviewPum', #{rows: 12})
call term_sendkeys(buf, "A o\<C-N>")
- call VerifyScreenDump(buf, 'Test_pum_preview_1', {})
+ call VerifyScreenDump(buf, 'Test_pum_preview_' . a:dumpfile_name . '_1', {})
call term_sendkeys(buf, "\<C-N>")
- call VerifyScreenDump(buf, 'Test_pum_preview_2', {})
+ call VerifyScreenDump(buf, 'Test_pum_preview_' . a:dumpfile_name . '_2', {})
call term_sendkeys(buf, "\<C-N>")
- call VerifyScreenDump(buf, 'Test_pum_preview_3', {})
+ call VerifyScreenDump(buf, 'Test_pum_preview_' . a:dumpfile_name . '_3', {})
call term_sendkeys(buf, "\<C-N>")
- call VerifyScreenDump(buf, 'Test_pum_preview_4', {})
+ call VerifyScreenDump(buf, 'Test_pum_preview_' . a:dumpfile_name . '_4', {})
call term_sendkeys(buf, "\<Esc>")
call StopVimInTerminal(buf)
endfunc
+func Test_previewpopup_pum_pedit()
+ let lines =<< trim END
+ call setline(1, ['one', 'two', 'three', 'other', 'once', 'only', 'off'])
+ set previewpopup=height:6,width:40
+ pedit XpreviewText.vim
+ END
+ call s:run_preview_popuppum(lines, 'pedit')
+endfunc
+
+func Test_previewpopup_pum_pbuffer()
+ let lines =<< trim END
+ call setline(1, ['one', 'two', 'three', 'other', 'once', 'only', 'off'])
+ set previewpopup=height:6,width:40
+ badd XpreviewText.vim
+ exe bufnr('$') . 'pbuffer'
+ END
+ call s:run_preview_popuppum(lines, 'pbuffer')
+endfunc
func Get_popupmenu_lines()
let lines =<< trim END
diff --git a/src/testdir/test_preview.vim b/src/testdir/test_preview.vim
index 3d13d99ba..0df1a9022 100644
--- a/src/testdir/test_preview.vim
+++ b/src/testdir/test_preview.vim
@@ -15,6 +15,20 @@ func Test_Psearch()
bwipe
endfunc
+func s:goto_preview_and_close()
+ " Go to the preview window
+ wincmd P
+ call assert_equal(1, &previewwindow)
+ call assert_equal('preview', win_gettype())
+
+ " Close preview window
+ wincmd z
+ call assert_equal(1, winnr('$'))
+ call assert_equal(0, &previewwindow)
+
+ call assert_fails('wincmd P', 'E441:')
+endfunc
+
func Test_window_preview()
CheckFeature quickfix
@@ -23,17 +37,36 @@ func Test_window_preview()
call assert_equal(2, winnr('$'))
call assert_equal(0, &previewwindow)
- " Go to the preview window
- wincmd P
- call assert_equal(1, &previewwindow)
- call assert_equal('preview', win_gettype())
+ call s:goto_preview_and_close()
+endfunc
- " Close preview window
- wincmd z
+func Test_window_preview_from_pbuffer()
+ CheckFeature quickfix
+
+ call writefile(['/* some C code */'], 'Xpreview.c', 'D')
+ edit Xpreview.c
+ const buf_num = bufnr('%')
+ enew
call assert_equal(1, winnr('$'))
+ exe 'pbuffer ' . buf_num
+ call assert_equal(2, winnr('$'))
call assert_equal(0, &previewwindow)
- call assert_fails('wincmd P', 'E441:')
+ call s:goto_preview_and_close()
+endfunc
+
+func Test_window_preview_terminal()
+ CheckFeature quickfix
+ CheckFeature terminal
+
+ term ++curwin
+ const buf_num = bufnr('$')
+ call assert_equal(1, winnr('$'))
+ exe 'pbuffer' . buf_num
+ call assert_equal(2, winnr('$'))
+ call assert_equal(0, &previewwindow)
+
+ call s:goto_preview_and_close()
endfunc
func Test_window_preview_from_help()
diff --git a/src/testdir/test_statusline.vim b/src/testdir/test_statusline.vim
index 22fd78cde..73c3bee2a 100644
--- a/src/testdir/test_statusline.vim
+++ b/src/testdir/test_statusline.vim
@@ -220,6 +220,10 @@ func Test_statusline()
wincmd j
call assert_match('^\[Preview\],PRV\s*$', s:get_statusline())
pclose
+ pbuffer
+ wincmd j
+ call assert_match('^\[Preview\],PRV\s*$', s:get_statusline())
+ pclose
" %y: Type of file in the buffer, e.g., "[vim]". See 'filetype'.
" %Y: Type of file in the buffer, e.g., ",VIM". See 'filetype'.
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index 51ae7e685..900bf8ae3 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -2044,18 +2044,29 @@ def Test_lambda_crash()
v9.CheckScriptFailureList(lines, ["E1356:", "E1405:"])
enddef
-" Test for the 'previewpopup' option
-def Test_previewpopup()
- set previewpopup=height:10,width:60
- pedit Xppfile
+def s:check_previewpopup(expected_title: string)
var id = popup_findpreview()
assert_notequal(id, 0)
- assert_match('Xppfile', popup_getoptions(id).title)
+ assert_match(expected_title, popup_getoptions(id).title)
popup_clear()
bw Xppfile
set previewpopup&
enddef
+" Test for the 'previewpopup' option
+def Test_previewpopup()
+ set previewpopup=height:10,width:60
+ pedit Xppfile
+ s:check_previewpopup('Xppfile')
+enddef
+
+def Test_previewpopup_pbuffer()
+ set previewpopup=height:10,width:60
+ edit Xppfile
+ pbuffer
+ s:check_previewpopup('')
+enddef
+
def Test_syntax_enable_clear()
syntax clear
syntax enable
diff --git a/src/testdir/test_window_cmd.vim b/src/testdir/test_window_cmd.vim
index 75b37ecda..b6381a33b 100644
--- a/src/testdir/test_window_cmd.vim
+++ b/src/testdir/test_window_cmd.vim
@@ -1258,6 +1258,7 @@ func Run_noroom_for_newwindow_test(dir_arg)
" Preview window
call assert_fails(dir .. 'pedit Xnorfile2', 'E36:')
+ call assert_fails(dir .. 'pbuffer', 'E36:')
call setline(1, 'abc')
call assert_fails(dir .. 'psearch abc', 'E36:')
endif
diff --git a/src/testdir/test_winfixbuf.vim b/src/testdir/test_winfixbuf.vim
index 3cec4ed70..2d4eaf675 100644
--- a/src/testdir/test_winfixbuf.vim
+++ b/src/testdir/test_winfixbuf.vim
@@ -2545,6 +2545,18 @@ func Test_pedit()
call assert_equal(l:other, bufnr())
endfunc
+" Allow :pbuffer because, unlike :buffer, it uses a separate window
+func Test_pbuffer()
+ call s:reset_all_buffers()
+
+ let l:other = s:make_buffer_pairs()
+
+ exe 'pbuffer ' . l:other
+
+ execute "normal \<C-w>w"
+ call assert_equal(l:other, bufnr())
+endfunc
+
" Fail :pop but :pop! is allowed
func Test_pop()
call s:reset_all_buffers()
diff --git a/src/version.c b/src/version.c
index 1cfe99dc0..f8cee6d97 100644
--- a/src/version.c
+++ b/src/version.c
@@ -704,6 +704,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 934,
/**/
933,
/**/
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/vim_dev/E1tNHjA-000t9U-KN%40256bit.org.