To: vim_dev@googlegroups.com Subject: Patch 8.2.3617 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.3617 Problem: ":verbose pwd" does not mention 'autochdir' was applied. Solution: Remember the last chdir was done by 'autochdir'. (issue #9142) Files: src/globals.h, src/buffer.c, src/ex_docmd.c, src/window.c, src/main.c, src/netbeans.c, src/os_win32.c, src/testdir/test_autochdir.vim *** ../vim-8.2.3616/src/globals.h 2021-10-24 20:34:01.434895238 +0100 --- src/globals.h 2021-11-18 18:11:23.827182827 +0000 *************** *** 832,837 **** --- 832,838 ---- #if defined(FEAT_AUTOCHDIR) EXTERN int test_autochdir INIT(= FALSE); #endif + EXTERN char *last_chdir_reason INIT(= NULL); #if defined(EXITFREE) EXTERN int entered_free_all_mem INIT(= FALSE); // TRUE when in or after free_all_mem() *** ../vim-8.2.3616/src/buffer.c 2021-10-20 21:58:37.235792695 +0100 --- src/buffer.c 2021-11-18 18:10:29.607111980 +0000 *************** *** 1899,1905 **** --- 1899,1908 ---- if ((starting == 0 || test_autochdir) && curbuf->b_ffname != NULL && vim_chdirfile(curbuf->b_ffname, "auto") == OK) + { shorten_fnames(TRUE); + last_chdir_reason = "autochdir"; + } } #endif *** ../vim-8.2.3616/src/ex_docmd.c 2021-11-04 15:10:07.357074257 +0000 --- src/ex_docmd.c 2021-11-18 18:17:30.235343178 +0000 *************** *** 7390,7395 **** --- 7390,7396 ---- if (dir_differs) { + last_chdir_reason = NULL; if (scope == CDSCOPE_WINDOW) acmd_fname = (char_u *)"window"; else if (scope == CDSCOPE_TABPAGE) *************** *** 7453,7459 **** { char *context = "global"; ! if (curwin->w_localdir != NULL) context = "window"; else if (curtab->tp_localdir != NULL) context = "tabpage"; --- 7454,7462 ---- { char *context = "global"; ! if (last_chdir_reason != NULL) ! context = last_chdir_reason; ! else if (curwin->w_localdir != NULL) context = "window"; else if (curtab->tp_localdir != NULL) context = "tabpage"; *** ../vim-8.2.3616/src/window.c 2021-11-14 11:41:27.264457621 +0000 --- src/window.c 2021-11-18 18:15:57.587344776 +0000 *************** *** 4873,4879 **** --- 4873,4882 ---- dirname = curtab->tp_localdir; if (mch_chdir((char *)dirname) == 0) + { + last_chdir_reason = NULL; shorten_fnames(TRUE); + } } else if (globaldir != NULL) { *************** *** 4881,4886 **** --- 4884,4890 ---- // directory: Change to the global directory. vim_ignored = mch_chdir((char *)globaldir); VIM_CLEAR(globaldir); + last_chdir_reason = NULL; shorten_fnames(TRUE); } } *** ../vim-8.2.3616/src/main.c 2021-07-20 20:07:32.964058857 +0100 --- src/main.c 2021-11-18 18:19:04.527320097 +0000 *************** *** 275,281 **** * Hint: to avoid this when typing a command use a forward slash. * If the cd fails, it doesn't matter. */ ! (void)vim_chdirfile(params.fname, "drop"); if (start_dir != NULL) mch_dirname(start_dir, MAXPATHL); } --- 275,282 ---- * Hint: to avoid this when typing a command use a forward slash. * If the cd fails, it doesn't matter. */ ! if (vim_chdirfile(params.fname, "drop") == OK) ! last_chdir_reason = "drop"; if (start_dir != NULL) mch_dirname(start_dir, MAXPATHL); } *** ../vim-8.2.3616/src/netbeans.c 2021-10-14 21:27:50.646253845 +0100 --- src/netbeans.c 2021-11-18 18:19:51.327301729 +0000 *************** *** 2656,2662 **** --- 2656,2665 ---- nb_send(buffer, "netbeans_file_opened"); if (p_acd && vim_chdirfile(bufp->b_ffname, "auto") == OK) + { + last_chdir_reason = "netbeans"; shorten_fnames(TRUE); + } } /* *** ../vim-8.2.3616/src/os_win32.c 2021-11-01 22:44:29.517902113 +0000 --- src/os_win32.c 2021-11-18 18:20:37.835279449 +0000 *************** *** 7783,7790 **** if (curwin->w_arg_idx == 0 && curbuf->b_fname == NULL) { do_cmdline_cmd((char_u *)":rewind"); ! if (GARGCOUNT == 1 && used_file_full_path) ! (void)vim_chdirfile(alist_name(&GARGLIST[0]), "drop"); } set_alist_count(); --- 7783,7791 ---- if (curwin->w_arg_idx == 0 && curbuf->b_fname == NULL) { do_cmdline_cmd((char_u *)":rewind"); ! if (GARGCOUNT == 1 && used_file_full_path ! && vim_chdirfile(alist_name(&GARGLIST[0]), "drop") == OK) ! last_chdir_reason = "drop"; } set_alist_count(); *** ../vim-8.2.3616/src/testdir/test_autochdir.vim 2020-08-12 17:50:31.871655841 +0100 --- src/testdir/test_autochdir.vim 2021-11-18 18:31:02.354727297 +0000 *************** *** 25,28 **** --- 25,57 ---- call delete('samples/Xtest') endfunc + func Test_verbose_pwd() + let cwd = getcwd() + call test_autochdir() + + edit global.txt + call assert_match('\[global\].*testdir$', execute('verbose pwd')) + + call mkdir('Xautodir') + split Xautodir/local.txt + lcd Xautodir + call assert_match('\[window\].*testdir[/\\]Xautodir', execute('verbose pwd')) + + set acd + wincmd w + call assert_match('\[autochdir\].*testdir$', execute('verbose pwd')) + wincmd w + call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd')) + set noacd + call assert_match('\[autochdir\].*testdir[/\\]Xautodir', execute('verbose pwd')) + wincmd w + call assert_match('\[global\].*testdir', execute('verbose pwd')) + wincmd w + call assert_match('\[window\].*testdir[/\\]Xautodir', execute('verbose pwd')) + + bwipe! + call chdir(cwd) + call delete('Xautodir', 'rf') + endfunc + " vim: shiftwidth=2 sts=2 expandtab *** ../vim-8.2.3616/src/version.c 2021-11-18 15:37:24.286249010 +0000 --- src/version.c 2021-11-18 18:50:01.288850321 +0000 *************** *** 759,760 **** --- 759,762 ---- { /* Add new patch number below this line */ + /**/ + 3617, /**/ -- There can't be a crisis today, my schedule is already full. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///