mirror of
https://github.com/vim/vim.git
synced 2025-09-29 04:34:16 -04:00
patch 8.2.3584: "verbose set efm" reports location of the :compiler command
Problem: "verbose set efm" reports the location of the :compiler command. (Gary Johnson) Solution: Add the "-keepscript" argument to :command and use it when defining CompilerSet.
This commit is contained in:
@@ -1569,6 +1569,9 @@ There are some special cases as well:
|
|||||||
-register The first argument to the command can be an optional
|
-register The first argument to the command can be an optional
|
||||||
register name (like :del, :put, :yank).
|
register name (like :del, :put, :yank).
|
||||||
-buffer The command will only be available in the current buffer.
|
-buffer The command will only be available in the current buffer.
|
||||||
|
-keepscript Do not use the location of where the user command was
|
||||||
|
defined for verbose messages, use the location of where
|
||||||
|
the user command was invoked.
|
||||||
|
|
||||||
In the cases of the -count and -register attributes, if the optional argument
|
In the cases of the -count and -register attributes, if the optional argument
|
||||||
is supplied, it is removed from the argument list and is available to the
|
is supplied, it is removed from the argument list and is available to the
|
||||||
|
@@ -56,6 +56,7 @@
|
|||||||
// set; when missing disallows editing another
|
// set; when missing disallows editing another
|
||||||
// buffer when curbuf_lock is set
|
// buffer when curbuf_lock is set
|
||||||
#define EX_NONWHITE_OK 0x2000000 // command can be followed by non-white
|
#define EX_NONWHITE_OK 0x2000000 // command can be followed by non-white
|
||||||
|
#define EX_KEEPSCRIPT 0x4000000 // keep sctx of where command was invoked
|
||||||
|
|
||||||
#define EX_FILES (EX_XFILE | EX_EXTRA) // multiple extra files allowed
|
#define EX_FILES (EX_XFILE | EX_EXTRA) // multiple extra files allowed
|
||||||
#define EX_FILE1 (EX_FILES | EX_NOSPC) // 1 file, defaults to current file
|
#define EX_FILE1 (EX_FILES | EX_NOSPC) // 1 file, defaults to current file
|
||||||
|
@@ -754,7 +754,7 @@ ex_compiler(exarg_T *eap)
|
|||||||
if (old_cur_comp != NULL)
|
if (old_cur_comp != NULL)
|
||||||
old_cur_comp = vim_strsave(old_cur_comp);
|
old_cur_comp = vim_strsave(old_cur_comp);
|
||||||
do_cmdline_cmd((char_u *)
|
do_cmdline_cmd((char_u *)
|
||||||
"command -nargs=* CompilerSet setlocal <args>");
|
"command -nargs=* -keepscript CompilerSet setlocal <args>");
|
||||||
}
|
}
|
||||||
do_unlet((char_u *)"g:current_compiler", TRUE);
|
do_unlet((char_u *)"g:current_compiler", TRUE);
|
||||||
do_unlet((char_u *)"b:current_compiler", TRUE);
|
do_unlet((char_u *)"b:current_compiler", TRUE);
|
||||||
|
@@ -21,6 +21,9 @@ func Test_compiler()
|
|||||||
call assert_equal('perl', b:current_compiler)
|
call assert_equal('perl', b:current_compiler)
|
||||||
call assert_fails('let g:current_compiler', 'E121:')
|
call assert_fails('let g:current_compiler', 'E121:')
|
||||||
|
|
||||||
|
let verbose_efm = execute('verbose set efm')
|
||||||
|
call assert_match('Last set from .*/compiler/perl.vim ', verbose_efm)
|
||||||
|
|
||||||
call setline(1, ['#!/usr/bin/perl -w', 'use strict;', 'my $foo=1'])
|
call setline(1, ['#!/usr/bin/perl -w', 'use strict;', 'my $foo=1'])
|
||||||
w!
|
w!
|
||||||
call feedkeys(":make\<CR>\<CR>", 'tx')
|
call feedkeys(":make\<CR>\<CR>", 'tx')
|
||||||
|
@@ -360,7 +360,7 @@ get_user_cmd_flags(expand_T *xp UNUSED, int idx)
|
|||||||
{
|
{
|
||||||
static char *user_cmd_flags[] = {
|
static char *user_cmd_flags[] = {
|
||||||
"addr", "bang", "bar", "buffer", "complete",
|
"addr", "bang", "bar", "buffer", "complete",
|
||||||
"count", "nargs", "range", "register"
|
"count", "nargs", "range", "register", "keepscript"
|
||||||
};
|
};
|
||||||
|
|
||||||
if (idx >= (int)ARRAY_LENGTH(user_cmd_flags))
|
if (idx >= (int)ARRAY_LENGTH(user_cmd_flags))
|
||||||
@@ -735,6 +735,8 @@ uc_scan_attr(
|
|||||||
*flags |= UC_BUFFER;
|
*flags |= UC_BUFFER;
|
||||||
else if (STRNICMP(attr, "register", len) == 0)
|
else if (STRNICMP(attr, "register", len) == 0)
|
||||||
*argt |= EX_REGSTR;
|
*argt |= EX_REGSTR;
|
||||||
|
else if (STRNICMP(attr, "keepscript", len) == 0)
|
||||||
|
*argt |= EX_KEEPSCRIPT;
|
||||||
else if (STRNICMP(attr, "bar", len) == 0)
|
else if (STRNICMP(attr, "bar", len) == 0)
|
||||||
*argt |= EX_TRLBAR;
|
*argt |= EX_TRLBAR;
|
||||||
else
|
else
|
||||||
@@ -1764,12 +1766,16 @@ do_ucmd(exarg_T *eap)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((cmd->uc_argt & EX_KEEPSCRIPT) == 0)
|
||||||
|
{
|
||||||
current_sctx.sc_version = cmd->uc_script_ctx.sc_version;
|
current_sctx.sc_version = cmd->uc_script_ctx.sc_version;
|
||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
current_sctx.sc_sid = cmd->uc_script_ctx.sc_sid;
|
current_sctx.sc_sid = cmd->uc_script_ctx.sc_sid;
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
(void)do_cmdline(buf, eap->getline, eap->cookie,
|
(void)do_cmdline(buf, eap->getline, eap->cookie,
|
||||||
DOCMD_VERBOSE|DOCMD_NOWAIT|DOCMD_KEYTYPED);
|
DOCMD_VERBOSE|DOCMD_NOWAIT|DOCMD_KEYTYPED);
|
||||||
|
if ((cmd->uc_argt & EX_KEEPSCRIPT) == 0)
|
||||||
current_sctx = save_current_sctx;
|
current_sctx = save_current_sctx;
|
||||||
vim_free(buf);
|
vim_free(buf);
|
||||||
vim_free(split_buf);
|
vim_free(split_buf);
|
||||||
|
@@ -757,6 +757,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
3584,
|
||||||
/**/
|
/**/
|
||||||
3583,
|
3583,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user