" Simplified version of http://www.vim.org/scripts/script.php?script_id=2184
" that does not replace current window
-if exists("g:loaded_mein_file_line") | finish | endif
-let g:loaded_mein_file_line = 1
+if exists('*<SID>gotoline') | finish | endif
function! s:gotoline()
- let names = matchlist(bufname("%"), '\(.\{-1,}\):\%(\(\d\+\)\%(:\(\d*\):\?\)\?\)\?$')
+ let file = bufname("%")
+ if filereadable(file) | return | endif
+ let names = matchlist(file, '\(.\{-1,}\):\%(\(\d\+\)\%(:\(\d*\):\?\)\?\)\?$')
if empty(names) | return | endif
let file_name = names[1]
let line_num = names[2] == "" ? "0" : names[2]
let col_num = names[3] == "" ? "0" : names[3]
if !filereadable(file_name) | return | endif
+ let nr = bufnr("%")
exec "keepalt edit +" . line_num . " " . file_name
exec "normal! " . col_num . "|"
+ exec "bdelete " . nr
endfunction
autocmd! BufNewFile *:* nested call s:gotoline()