Bram, In a thread started here [0] back in July I reported a problem I was having with messages not being displayed in the right order. It was determined during that thread that there was a difference of behavior based on whether hidden was set or not. Buried in one of the later messages, I asked you if this was intentional or a bug, but I haven't heard back from you. You weren't active on the list at the time; I assume you were on vacation/moving. I guess that my buried query didn't catch your attention when you were catching up on mail.
Here is the summary: ----- vim -u NONE -U NONE somefile.txt :e testbuf.vim " if testbuf.vim is new, paste the TestBuf function below and :w :let g:testbuf = 2 " the buffer number of testbuf.vim :so % :b # " we are now set up to demonstrate the problem :call TestBuf() " this should display Done with TestBuf (found = 3) :set hidden :call TestBuf() " this displays "somefile.txt" line 1 of... :set nohidden :call TestBuf() " this still displays "somefile.txt"... " You must switch buffers at least once after :set nohidden before you " get the original (desired) behavior back. ----- TestBuf function! TestBuf() let curbuf = bufnr("%") exec "b" g:testbuf let found = search('t.st') exec "b" curbuf echomsg 'Done with TestBuf (found = '.found.')' endfunction ----- A separate problem is that changing both occurrences of exec "b"... to silent exec "b"... does not change anything; that is, the output of exec "b"... is not suppressed (when hidden is set). I feel that both of these are bugs, but I wanted to know if there was a reason that you thought these were the correct behaviors (or perhaps it is simply impractical to change). Thanks...Marvin [0] http://groups.yahoo.com/group/vimdev/message/44273