// mark cursor position as being invalid
curwin->w_valid = 0;
- buflist_setfpos(curbuf, curwin, curbuf->b_last_cursor.lnum,
- curbuf->b_last_cursor.col, TRUE);
-
// Make sure the buffer is loaded.
if (curbuf->b_ml.ml_mfp == NULL) // need to load the file
{
%bw!
endfunc
+" Cursor position should be restored when switching to a buffer previously
+" viewed in a window, regardless of whether it's visible in another one.
+func Test_switch_to_previously_viewed_buffer()
+ set nostartofline
+ new Xviewbuf
+ call setline(1, range(1, 200))
+ let oldwin = win_getid()
+ vsplit
+
+ call cursor(100, 3)
+ edit Xotherbuf
+ buffer Xviewbuf
+ call assert_equal([0, 100, 3, 0], getpos('.'))
+
+ exe win_id2win(oldwin) .. 'close'
+ setlocal bufhidden=hide
+
+ call cursor(200, 3)
+ edit Xotherbuf
+ buffer Xviewbuf
+ call assert_equal([0, 200, 3, 0], getpos('.'))
+
+ bwipe! Xotherbuf
+ bwipe! Xviewbuf
+ set startofline&
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab