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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to