0
0
mirror of https://github.com/vim/vim.git synced 2025-08-31 20:53:42 -04:00

patch 8.2.0876: :pwd does not give a hint about the scope of the directory

Problem:    :pwd does not give a hint about the scope of the directory
Solution:   Make ":verbose pwd" show the scope. (Takuya Fujiwara, closes #5469)
This commit is contained in:
Bram Moolenaar 2020-06-01 16:26:19 +02:00
parent 6c9ba04280
commit 950587242c
4 changed files with 36 additions and 4 deletions

View File

@ -1338,6 +1338,21 @@ present in 'cpoptions' and "!" is not used in the command.
*:pw* *:pwd* *E187*
:pw[d] Print the current directory name.
Also see |getcwd()|.
*:pwd-verbose*
When 'verbose' is non-zero, |:pwd| will also display
what scope the current directory was set. Example: >
" Set by :cd
:verbose pwd
[global] /path/to/current
" Set by :lcd
:verbose pwd
[window] /path/to/current
" Set by :tcd
:verbose pwd
[tabpage] /path/to/current
So long as no |:lcd| or |:tcd| command has been used, all windows share the
same current directory. Using a command to jump to another window doesn't

View File

@ -6619,9 +6619,10 @@ post_chdir(cdscope_T scope)
/*
* Change directory function used by :cd/:tcd/:lcd Ex commands and the
* chdir() function. If 'winlocaldir' is TRUE, then changes the window-local
* directory. If 'tablocaldir' is TRUE, then changes the tab-local directory.
* Otherwise changes the global directory.
* chdir() function.
* scope == CDSCOPE_WINDOW: changes the window-local directory
* scope == CDSCOPE_TABPAGE: changes the tab-local directory
* Otherwise: changes the global directory
* Returns TRUE if the directory is successfully changed.
*/
int
@ -6751,7 +6752,18 @@ ex_pwd(exarg_T *eap UNUSED)
#ifdef BACKSLASH_IN_FILENAME
slash_adjust(NameBuff);
#endif
msg((char *)NameBuff);
if (p_verbose > 0)
{
char *context = "global";
if (curwin->w_localdir != NULL)
context = "window";
else if (curtab->tp_localdir != NULL)
context = "tabpage";
smsg("[%s] %s", context, (char *)NameBuff);
}
else
msg((char *)NameBuff);
}
else
emsg(_("E187: Unknown"));

View File

@ -97,16 +97,19 @@ func Test_chdir_func()
lcd z
tabfirst
call assert_match('^\[global\] .*/Xdir$', trim(execute('verbose pwd')))
call chdir('..')
call assert_equal('y', fnamemodify(getcwd(1, 2), ':t'))
call assert_equal('z', fnamemodify(3->getcwd(2), ':t'))
tabnext | wincmd t
call assert_match('^\[tabpage\] .*/y$', trim(execute('verbose pwd')))
eval '..'->chdir()
call assert_equal('Xdir', fnamemodify(getcwd(1, 2), ':t'))
call assert_equal('Xdir', fnamemodify(getcwd(2, 2), ':t'))
call assert_equal('z', fnamemodify(getcwd(3, 2), ':t'))
call assert_equal('testdir', fnamemodify(getcwd(1, 1), ':t'))
3wincmd w
call assert_match('^\[window\] .*/z$', trim(execute('verbose pwd')))
call chdir('..')
call assert_equal('Xdir', fnamemodify(getcwd(1, 2), ':t'))
call assert_equal('Xdir', fnamemodify(getcwd(2, 2), ':t'))

View File

@ -746,6 +746,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
876,
/**/
875,
/**/