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

Re: expand('%:p') doesn't work properly when opening a new file in a non-existing directory?

Expand Messages
  • Tony Mechelynck
    On 30/03/13 07:35, Hong Xu wrote: [...] ... I think that you cannot get the full path if there is no disk path. Maybe you ought to get rather than a/a.b .
    Message 1 of 4 , Mar 30, 2013
    • 0 Attachment
      On 30/03/13 07:35, Hong Xu wrote:
      [...]
      > Hi Tony,
      >
      > Thanks for your reply.
      >
      > I have noticed that I can not write to disk if I create a new file in a
      > non-existing directory; what I am concerning is the unexpected behavior
      > of `expand('%:p')`. I am currently encountering an issue in my plugin: I
      > call `expand('%:p')` to obtain the full path, but in the given case
      > above, I would get a truncated path. So I think this behavior should not
      > be expected. Do you think so?
      >
      > Thanks,
      > Hong
      >

      I think that you cannot get the full path if there is no disk path.
      Maybe you ought to get '' rather than 'a/a.b'. Or maybe it is intended
      (perhaps vi-compatible) behaviour, and you can test the value (on Unix:
      either empty, or doesn't start with a slash; on Windows: either empty,
      or the second character is not a colon) to determine that you didn't get
      a real path. (Empty is for a [No Name] buffer.)

      " untested
      let filepath = expand('%:p')
      if ((has('unix') && (filepath =~ '/.*')) || (!has('unix') && (filepath
      =~ '.:.*'))
      " we have a real path
      else
      " we don't
      endif

      Now that I think of it, a better test might be filereadable() or
      filewritable(). Or :w in a try-catch block.

      See
      :help filereadable()
      :help filewritable()
      :help :try

      Best regards,
      Tony.
      --
      INSPECTOR END OF FILM: Move along. There's nothing to see! Keep moving!
      [Suddenly he notices the cameras.]
      INSPECTOR END OF FILM: (to Camera) All right, put that away sonny.
      [He walks over to it and puts his hand over the lens.]
      "Monty Python and the Holy Grail" PYTHON (MONTY)
      PICTURES LTD

      --
      --
      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

      ---
      You received this message because you are subscribed to the Google Groups "vim_use" group.
      To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
      For more options, visit https://groups.google.com/groups/opt_out.
    Your message has been successfully submitted and would be delivered to recipients shortly.