]> Sergey Matveev's repositories - dotfiles.git/blobdiff - vim/.vim/plugin/file_line.vim
Detect already loaded code with simpler <SID> check
[dotfiles.git] / vim / .vim / plugin / file_line.vim
index 65962d2f9fc8d2c0e77aec4f1bc0c5149020032b..8d7c429b57d975d46ac4fcb8d3eb2c4b58ec5943 100644 (file)
@@ -1,18 +1,21 @@
 " 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()