# HG changeset patch # User Bram Moolenaar # Date 1304598401 -7200 # Node ID 1bd8af13fb434e4c99bb756052556f4d56cde200 # Parent 08c36bef2004b0a961f72598085ce30f2627102a updated for version 7.3.171 Problem: When the clipboard isn't supported: ":yank*" gives a confusing error message. Solution: Specifically mention that the register name is invalid. (Jean-Rene David) diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt --- a/runtime/doc/change.txt +++ b/runtime/doc/change.txt @@ -917,8 +917,10 @@ 5. Copying and moving text *copy-move {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 --- 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++; +#ifndef FEAT_CLIPBOARD + /* check these explicitly for a more specific error message */ + if (*ea.arg == '*' || *ea.arg == '+') + { + errormsg = (char_u *)_(e_invalidreg); + goto doend; + } +#endif + 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); + /* 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 --- a/src/globals.h +++ b/src/globals.h @@ -1561,6 +1561,9 @@ EXTERN char_u e_bufloaded[] INIT(= N_("E (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 --- 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,