| To: vim_dev@googlegroups.com |
| Subject: Patch 7.3.054 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| Mime-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| |
| Patch 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. |
| Files: src/ex_docmd.c |
| |
| |
| |
| |
| |
| *** 2871,2878 **** |
| } |
| |
| #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') |
| { |
| /* User defined commands may contain digits. */ |
| while (ASCII_ISALNUM(*p)) |
| --- 2871,2880 ---- |
| } |
| |
| #ifdef FEAT_USR_CMDS |
| ! /* 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,5593 **** |
| --- 5590,5596 ---- |
| int compl = EXPAND_NOTHING; |
| char_u *compl_arg = NULL; |
| int has_attr = (eap->arg[0] == '-'); |
| + int name_len; |
| |
| p = eap->arg; |
| |
| |
| *** 5613,5618 **** |
| --- 5616,5622 ---- |
| 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,5632 **** |
| --- 5631,5643 ---- |
| 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,9400 **** |
| ex_ptag(eap) |
| exarg_T *eap; |
| { |
| ! g_do_tagpreview = p_pvh; |
| ex_tag_cmd(eap, cmdnames[eap->cmdidx].cmd_name + 1); |
| } |
| |
| --- 9405,9411 ---- |
| ex_ptag(eap) |
| exarg_T *eap; |
| { |
| ! g_do_tagpreview = p_pvh; /* will be reset to 0 in ex_tag_cmd() */ |
| ex_tag_cmd(eap, cmdnames[eap->cmdidx].cmd_name + 1); |
| } |
| |
| |
| |
| |
| *** 716,717 **** |
| --- 716,719 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 54, |
| /**/ |
| |
| -- |
| You can be stopped by the police for biking over 65 miles per hour. |
| You are not allowed to walk across a street on your hands. |
| [real standing laws in Connecticut, United States of America] |
| |
| /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ |
| /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
| \\\ download, build and distribute -- http://www.A-A-P.org /// |
| \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |