Loading ...
Sorry, an error occurred while loading the content.

75945Re: question on gf and path

Expand Messages
  • Marc Weber
    Dec 1, 2006
      On Fri, Dec 01, 2006 at 10:30:26AM -0600, Ben K. wrote:
      > Is there a way to make gf open "some.file" from this line?
      > Include("/includes/some.file");
      > where the file is actually sitting under web server root, like
      > /var/www/html/includes/some.file
      > I tried adding "/var/www/html" to the :set path but vim will not recognize
      > it. /var/www/html/; was the same. Basically I'm looking for a way to add
      > "prefixes".
      > On the same note, would it be possible to let gf open
      > /var/www/html/includes/some.file
      > when I gf on this string
      > http://somehost.com/includes/some.file
      > or by defining a new command (say wf)?

      That's exactly where you can use my little script (which will isntall
      some dependencies, too)

      Just add this into your ftplgugin/filetype.vim file:

      ------ >8 ------ >8 filetype_sourced.vim -- >8 ------ >8 ------ >8
      noremap gf :call vl#ui#navigation#gfHandler#HandleGF()<cr>
      call vl#ui#navigation#gfHandler#AddGFHandler("[matchstr(expand('<cWORD>'),'Include(\"\\zs[^\"].*\\ze\")')]")
      ------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------ 8<

      and source the installer file
      (Don't be afraid. The installer will ask for confirmation before doing
      I would suggest saving it to another directory (eg ~/.vimlib or
      ~/.vim_gf) and adding this folder to your runtimepath.
      set runtimepath+=~/.vimlib
      Then its easy to remove it again if you don't like it.
      I think you can see that [matchstr ... does the interesting thing which
      is getting the file from under the cursor by calling expand('<cWORD>')
      and remvoving the Include text. You
      have to adjust it the way you like. You have to write your own code
      which removes /includes and adds /var/www/html/includes/ which would
      look like this:
      call vl#ui#navigation#gfHandler#AddGFHandler("['/var/www/html/includes'.matchstr(expand('<cWORD>'),'Include(\"/includes\\zs[^\"].*\\ze\")')]")

      You can even add different include directories:
      call vl#ui#navigation#gfHandler#AddGFHandler("['/var/www/html/includes1'....
      call vl#ui#navigation#gfHandler#AddGFHandler("['/var/www/html/includes2'....
      call vl#ui#navigation#gfHandler#AddGFHandler("['/var/www/html/includes3'....

      Then you'll be asked which file to open if it doesn't exist.

      Unfortunately the documentation
      isn't up to date because vim segfaults while creating it and I don't
      have the time to find the code causing it.

      If something doesn't work drop me a mail.

      Marc Weber
    • Show all 7 messages in this topic