vim-patch:7.4.925

Problem:    User may yank or put using the register being recorded in.
Solution:   Add the recording register in the message. (Christian Brabandt,
            closes vim/vim#470)

a0ed84a268
This commit is contained in:
watiko
2016-02-15 22:40:55 +09:00
parent 498eb02049
commit 4612821946
6 changed files with 39 additions and 23 deletions

View File

@@ -5538,6 +5538,7 @@ A jump table for the options with a short description can be found at |Q_op|.
c don't give |ins-completion-menu| messages. For example, c don't give |ins-completion-menu| messages. For example,
"-- XXX completion (YYY)", "match 1 of 2", "The only match", "-- XXX completion (YYY)", "match 1 of 2", "The only match",
"Pattern not found", "Back at original", etc. "Pattern not found", "Back at original", etc.
q use "recording" instead of "recording @a"
This gives you the opportunity to avoid that a change between buffers This gives you the opportunity to avoid that a change between buffers
requires you to hit <Enter>, but still gives as useful a message as requires you to hit <Enter>, but still gives as useful a message as

View File

@@ -109,6 +109,12 @@ q{0-9a-zA-Z"} Record typed characters into register {0-9a-zA-Z"}
while executing a register, and it doesn't work inside while executing a register, and it doesn't work inside
a mapping and |:normal|. a mapping and |:normal|.
Note: If the register being used for recording is also
used for |y| and |p| the result is most likely not
what is expected, because the put will paste the
recorded macro and the yank will overwrite the
recorded macro.
q Stops recording. q Stops recording.
Implementation note: The 'q' that stops recording is Implementation note: The 'q' that stops recording is
not stored in the register, unless it was the result not stored in the register, unless it was the result

View File

@@ -835,12 +835,13 @@ int do_record(int c)
yankreg_T *old_y_previous; yankreg_T *old_y_previous;
int retval; int retval;
if (Recording == FALSE) { /* start recording */ if (Recording == false) {
/* registers 0-9, a-z and " are allowed */ // start recording
if (c < 0 || (!ASCII_ISALNUM(c) && c != '"')) // registers 0-9, a-z and " are allowed
if (c < 0 || (!ASCII_ISALNUM(c) && c != '"')) {
retval = FAIL; retval = FAIL;
else { } else {
Recording = TRUE; Recording = c;
showmode(); showmode();
regname = c; regname = c;
retval = OK; retval = OK;

View File

@@ -170,7 +170,8 @@
#define SHM_ATTENTION 'A' /* no ATTENTION messages */ #define SHM_ATTENTION 'A' /* no ATTENTION messages */
#define SHM_INTRO 'I' /* intro messages */ #define SHM_INTRO 'I' /* intro messages */
#define SHM_COMPLETIONMENU 'c' // completion menu messages #define SHM_COMPLETIONMENU 'c' // completion menu messages
#define SHM_ALL "rmfixlnwaWtToOsAIc" /* all possible flags for 'shm' */ #define SHM_RECORDING 'q' ///< short recording message
#define SHM_ALL "rmfixlnwaWtToOsAIcq" ///< all possible flags for 'shm'
/* characters for p_go: */ /* characters for p_go: */
#define GO_ASEL 'a' /* autoselect */ #define GO_ASEL 'a' /* autoselect */

View File

@@ -6760,8 +6760,8 @@ int showmode(void)
if (Recording if (Recording
&& edit_submode == NULL /* otherwise it gets too long */ && edit_submode == NULL /* otherwise it gets too long */
) { ) {
MSG_PUTS_ATTR(_("recording"), attr); recording_mode(attr);
need_clear = TRUE; need_clear = true;
} }
mode_displayed = TRUE; mode_displayed = TRUE;
@@ -6800,26 +6800,33 @@ static void msg_pos_mode(void)
msg_row = Rows - 1; msg_row = Rows - 1;
} }
/* /// Delete mode message. Used when ESC is typed which is expected to end
* Delete mode message. Used when ESC is typed which is expected to end /// Insert mode (but Insert mode didn't end yet!).
* Insert mode (but Insert mode didn't end yet!). /// Caller should check "mode_displayed".
* Caller should check "mode_displayed". void unshowmode(bool force)
*/
void unshowmode(int force)
{ {
/* // Don't delete it right now, when not redrawing or inside a mapping.
* Don't delete it right now, when not redrawing or inside a mapping. if (!redrawing() || (!force && char_avail() && !KeyTyped)) {
*/ redraw_cmdline = true; // delete mode later
if (!redrawing() || (!force && char_avail() && !KeyTyped)) } else {
redraw_cmdline = TRUE; /* delete mode later */
else {
msg_pos_mode(); msg_pos_mode();
if (Recording) if (Recording) {
MSG_PUTS_ATTR(_("recording"), hl_attr(HLF_CM)); recording_mode(hl_attr(HLF_CM));
}
msg_clr_eos(); msg_clr_eos();
} }
} }
static void recording_mode(int attr)
{
MSG_PUTS_ATTR(_("recording"), attr);
if (!shortmess(SHM_RECORDING)) {
char_u s[4];
vim_snprintf((char *)s, ARRAY_SIZE(s), " @%c", Recording);
MSG_PUTS_ATTR(s, attr);
}
}
/* /*
* Draw the tab pages line at the top of the Vim window. * Draw the tab pages line at the top of the Vim window.
*/ */

View File

@@ -363,7 +363,7 @@ static int included_patches[] = {
// 928 NA // 928 NA
// 927 NA // 927 NA
// 926, // 926,
// 925, 925,
// 924 NA // 924 NA
// 923 NA // 923 NA
// 922, // 922,