--- diff.sh.000 +++ diff.sh @@ -0,0 +1,22 @@ +FILES=" +diff.sh +../runtime/doc/eval.txt eval.c vim.h search.c +"; +F=~/bat/vim-patdir-patch + +echo "*** writing to $F" +exec >$F + +for f in $FILES; do + test -f $f || { echo 1>&2 "Error, no file $f"; exit 1; } + test -f $f.000 || { echo 1>&2 "Error, no file $f.000"; exit 1; } +done + +for f in $FILES; do +done + +exec >/dev/tty +diffstat <$F +cp $F `basename $F` +cp $F /tmp/. +cp $F /t/. --- ../runtime/doc/eval.txt.000 +++ ../runtime/doc/eval.txt @@ -1400,6 +1400,9 @@ v:profiling Normally zero. Set to one after using ":profile start". See |profiling|. + *v:patdir* *patdir-variable* +v:patdir Search direction. 1-forward, 0-backward. See |n|, |@/|. + *v:progname* *progname-variable* v:progname Contains the name (with path removed) with which Vim was invoked. Allows you to do special initialisations for "view", --- eval.c.000 +++ eval.c @@ -345,6 +345,7 @@ {VV_NAME("mouse_win", VAR_NUMBER), 0}, {VV_NAME("mouse_lnum", VAR_NUMBER), 0}, {VV_NAME("mouse_col", VAR_NUMBER), 0}, + {VV_NAME("patdir", VAR_NUMBER), VV_RO}, /* VV_PATDIR */ }; /* shorthand */ @@ -778,6 +779,7 @@ /* add to compat scope dict */ hash_add(&compat_hashtab, p->vv_di.di_key); } + set_vim_var_nr( VV_PATDIR, 1); } #if defined(EXITFREE) || defined(PROTO) --- vim.h.000 +++ vim.h @@ -1672,7 +1672,8 @@ #define VV_MOUSE_WIN 49 #define VV_MOUSE_LNUM 50 #define VV_MOUSE_COL 51 -#define VV_LEN 52 /* number of v: vars */ +#define VV_PATDIR 52 +#define VV_LEN 53 /* number of v: vars */ #ifdef FEAT_CLIPBOARD --- search.c.000 +++ search.c @@ -326,6 +326,9 @@ { vim_free(spats[0].pat); spats[0] = saved_spats[0]; +#if defined(FEAT_EVAL) + set_vim_var_nr( VV_PATDIR, (spats[0].off.dir == '/' )); +#endif vim_free(spats[1].pat); spats[1] = saved_spats[1]; last_idx = saved_last_idx; @@ -409,6 +412,9 @@ reset_search_dir() { spats[0].off.dir = '/'; +#if defined(FEAT_EVAL) + set_vim_var_nr( VV_PATDIR, 1 ); +#endif } #if defined(FEAT_EVAL) || defined(FEAT_VIMINFO) @@ -432,6 +438,9 @@ spats[idx].magic = magic; spats[idx].no_scs = FALSE; spats[idx].off.dir = '/'; +#if defined(FEAT_EVAL) + set_vim_var_nr( VV_PATDIR, (spats[0].off.dir == '/')); +#endif spats[idx].off.line = FALSE; spats[idx].off.end = FALSE; spats[idx].off.off = 0; @@ -1003,7 +1012,12 @@ if (dirc == 0) dirc = spats[0].off.dir; else + { spats[0].off.dir = dirc; +#if defined(FEAT_EVAL) + set_vim_var_nr( VV_PATDIR, (spats[0].off.dir == '/')); +#endif + } if (options & SEARCH_REV) { #ifdef WIN32