]> Sergey Matveev's repositories - dotfiles.git/blobdiff - vim/.vim/plugin/file_line.vim
DRY
[dotfiles.git] / vim / .vim / plugin / file_line.vim
index e5a6a927eae606c528b73434f8364f9dd22bbc6f..45e250ea59db2839658a25f59c126eb3dd5dd1c3 100644 (file)
@@ -1,15 +1,22 @@
 " 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
+
 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()