Mercurial > vim
changeset 2128:a16af0072ea8 v7.2.410
updated for version 7.2.410
Problem: Highlighting directories for completion doesn't work properly.
Solution: Don't halve backslashes when not needed, expaned "~/".
(Dominique Pelle)
author | Bram Moolenaar <bram@zimbu.org> |
---|---|
date | Tue, 23 Mar 2010 18:06:52 +0100 |
parents | 4e22214f8464 |
children | 24100651daa9 |
files | src/ex_getln.c src/version.c |
diffstat | 2 files changed, 21 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -3948,12 +3948,26 @@ showmatches(xp, wildmenu) || xp->xp_context == EXPAND_SHELLCMD || xp->xp_context == EXPAND_BUFFERS) { - char_u *halved_slash; - /* highlight directories */ - halved_slash = backslash_halve_save(files_found[k]); - j = mch_isdir(halved_slash); - vim_free(halved_slash); + if (xp->xp_numfiles != -1) + { + char_u *halved_slash; + char_u *exp_path; + + /* Expansion was done before and special characters + * were escaped, need to halve backslashes. Also + * $HOME has been replaced with ~/. */ + exp_path = expand_env_save_opt(files_found[k], TRUE); + halved_slash = backslash_halve_save( + exp_path != NULL ? exp_path : files_found[k]); + j = mch_isdir(halved_slash != NULL ? halved_slash + : files_found[k]); + vim_free(exp_path); + vim_free(halved_slash); + } + else + /* Expansion was done here, file names are literal. */ + j = mch_isdir(files_found[k]); if (showtail) p = L_SHOWFILE(k); else