| To: vim-dev@vim.org |
| Subject: Patch 7.0.160 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| Mime-Version: 1.0 |
| Content-Type: text/plain; charset=ISO-8859-1 |
| Content-Transfer-Encoding: 8bit |
| |
| |
| Patch 7.0.160 |
| Problem: ":@a" echoes the command, Vi doesn't do that. |
| Solution: Set the silent flag in the typeahead buffer to avoid echoing the |
| command. |
| Files: src/ex_docmd.c, src/normal.c, src/ops.c, src/proto/ops.pro |
| |
| |
| |
| |
| |
| *** 8219,8226 **** |
| c = *eap->arg; |
| if (c == NUL || (c == '*' && *eap->cmd == '*')) |
| c = '@'; |
| ! /* put the register in mapbuf */ |
| ! if (do_execreg(c, TRUE, vim_strchr(p_cpo, CPO_EXECBUF) != NULL) == FAIL) |
| { |
| beep_flush(); |
| } |
| --- 8219,8227 ---- |
| c = *eap->arg; |
| if (c == NUL || (c == '*' && *eap->cmd == '*')) |
| c = '@'; |
| ! /* Put the register in the typeahead buffer with the "silent" flag. */ |
| ! if (do_execreg(c, TRUE, vim_strchr(p_cpo, CPO_EXECBUF) != NULL, TRUE) |
| ! == FAIL) |
| { |
| beep_flush(); |
| } |
| |
| |
| |
| *** 8860,8866 **** |
| #endif |
| while (cap->count1-- && !got_int) |
| { |
| ! if (do_execreg(cap->nchar, FALSE, FALSE) == FAIL) |
| { |
| clearopbeep(cap->oap); |
| break; |
| --- 8860,8866 ---- |
| #endif |
| while (cap->count1-- && !got_int) |
| { |
| ! if (do_execreg(cap->nchar, FALSE, FALSE, FALSE) == FAIL) |
| { |
| clearopbeep(cap->oap); |
| break; |
| |
| |
| |
| *** 95,102 **** |
| static void block_insert __ARGS((oparg_T *oap, char_u *s, int b_insert, struct block_def*bdp)); |
| #endif |
| static int stuff_yank __ARGS((int, char_u *)); |
| ! static void put_reedit_in_typebuf __ARGS((void)); |
| ! static int put_in_typebuf __ARGS((char_u *s, int colon)); |
| static void stuffescaped __ARGS((char_u *arg, int literally)); |
| #ifdef FEAT_MBYTE |
| static void mb_adjust_opend __ARGS((oparg_T *oap)); |
| --- 95,102 ---- |
| static void block_insert __ARGS((oparg_T *oap, char_u *s, int b_insert, struct block_def*bdp)); |
| #endif |
| static int stuff_yank __ARGS((int, char_u *)); |
| ! static void put_reedit_in_typebuf __ARGS((int silent)); |
| ! static int put_in_typebuf __ARGS((char_u *s, int colon, int silent)); |
| static void stuffescaped __ARGS((char_u *arg, int literally)); |
| #ifdef FEAT_MBYTE |
| static void mb_adjust_opend __ARGS((oparg_T *oap)); |
| |
| *** 1120,1129 **** |
| * return FAIL for failure, OK otherwise |
| */ |
| int |
| ! do_execreg(regname, colon, addcr) |
| int regname; |
| int colon; /* insert ':' before each line */ |
| int addcr; /* always add '\n' to end of line */ |
| { |
| static int lastc = NUL; |
| long i; |
| --- 1120,1130 ---- |
| * return FAIL for failure, OK otherwise |
| */ |
| int |
| ! do_execreg(regname, colon, addcr, silent) |
| int regname; |
| int colon; /* insert ':' before each line */ |
| int addcr; /* always add '\n' to end of line */ |
| + int silent; /* set "silent" flag in typeahead buffer */ |
| { |
| static int lastc = NUL; |
| long i; |
| |
| *** 1173,1181 **** |
| /* When in Visual mode "'<,'>" will be prepended to the command. |
| * Remove it when it's already there. */ |
| if (VIsual_active && STRNCMP(p, "'<,'>", 5) == 0) |
| ! retval = put_in_typebuf(p + 5, TRUE); |
| else |
| ! retval = put_in_typebuf(p, TRUE); |
| } |
| vim_free(p); |
| } |
| --- 1174,1182 ---- |
| /* When in Visual mode "'<,'>" will be prepended to the command. |
| * Remove it when it's already there. */ |
| if (VIsual_active && STRNCMP(p, "'<,'>", 5) == 0) |
| ! retval = put_in_typebuf(p + 5, TRUE, silent); |
| else |
| ! retval = put_in_typebuf(p, TRUE, silent); |
| } |
| vim_free(p); |
| } |
| |
| *** 1186,1192 **** |
| p = get_expr_line(); |
| if (p == NULL) |
| return FAIL; |
| ! retval = put_in_typebuf(p, colon); |
| vim_free(p); |
| } |
| #endif |
| --- 1187,1193 ---- |
| p = get_expr_line(); |
| if (p == NULL) |
| return FAIL; |
| ! retval = put_in_typebuf(p, colon, silent); |
| vim_free(p); |
| } |
| #endif |
| |
| *** 1198,1204 **** |
| EMSG(_(e_noinstext)); |
| return FAIL; |
| } |
| ! retval = put_in_typebuf(p, colon); |
| vim_free(p); |
| } |
| else |
| --- 1199,1205 ---- |
| EMSG(_(e_noinstext)); |
| return FAIL; |
| } |
| ! retval = put_in_typebuf(p, colon, silent); |
| vim_free(p); |
| } |
| else |
| |
| *** 1213,1232 **** |
| /* |
| * Insert lines into typeahead buffer, from last one to first one. |
| */ |
| ! put_reedit_in_typebuf(); |
| for (i = y_current->y_size; --i >= 0; ) |
| { |
| /* insert NL between lines and after last line if type is MLINE */ |
| if (y_current->y_type == MLINE || i < y_current->y_size - 1 |
| || addcr) |
| { |
| ! if (ins_typebuf((char_u *)"\n", remap, 0, TRUE, FALSE) == FAIL) |
| return FAIL; |
| } |
| ! if (ins_typebuf(y_current->y_array[i], remap, 0, TRUE, FALSE) |
| == FAIL) |
| return FAIL; |
| ! if (colon && ins_typebuf((char_u *)":", remap, 0, TRUE, FALSE) |
| == FAIL) |
| return FAIL; |
| } |
| --- 1214,1233 ---- |
| /* |
| * Insert lines into typeahead buffer, from last one to first one. |
| */ |
| ! put_reedit_in_typebuf(silent); |
| for (i = y_current->y_size; --i >= 0; ) |
| { |
| /* insert NL between lines and after last line if type is MLINE */ |
| if (y_current->y_type == MLINE || i < y_current->y_size - 1 |
| || addcr) |
| { |
| ! if (ins_typebuf((char_u *)"\n", remap, 0, TRUE, silent) == FAIL) |
| return FAIL; |
| } |
| ! if (ins_typebuf(y_current->y_array[i], remap, 0, TRUE, silent) |
| == FAIL) |
| return FAIL; |
| ! if (colon && ins_typebuf((char_u *)":", remap, 0, TRUE, silent) |
| == FAIL) |
| return FAIL; |
| } |
| |
| *** 1240,1246 **** |
| * used only after other typeahead has been processed. |
| */ |
| static void |
| ! put_reedit_in_typebuf() |
| { |
| char_u buf[3]; |
| |
| --- 1241,1248 ---- |
| * used only after other typeahead has been processed. |
| */ |
| static void |
| ! put_reedit_in_typebuf(silent) |
| ! int silent; |
| { |
| char_u buf[3]; |
| |
| |
| *** 1257,1281 **** |
| buf[0] = restart_edit == 'I' ? 'i' : restart_edit; |
| buf[1] = NUL; |
| } |
| ! if (ins_typebuf(buf, REMAP_NONE, 0, TRUE, FALSE) == OK) |
| restart_edit = NUL; |
| } |
| } |
| |
| static int |
| ! put_in_typebuf(s, colon) |
| char_u *s; |
| int colon; /* add ':' before the line */ |
| { |
| int retval = OK; |
| |
| ! put_reedit_in_typebuf(); |
| if (colon) |
| ! retval = ins_typebuf((char_u *)"\n", REMAP_YES, 0, TRUE, FALSE); |
| if (retval == OK) |
| ! retval = ins_typebuf(s, REMAP_YES, 0, TRUE, FALSE); |
| if (colon && retval == OK) |
| ! retval = ins_typebuf((char_u *)":", REMAP_YES, 0, TRUE, FALSE); |
| return retval; |
| } |
| |
| --- 1259,1284 ---- |
| buf[0] = restart_edit == 'I' ? 'i' : restart_edit; |
| buf[1] = NUL; |
| } |
| ! if (ins_typebuf(buf, REMAP_NONE, 0, TRUE, silent) == OK) |
| restart_edit = NUL; |
| } |
| } |
| |
| static int |
| ! put_in_typebuf(s, colon, silent) |
| char_u *s; |
| int colon; /* add ':' before the line */ |
| + int silent; |
| { |
| int retval = OK; |
| |
| ! put_reedit_in_typebuf(silent); |
| if (colon) |
| ! retval = ins_typebuf((char_u *)"\n", REMAP_YES, 0, TRUE, silent); |
| if (retval == OK) |
| ! retval = ins_typebuf(s, REMAP_YES, 0, TRUE, silent); |
| if (colon && retval == OK) |
| ! retval = ins_typebuf((char_u *)":", REMAP_YES, 0, TRUE, silent); |
| return retval; |
| } |
| |
| |
| |
| |
| *** 17,23 **** |
| extern void put_register __ARGS((int name, void *reg)); |
| extern int yank_register_mline __ARGS((int regname)); |
| extern int do_record __ARGS((int c)); |
| ! extern int do_execreg __ARGS((int regname, int colon, int addcr)); |
| extern int insert_reg __ARGS((int regname, int literally)); |
| extern int get_spec_reg __ARGS((int regname, char_u **argp, int *allocated, int errmsg)); |
| extern int cmdline_paste_reg __ARGS((int regname, int literally, int remcr)); |
| --- 17,23 ---- |
| extern void put_register __ARGS((int name, void *reg)); |
| extern int yank_register_mline __ARGS((int regname)); |
| extern int do_record __ARGS((int c)); |
| ! extern int do_execreg __ARGS((int regname, int colon, int addcr, int silent)); |
| extern int insert_reg __ARGS((int regname, int literally)); |
| extern int get_spec_reg __ARGS((int regname, char_u **argp, int *allocated, int errmsg)); |
| extern int cmdline_paste_reg __ARGS((int regname, int literally, int remcr)); |
| |
| |
| |
| *** 668,669 **** |
| --- 668,671 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 160, |
| /**/ |
| |
| -- |
| hundred-and-one symptoms of being an internet addict: |
| 172. You join listservers just for the extra e-mail. |
| |
| /// 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 /// |