summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/doc/change.txt6
-rw-r--r--src/ex_docmd.c36
-rw-r--r--src/globals.h3
-rw-r--r--src/version.c2
4 files changed, 34 insertions, 13 deletions
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index fe518d150..6e5311145 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -917,8 +917,10 @@ inside of strings can change! Also see 'softtabstop' option. >
{Visual}["x]Y Yank the highlighted lines [into register x] (for
{Visual} see |Visual-mode|). {not in Vi}
- *:y* *:yank*
-:[range]y[ank] [x] Yank [range] lines [into register x].
+ *:y* *:yank* *E850*
+:[range]y[ank] [x] Yank [range] lines [into register x]. Yanking to the
+ "* or "+ registers is possible only in GUI versions or
+ when the |+xterm_clipboard| feature is included.
:[range]y[ank] [x] {count}
Yank {count} lines, starting with last line number
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index b67c00be5..d90e96442 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -2424,25 +2424,39 @@ do_one_cmd(cmdlinep, sourcing,
if ( (ea.argt & REGSTR)
&& *ea.arg != NUL
#ifdef FEAT_USR_CMDS
- && valid_yank_reg(*ea.arg, (ea.cmdidx != CMD_put
- && USER_CMDIDX(ea.cmdidx)))
/* Do not allow register = for user commands */
&& (!USER_CMDIDX(ea.cmdidx) || *ea.arg != '=')
-#else
- && valid_yank_reg(*ea.arg, ea.cmdidx != CMD_put)
#endif
&& !((ea.argt & COUNT) && VIM_ISDIGIT(*ea.arg)))
{
- ea.regname = *ea.arg++;
-#ifdef FEAT_EVAL
- /* for '=' register: accept the rest of the line as an expression */
- if (ea.arg[-1] == '=' && ea.arg[0] != NUL)
+#ifndef FEAT_CLIPBOARD
+ /* check these explicitly for a more specific error message */
+ if (*ea.arg == '*' || *ea.arg == '+')
{
- set_expr_line(vim_strsave(ea.arg));
- ea.arg += STRLEN(ea.arg);
+ errormsg = (char_u *)_(e_invalidreg);
+ goto doend;
}
#endif
- ea.arg = skipwhite(ea.arg);
+ if (
+#ifdef FEAT_USR_CMDS
+ valid_yank_reg(*ea.arg, (ea.cmdidx != CMD_put
+ && USER_CMDIDX(ea.cmdidx)))
+#else
+ valid_yank_reg(*ea.arg, ea.cmdidx != CMD_put)
+#endif
+ )
+ {
+ ea.regname = *ea.arg++;
+#ifdef FEAT_EVAL
+ /* for '=' register: accept the rest of the line as an expression */
+ if (ea.arg[-1] == '=' && ea.arg[0] != NUL)
+ {
+ set_expr_line(vim_strsave(ea.arg));
+ ea.arg += STRLEN(ea.arg);
+ }
+#endif
+ ea.arg = skipwhite(ea.arg);
+ }
}
/*
diff --git a/src/globals.h b/src/globals.h
index 3685fc732..4b5544686 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1561,6 +1561,9 @@ EXTERN char_u e_bufloaded[] INIT(= N_("E139: File is loaded in another buffer"))
(defined(FEAT_INS_EXPAND) && defined(FEAT_COMPL_FUNC))
EXTERN char_u e_notset[] INIT(= N_("E764: Option '%s' is not set"));
#endif
+#ifndef FEAT_CLIPBOARD
+EXTERN char_u e_invalidreg[] INIT(= N_("E850: Invalid register name"));
+#endif
#ifdef MACOS_X_UNIX
EXTERN short disallow_gui INIT(= FALSE);
diff --git a/src/version.c b/src/version.c
index 51e2cf972..b99456a53 100644
--- 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 */
/**/
+ 171,
+/**/
170,
/**/
169,