aboutsummaryrefslogtreecommitdiff
path: root/vim/bundle/vim-addon-mw-utils/autoload/buf_utils.vim
blob: d14d404bc0109cf82c5b7e93d355a95698c25d13 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
" buf_identifier is either a buf_nr or a filename
" If any window shows the buffer move to the buffer
" If not show it in current window (by c-w s c^ you can always
" reshow the last buffer
"
" Example: buf_utils#GotoBuf("/tmp/tfile.txt", {'create': 1})
" returns: The command which was used to switch to the buffer
fun! buf_utils#GotoBuf(buf_identifier, opts)
  let buf_nr = bufnr(a:buf_identifier)
  if buf_nr == -1 && ( get(a:opts, 'create', 0) || has_key(a:opts, 'create_cmd'))
    exec get(a:opts,'create_cmd','e').' '.fnameescape(a:buf_identifier)
    return "e"
  else
    let win_nr = bufwinnr(buf_nr)
    if win_nr == -1
      exec 'b '.buf_nr
      return "b"
    else
      exec win_nr.'wincmd w'
      return "w"
    endif
    wincmd w"
  endif
endf