Patch 8.1.0315
Problem: Helpgrep with language doesn't work properly. (Takuya Fujiwara)
Solution: Check for the language earlier. (Hirohito Higashi)
Files: src/quickfix.c, src/testdir/test_quickfix.vim
*** ../vim-8.1.0314/src/quickfix.c 2018-08-18 19:59:48.418322409 +0200
--- src/quickfix.c 2018-08-21 21:47:55.412902244 +0200
***************
*** 5385,5391 ****
if (qf_restore_list(qi, save_qfid) == FAIL)
goto theend;
! /* Jump to first match. */
if (!qf_list_empty(qi, qi->qf_curlist))
{
if ((flags & VGR_NOJUMP) == 0)
--- 5385,5391 ----
if (qf_restore_list(qi, save_qfid) == FAIL)
goto theend;
! // Jump to first match.
if (!qf_list_empty(qi, qi->qf_curlist))
{
if ((flags & VGR_NOJUMP) == 0)
***************
*** 6844,6859 ****
/*
* Search for a pattern in all the help files in the 'runtimepath'
* and add the matches to a quickfix list.
! * 'arg' is the language specifier. If supplied, then only matches in the
* specified language are found.
*/
static void
! hgr_search_in_rtp(qf_info_T *qi, regmatch_T *p_regmatch, char_u *arg)
{
char_u *p;
- #ifdef FEAT_MULTI_LANG
- char_u *lang;
- #endif
#ifdef FEAT_MBYTE
vimconv_T vc;
--- 6844,6856 ----
/*
* Search for a pattern in all the help files in the 'runtimepath'
* and add the matches to a quickfix list.
! * 'lang' is the language specifier. If supplied, then only matches in the
* specified language are found.
*/
static void
! hgr_search_in_rtp(qf_info_T *qi, regmatch_T *p_regmatch, char_u *lang)
{
char_u *p;
#ifdef FEAT_MBYTE
vimconv_T vc;
***************
*** 6865,6874 ****
convert_setup(&vc, (char_u *)"utf-8", p_enc);
#endif
- #ifdef FEAT_MULTI_LANG
- /* Check for a specified language */
- lang = check_help_lang(arg);
- #endif
/* Go through all the directories in 'runtimepath' */
p = p_rtp;
--- 6862,6867 ----
***************
*** 6903,6908 ****
--- 6896,6902 ----
qf_info_T *qi = &ql_info;
int new_qi = FALSE;
char_u *au_name = NULL;
+ char_u *lang = NULL;
switch (eap->cmdidx)
{
***************
*** 6919,6925 ****
#endif
}
! /* Make 'cpoptions' empty, the 'l' flag should not be used here. */
save_cpo = p_cpo;
p_cpo = empty_option;
--- 6913,6919 ----
#endif
}
! // Make 'cpoptions' empty, the 'l' flag should not be used here.
save_cpo = p_cpo;
p_cpo = empty_option;
***************
*** 6930,6943 ****
return;
}
regmatch.regprog = vim_regcomp(eap->arg, RE_MAGIC + RE_STRING);
regmatch.rm_ic = FALSE;
if (regmatch.regprog != NULL)
{
! /* create a new quickfix list */
qf_new_list(qi, qf_cmdtitle(*eap->cmdlinep));
! hgr_search_in_rtp(qi, ®match, eap->arg);
vim_regfree(regmatch.regprog);
--- 6924,6941 ----
return;
}
+ #ifdef FEAT_MULTI_LANG
+ // Check for a specified language
+ lang = check_help_lang(eap->arg);
+ #endif
regmatch.regprog = vim_regcomp(eap->arg, RE_MAGIC + RE_STRING);
regmatch.rm_ic = FALSE;
if (regmatch.regprog != NULL)
{
! // create a new quickfix list
qf_new_list(qi, qf_cmdtitle(*eap->cmdlinep));
! hgr_search_in_rtp(qi, ®match, lang);
vim_regfree(regmatch.regprog);
***************
*** 6950,6956 ****
if (p_cpo == empty_option)
p_cpo = save_cpo;
else
! /* Darn, some plugin changed the value. */
free_string_option(save_cpo);
qf_list_changed(qi, qi->qf_curlist);
--- 6948,6954 ----
if (p_cpo == empty_option)
p_cpo = save_cpo;
else
! // Darn, some plugin changed the value.
free_string_option(save_cpo);
qf_list_changed(qi, qi->qf_curlist);
***************
*** 6973,6980 ****
if (eap->cmdidx == CMD_lhelpgrep)
{
! /* If the help window is not opened or if it already points to the
! * correct location list, then free the new location list. */
if (!bt_help(curwin->w_buffer) || curwin->w_llist == qi)
{
if (new_qi)
--- 6971,6978 ----
if (eap->cmdidx == CMD_lhelpgrep)
{
! // If the help window is not opened or if it already points to the
! // correct location list, then free the new location list.
if (!bt_help(curwin->w_buffer) || curwin->w_llist == qi)
{
if (new_qi)
*** ../vim-8.1.0314/src/testdir/test_quickfix.vim 2018-08-15
22:29:46.977604162 +0200
--- src/testdir/test_quickfix.vim 2018-08-21 21:44:49.058013219 +0200
***************
*** 3091,3096 ****
--- 3091,3110 ----
call Xqftick_tests('l')
endfunc
+ " Test helpgrep with lang specifier
+ func Xtest_helpgrep_with_lang_specifier(cchar)
+ call s:setup_commands(a:cchar)
+ Xhelpgrep Vim@en
+ call assert_equal('help', &filetype)
+ call assert_notequal(0, g:Xgetlist({'nr' : '$'}).nr)
+ new | only
+ endfunc
+
+ func Test_helpgrep_with_lang_specifier()
+ call Xtest_helpgrep_with_lang_specifier('c')
+ call Xtest_helpgrep_with_lang_specifier('l')
+ endfunc
+
" The following test used to crash Vim.
" Open the location list window and close the regular window associated with
" the location list. When the garbage collection runs now, it incorrectly
*** ../vim-8.1.0314/src/version.c 2018-08-21 21:09:02.598739663 +0200
--- src/version.c 2018-08-21 21:50:24.460013769 +0200
***************
*** 796,797 ****
--- 796,799 ----
{ /* Add new patch number below this line */
+ /**/
+ 315,
/**/
--
BLACK KNIGHT: None shall pass.
ARTHUR: I have no quarrel with you, brave Sir knight, but I must cross
this bridge.
BLACK KNIGHT: Then you shall die.
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" 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_dev" 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/d/optout.