| To: vim-dev@vim.org |
| Subject: Patch 7.1.248 |
| 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.1.248 |
| Problem: Can't set the '" mark. Can't know if setpos() was successful. |
| Solution: Allow setting the '" mark with setpos(). Have setpos() return a |
| value indicating success/failure. |
| Files: runtime/doc/eval.txt, src/eval.c, src/mark.c |
| |
| |
| |
| |
| |
| *** 1,4 **** |
| ! *eval.txt* For Vim version 7.1. Last change: 2008 Jan 11 |
| |
| |
| VIM REFERENCE MANUAL by Bram Moolenaar |
| --- 1,4 ---- |
| ! *eval.txt* For Vim version 7.1. Last change: 2008 Feb 13 |
| |
| |
| VIM REFERENCE MANUAL by Bram Moolenaar |
| |
| *** 4523,4528 **** |
| --- 4528,4536 ---- |
| character. E.g., a position within a <Tab> or after the last |
| character. |
| |
| + Returns 0 when the position could be set, -1 otherwise. |
| + An error message is given if {expr} is invalid. |
| + |
| Also see |getpos()| |
| |
| This does not restore the preferred column for moving |
| |
| |
| |
| *** 14776,14799 **** |
| int fnum; |
| char_u *name; |
| |
| name = get_tv_string_chk(argvars); |
| if (name != NULL) |
| { |
| if (list2fpos(&argvars[1], &pos, &fnum) == OK) |
| { |
| --pos.col; |
| ! if (name[0] == '.') /* cursor */ |
| { |
| if (fnum == curbuf->b_fnum) |
| { |
| curwin->w_cursor = pos; |
| check_cursor(); |
| } |
| else |
| EMSG(_(e_invarg)); |
| } |
| ! else if (name[0] == '\'') /* mark */ |
| ! (void)setmark_pos(name[1], &pos, fnum); |
| else |
| EMSG(_(e_invarg)); |
| } |
| --- 14778,14808 ---- |
| int fnum; |
| char_u *name; |
| |
| + rettv->vval.v_number = -1; |
| name = get_tv_string_chk(argvars); |
| if (name != NULL) |
| { |
| if (list2fpos(&argvars[1], &pos, &fnum) == OK) |
| { |
| --pos.col; |
| ! if (name[0] == '.' && name[1] == NUL) |
| { |
| + /* set cursor */ |
| if (fnum == curbuf->b_fnum) |
| { |
| curwin->w_cursor = pos; |
| check_cursor(); |
| + rettv->vval.v_number = 0; |
| } |
| else |
| EMSG(_(e_invarg)); |
| } |
| ! else if (name[0] == '\'' && name[1] != NUL && name[2] == NUL) |
| ! { |
| ! /* set mark */ |
| ! if (setmark_pos(name[1], &pos, fnum) == OK) |
| ! rettv->vval.v_number = 0; |
| ! } |
| else |
| EMSG(_(e_invarg)); |
| } |
| |
| |
| |
| *** 79,84 **** |
| --- 79,90 ---- |
| return OK; |
| } |
| |
| + if (c == '"') |
| + { |
| + curbuf->b_last_cursor = *pos; |
| + return OK; |
| + } |
| + |
| /* Allow setting '[ and '] for an autocommand that simulates reading a |
| * file. */ |
| if (c == '[') |
| |
| |
| |
| *** 668,669 **** |
| --- 668,671 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 248, |
| /**/ |
| |
| -- |
| "Making it up? Why should I want to make anything up? Life's bad enough |
| as it is without wanting to invent any more of it." |
| -- Marvin, the Paranoid Android in Douglas Adams' |
| "The Hitchhiker's Guide to the Galaxy" |
| |
| /// 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 /// |