summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0266
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0266')
-rw-r--r--data/vim/patches/8.1.0266436
1 files changed, 0 insertions, 436 deletions
diff --git a/data/vim/patches/8.1.0266 b/data/vim/patches/8.1.0266
deleted file mode 100644
index 5ba3a1286..000000000
--- a/data/vim/patches/8.1.0266
+++ /dev/null
@@ -1,436 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 8.1.0266
-Fcc: outbox
-From: Bram Moolenaar <Bram@moolenaar.net>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-------------
-
-Patch 8.1.0266
-Problem: Parsing Ex address range is not a separate function.
-Solution: Refactor do_one_cmd() to separate address parsing.
-Files: src/ex_docmd.c, src/proto/ex_docmd.pro
-
-
-*** ../vim-8.1.0265/src/ex_docmd.c 2018-08-07 22:30:26.670240840 +0200
---- src/ex_docmd.c 2018-08-10 23:08:38.139696671 +0200
-***************
-*** 1719,1725 ****
- cmdmod_T save_cmdmod;
- int ni; /* set when Not Implemented */
- char_u *cmd;
-- int address_count = 1;
-
- vim_memset(&ea, 0, sizeof(ea));
- ea.line1 = 1;
---- 1719,1724 ----
-***************
-*** 2045,2212 ****
- get_wincmd_addr_type(skipwhite(p), &ea);
- }
-
-- /* repeat for all ',' or ';' separated addresses */
- ea.cmd = cmd;
-! for (;;)
-! {
-! ea.line1 = ea.line2;
-! switch (ea.addr_type)
-! {
-! case ADDR_LINES:
-! /* default is current line number */
-! ea.line2 = curwin->w_cursor.lnum;
-! break;
-! case ADDR_WINDOWS:
-! ea.line2 = CURRENT_WIN_NR;
-! break;
-! case ADDR_ARGUMENTS:
-! ea.line2 = curwin->w_arg_idx + 1;
-! if (ea.line2 > ARGCOUNT)
-! ea.line2 = ARGCOUNT;
-! break;
-! case ADDR_LOADED_BUFFERS:
-! case ADDR_BUFFERS:
-! ea.line2 = curbuf->b_fnum;
-! break;
-! case ADDR_TABS:
-! ea.line2 = CURRENT_TAB_NR;
-! break;
-! case ADDR_TABS_RELATIVE:
-! ea.line2 = 1;
-! break;
-! #ifdef FEAT_QUICKFIX
-! case ADDR_QUICKFIX:
-! ea.line2 = qf_get_cur_valid_idx(&ea);
-! break;
-! #endif
-! }
-! ea.cmd = skipwhite(ea.cmd);
-! lnum = get_address(&ea, &ea.cmd, ea.addr_type, ea.skip,
-! ea.addr_count == 0, address_count++);
-! if (ea.cmd == NULL) /* error detected */
-! goto doend;
-! if (lnum == MAXLNUM)
-! {
-! if (*ea.cmd == '%') /* '%' - all lines */
-! {
-! ++ea.cmd;
-! switch (ea.addr_type)
-! {
-! case ADDR_LINES:
-! ea.line1 = 1;
-! ea.line2 = curbuf->b_ml.ml_line_count;
-! break;
-! case ADDR_LOADED_BUFFERS:
-! {
-! buf_T *buf = firstbuf;
-!
-! while (buf->b_next != NULL
-! && buf->b_ml.ml_mfp == NULL)
-! buf = buf->b_next;
-! ea.line1 = buf->b_fnum;
-! buf = lastbuf;
-! while (buf->b_prev != NULL
-! && buf->b_ml.ml_mfp == NULL)
-! buf = buf->b_prev;
-! ea.line2 = buf->b_fnum;
-! break;
-! }
-! case ADDR_BUFFERS:
-! ea.line1 = firstbuf->b_fnum;
-! ea.line2 = lastbuf->b_fnum;
-! break;
-! case ADDR_WINDOWS:
-! case ADDR_TABS:
-! if (IS_USER_CMDIDX(ea.cmdidx))
-! {
-! ea.line1 = 1;
-! ea.line2 = ea.addr_type == ADDR_WINDOWS
-! ? LAST_WIN_NR : LAST_TAB_NR;
-! }
-! else
-! {
-! /* there is no Vim command which uses '%' and
-! * ADDR_WINDOWS or ADDR_TABS */
-! errormsg = (char_u *)_(e_invrange);
-! goto doend;
-! }
-! break;
-! case ADDR_TABS_RELATIVE:
-! errormsg = (char_u *)_(e_invrange);
-! goto doend;
-! break;
-! case ADDR_ARGUMENTS:
-! if (ARGCOUNT == 0)
-! ea.line1 = ea.line2 = 0;
-! else
-! {
-! ea.line1 = 1;
-! ea.line2 = ARGCOUNT;
-! }
-! break;
-! #ifdef FEAT_QUICKFIX
-! case ADDR_QUICKFIX:
-! ea.line1 = 1;
-! ea.line2 = qf_get_size(&ea);
-! if (ea.line2 == 0)
-! ea.line2 = 1;
-! break;
-! #endif
-! }
-! ++ea.addr_count;
-! }
-! /* '*' - visual area */
-! else if (*ea.cmd == '*' && vim_strchr(p_cpo, CPO_STAR) == NULL)
-! {
-! pos_T *fp;
-!
-! if (ea.addr_type != ADDR_LINES)
-! {
-! errormsg = (char_u *)_(e_invrange);
-! goto doend;
-! }
-!
-! ++ea.cmd;
-! if (!ea.skip)
-! {
-! fp = getmark('<', FALSE);
-! if (check_mark(fp) == FAIL)
-! goto doend;
-! ea.line1 = fp->lnum;
-! fp = getmark('>', FALSE);
-! if (check_mark(fp) == FAIL)
-! goto doend;
-! ea.line2 = fp->lnum;
-! ++ea.addr_count;
-! }
-! }
-! }
-! else
-! ea.line2 = lnum;
-! ea.addr_count++;
-!
-! if (*ea.cmd == ';')
-! {
-! if (!ea.skip)
-! {
-! curwin->w_cursor.lnum = ea.line2;
-! /* don't leave the cursor on an illegal line or column */
-! check_cursor();
-! }
-! }
-! else if (*ea.cmd != ',')
-! break;
-! ++ea.cmd;
-! }
-!
-! /* One address given: set start and end lines */
-! if (ea.addr_count == 1)
-! {
-! ea.line1 = ea.line2;
-! /* ... but only implicit: really no address given */
-! if (lnum == MAXLNUM)
-! ea.addr_count = 0;
-! }
-
- /*
- * 5. Parse the command.
---- 2044,2052 ----
- get_wincmd_addr_type(skipwhite(p), &ea);
- }
-
- ea.cmd = cmd;
-! if (parse_cmd_address(&ea, &errormsg) == FAIL)
-! goto doend;
-
- /*
- * 5. Parse the command.
-***************
-*** 2989,2994 ****
---- 2829,3007 ----
- #endif
-
- /*
-+ * Parse the address range, if any, in "eap".
-+ * Return FAIL and set "errormsg" or return OK.
-+ */
-+ int
-+ parse_cmd_address(exarg_T *eap, char_u **errormsg)
-+ {
-+ int address_count = 1;
-+ linenr_T lnum;
-+
-+ // Repeat for all ',' or ';' separated addresses.
-+ for (;;)
-+ {
-+ eap->line1 = eap->line2;
-+ switch (eap->addr_type)
-+ {
-+ case ADDR_LINES:
-+ // default is current line number
-+ eap->line2 = curwin->w_cursor.lnum;
-+ break;
-+ case ADDR_WINDOWS:
-+ eap->line2 = CURRENT_WIN_NR;
-+ break;
-+ case ADDR_ARGUMENTS:
-+ eap->line2 = curwin->w_arg_idx + 1;
-+ if (eap->line2 > ARGCOUNT)
-+ eap->line2 = ARGCOUNT;
-+ break;
-+ case ADDR_LOADED_BUFFERS:
-+ case ADDR_BUFFERS:
-+ eap->line2 = curbuf->b_fnum;
-+ break;
-+ case ADDR_TABS:
-+ eap->line2 = CURRENT_TAB_NR;
-+ break;
-+ case ADDR_TABS_RELATIVE:
-+ eap->line2 = 1;
-+ break;
-+ #ifdef FEAT_QUICKFIX
-+ case ADDR_QUICKFIX:
-+ eap->line2 = qf_get_cur_valid_idx(eap);
-+ break;
-+ #endif
-+ }
-+ eap->cmd = skipwhite(eap->cmd);
-+ lnum = get_address(eap, &eap->cmd, eap->addr_type, eap->skip,
-+ eap->addr_count == 0, address_count++);
-+ if (eap->cmd == NULL) // error detected
-+ return FAIL;
-+ if (lnum == MAXLNUM)
-+ {
-+ if (*eap->cmd == '%') // '%' - all lines
-+ {
-+ ++eap->cmd;
-+ switch (eap->addr_type)
-+ {
-+ case ADDR_LINES:
-+ eap->line1 = 1;
-+ eap->line2 = curbuf->b_ml.ml_line_count;
-+ break;
-+ case ADDR_LOADED_BUFFERS:
-+ {
-+ buf_T *buf = firstbuf;
-+
-+ while (buf->b_next != NULL
-+ && buf->b_ml.ml_mfp == NULL)
-+ buf = buf->b_next;
-+ eap->line1 = buf->b_fnum;
-+ buf = lastbuf;
-+ while (buf->b_prev != NULL
-+ && buf->b_ml.ml_mfp == NULL)
-+ buf = buf->b_prev;
-+ eap->line2 = buf->b_fnum;
-+ break;
-+ }
-+ case ADDR_BUFFERS:
-+ eap->line1 = firstbuf->b_fnum;
-+ eap->line2 = lastbuf->b_fnum;
-+ break;
-+ case ADDR_WINDOWS:
-+ case ADDR_TABS:
-+ if (IS_USER_CMDIDX(eap->cmdidx))
-+ {
-+ eap->line1 = 1;
-+ eap->line2 = eap->addr_type == ADDR_WINDOWS
-+ ? LAST_WIN_NR : LAST_TAB_NR;
-+ }
-+ else
-+ {
-+ // there is no Vim command which uses '%' and
-+ // ADDR_WINDOWS or ADDR_TABS
-+ *errormsg = (char_u *)_(e_invrange);
-+ return FAIL;
-+ }
-+ break;
-+ case ADDR_TABS_RELATIVE:
-+ *errormsg = (char_u *)_(e_invrange);
-+ return FAIL;
-+ case ADDR_ARGUMENTS:
-+ if (ARGCOUNT == 0)
-+ eap->line1 = eap->line2 = 0;
-+ else
-+ {
-+ eap->line1 = 1;
-+ eap->line2 = ARGCOUNT;
-+ }
-+ break;
-+ #ifdef FEAT_QUICKFIX
-+ case ADDR_QUICKFIX:
-+ eap->line1 = 1;
-+ eap->line2 = qf_get_size(eap);
-+ if (eap->line2 == 0)
-+ eap->line2 = 1;
-+ break;
-+ #endif
-+ }
-+ ++eap->addr_count;
-+ }
-+ else if (*eap->cmd == '*' && vim_strchr(p_cpo, CPO_STAR) == NULL)
-+ {
-+ pos_T *fp;
-+
-+ // '*' - visual area
-+ if (eap->addr_type != ADDR_LINES)
-+ {
-+ *errormsg = (char_u *)_(e_invrange);
-+ return FAIL;
-+ }
-+
-+ ++eap->cmd;
-+ if (!eap->skip)
-+ {
-+ fp = getmark('<', FALSE);
-+ if (check_mark(fp) == FAIL)
-+ return FAIL;
-+ eap->line1 = fp->lnum;
-+ fp = getmark('>', FALSE);
-+ if (check_mark(fp) == FAIL)
-+ return FAIL;
-+ eap->line2 = fp->lnum;
-+ ++eap->addr_count;
-+ }
-+ }
-+ }
-+ else
-+ eap->line2 = lnum;
-+ eap->addr_count++;
-+
-+ if (*eap->cmd == ';')
-+ {
-+ if (!eap->skip)
-+ {
-+ curwin->w_cursor.lnum = eap->line2;
-+ // don't leave the cursor on an illegal line or column
-+ check_cursor();
-+ }
-+ }
-+ else if (*eap->cmd != ',')
-+ break;
-+ ++eap->cmd;
-+ }
-+
-+ // One address given: set start and end lines.
-+ if (eap->addr_count == 1)
-+ {
-+ eap->line1 = eap->line2;
-+ // ... but only implicit: really no address given
-+ if (lnum == MAXLNUM)
-+ eap->addr_count = 0;
-+ }
-+ return OK;
-+ }
-+
-+ /*
- * Check for an Ex command with optional tail.
- * If there is a match advance "pp" to the argument and return TRUE.
- */
-***************
-*** 4292,4298 ****
- }
-
- /*
-! * skip a range specifier of the form: addr [,addr] [;addr] ..
- *
- * Backslashed delimiters after / or ? will be skipped, and commands will
- * not be expanded between /'s and ?'s or after "'".
---- 4305,4311 ----
- }
-
- /*
-! * Skip a range specifier of the form: addr [,addr] [;addr] ..
- *
- * Backslashed delimiters after / or ? will be skipped, and commands will
- * not be expanded between /'s and ?'s or after "'".
-*** ../vim-8.1.0265/src/proto/ex_docmd.pro 2018-07-29 17:35:19.493750319 +0200
---- src/proto/ex_docmd.pro 2018-08-10 23:08:41.983672969 +0200
-***************
-*** 4,9 ****
---- 4,10 ----
- int do_cmdline(char_u *cmdline, char_u *(*fgetline)(int, void *, int), void *cookie, int flags);
- int getline_equal(char_u *(*fgetline)(int, void *, int), void *cookie, char_u *(*func)(int, void *, int));
- void *getline_cookie(char_u *(*fgetline)(int, void *, int), void *cookie);
-+ int parse_cmd_address(exarg_T *eap, char_u **errormsg);
- int checkforcmd(char_u **pp, char *cmd, int len);
- int modifier_len(char_u *cmd);
- int cmd_exists(char_u *name);
-*** ../vim-8.1.0265/src/version.c 2018-08-10 22:07:28.821903829 +0200
---- src/version.c 2018-08-10 22:39:25.770183225 +0200
-***************
-*** 796,797 ****
---- 796,799 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 266,
- /**/
-
---
-Permission is granted to read this message out aloud on Kings Cross Road,
-London, under the condition that the orator is properly dressed.
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
-/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
-\\\ an exciting new programming language -- http://www.Zimbu.org ///
- \\\ help me help AIDS victims -- http://ICCF-Holland.org ///