Hi,
  Below is my first attempt at writing an autocmd (and for that
matter a vim script) and I'd appreciate any feedback (e.g.
'no you fool, don't do it like that, do it like this....', or
I wouldn't be surprised to be told someone has already done it).

This lets you do:

   vi file:20

and it will load 'file' and jump to line 20, or 

   vi file:20:30

and it will load 'file' and jump to line 20, column 30
It will also accept a : at the end, e.g.

   vi file:20:30:

Really, it's for where you have the output of a compiler or the like
(sparse in my case) but for one reason or another want to open it in
a separate vim.

Dave

{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}

function s:FileandLinenumber(rawname)
  " Allow a : at the end, as from sparse
  if a:rawname =~ ':$'
    let tmpname=substitute(a:rawname, ':$', "", "")
  else
    let tmpname=a:rawname
  endif  

  " Note the match in the autocmd is glob so can have junk after the number
  if tmpname =~ '.*:[0-9][0-9]*$'
    let filename=substitute(tmpname, ':[0-9][0-9]*$', "", "")
    let lastnum=substitute(tmpname, '.*:', "", "")

    " We allow name:line:col, so filename might actually still be name:line
    " at this point
    if filename =~ '.*:[0-9][0-9]*$'
      " OK so this is name:line:col
      let colnum=lastnum
      let linenum=substitute(filename, '.*:', "", "")
      let filename=substitute(filename, ':[0-9][0-9]*$', "", "")
    else
      let colnum=-1
      let linenum=lastnum
    endif
    exe "e ".fnameescape(filename)
    exe linenum
    if (colnum != -1)
      exe "normal  " . colnum . "|"
    endif
  endif
endfunction

augroup davesfileandnumber
autocmd davesfileandnumber BufNewFile *:* nested call s:FileandLinenumber( 
expand("<afile>") )

{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}{<>}

-- 
 -----Open up your eyes, open up your mind, open up your code -------   
/ Dr. David Alan Gilbert    |       Running GNU/Linux       | Happy  \ 
\ gro.gilbert @ treblig.org |                               | In Hex /
 \ _________________________|_____ http://www.treblig.org   |_______/

-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Reply via email to