# HG changeset patch # User Bram Moolenaar # Date 1289412001 -3600 # Node ID 7002404b17b15ea37887cb1dd5b5b95883cdd27f # Parent c00efaa0af249c086557487d172edd6a1cfc0706 updated for version 7.3.054 Problem: Can define a user command for :Print, but it doesn't work. (Aaron Thoma) Solution: Let user command :Print overrule the builtin command (Christian Brabandt) Disallow :X and :Next as a user defined command. diff --git a/src/ex_docmd.c b/src/ex_docmd.c --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -2871,8 +2871,10 @@ find_command(eap, full) } #ifdef FEAT_USR_CMDS - /* Look for a user defined command as a last resort */ - if (eap->cmdidx == CMD_SIZE && *eap->cmd >= 'A' && *eap->cmd <= 'Z') + /* Look for a user defined command as a last resort. Let ":Print" be + * overruled by a user defined command. */ + if ((eap->cmdidx == CMD_SIZE || eap->cmdidx == CMD_Print) + && *eap->cmd >= 'A' && *eap->cmd <= 'Z') { /* User defined commands may contain digits. */ while (ASCII_ISALNUM(*p)) @@ -5588,6 +5590,7 @@ ex_command(eap) int compl = EXPAND_NOTHING; char_u *compl_arg = NULL; int has_attr = (eap->arg[0] == '-'); + int name_len; p = eap->arg; @@ -5613,6 +5616,7 @@ ex_command(eap) return; } end = p; + name_len = (int)(end - name); /* If there is nothing after the name, and no attributes were specified, * we are listing commands @@ -5627,6 +5631,13 @@ ex_command(eap) EMSG(_("E183: User defined commands must start with an uppercase letter")); return; } + else if ((name_len == 1 && *name == 'X') + || (name_len <= 4 + && STRNCMP(name, "Next", name_len > 4 ? 4 : name_len) == 0)) + { + EMSG(_("E841: Reserved name, cannot be used for user defined command")); + return; + } else uc_add_command(name, end - name, p, argt, def, flags, compl, compl_arg, eap->forceit); @@ -9394,7 +9405,7 @@ ex_findpat(eap) ex_ptag(eap) exarg_T *eap; { - g_do_tagpreview = p_pvh; + g_do_tagpreview = p_pvh; /* will be reset to 0 in ex_tag_cmd() */ ex_tag_cmd(eap, cmdnames[eap->cmdidx].cmd_name + 1); } diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -715,6 +715,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 54, +/**/ 53, /**/ 52,